diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-09-14 20:37:57 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-09-14 20:37:57 +0200 |
commit | 69fbc9e1dab176f345719436cd89d854df0a2abd (patch) | |
tree | cb082b52c6e0e9a2bd99db92b83aa7269d90cdaa /runtime | |
parent | 38baa3e63427112d389de5e5942243414d9b1336 (diff) | |
download | vim-69fbc9e1dab176f345719436cd89d854df0a2abd.zip |
patch 8.0.1108: cannot specify mappings for the terminal window
Problem: Cannot specify mappings for the terminal window.
Solution: Add the :tmap command and associated code. (Jacob Askeland,
closes #2073)
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/map.txt | 12 | ||||
-rw-r--r-- | runtime/doc/terminal.txt | 14 |
2 files changed, 23 insertions, 3 deletions
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index f6bcde237..88fb62200 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -55,6 +55,7 @@ modes. :im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap* :lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap* :cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap* +:tm[ap] {lhs} {rhs} |mapmode-t| *:tm* *:tmap* Map the key sequence {lhs} to {rhs} for the modes where the map command applies. The result, including {rhs}, is then further scanned for mappings. This @@ -71,6 +72,7 @@ modes. :ino[remap] {lhs} {rhs} |mapmode-i| *:ino* *:inoremap* :ln[oremap] {lhs} {rhs} |mapmode-l| *:ln* *:lnoremap* :cno[remap] {lhs} {rhs} |mapmode-c| *:cno* *:cnoremap* +:tno[remap] {lhs} {rhs} |mapmode-t| *:tno* *:tnoremap* Map the key sequence {lhs} to {rhs} for the modes where the map command applies. Disallow mapping of {rhs}, to avoid nested and recursive mappings. Often @@ -87,6 +89,7 @@ modes. :iu[nmap] {lhs} |mapmode-i| *:iu* *:iunmap* :lu[nmap] {lhs} |mapmode-l| *:lu* *:lunmap* :cu[nmap] {lhs} |mapmode-c| *:cu* *:cunmap* +:tu[nmap] {lhs} |mapmode-t| *:tu* *:tunmap* Remove the mapping of {lhs} for the modes where the map command applies. The mapping may remain defined for other modes where it applies. @@ -105,6 +108,7 @@ modes. :imapc[lear] |mapmode-i| *:imapc* *:imapclear* :lmapc[lear] |mapmode-l| *:lmapc* *:lmapclear* :cmapc[lear] |mapmode-c| *:cmapc* *:cmapclear* +:tmapc[lear] |mapmode-t| *:tmapc* *:tmapclear* Remove ALL mappings for the modes where the map command applies. {not in Vi} Use the <buffer> argument to remove buffer-local @@ -121,6 +125,7 @@ modes. :im[ap] |mapmode-i| :lm[ap] |mapmode-l| :cm[ap] |mapmode-c| +:tm[ap] |mapmode-t| List all key mappings for the modes where the map command applies. Note that ":map" and ":map!" are used most often, because they include the other modes. @@ -135,6 +140,7 @@ modes. :im[ap] {lhs} |mapmode-i| *:imap_l* :lm[ap] {lhs} |mapmode-l| *:lmap_l* :cm[ap] {lhs} |mapmode-c| *:cmap_l* +:tm[ap] {lhs} |mapmode-t| *:tmap_l* List the key mappings for the key sequences starting with {lhs} in the modes where the map command applies. {not in Vi} @@ -318,6 +324,7 @@ Overview of which map command works in which mode. More details below. :imap :inoremap :iunmap Insert :lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg :cmap :cnoremap :cunmap Command-line +:tmap :tnoremap :tunmap Terminal-Job COMMANDS MODES ~ @@ -358,6 +365,10 @@ Therefore the ":map" and ":map!" commands enter and display mappings for several modes. In Vim you can use the ":nmap", ":vmap", ":omap", ":cmap" and ":imap" commands to enter mappings for each mode separately. + *mapmode-t* +The terminal mappings are used in a terminal window, when typing keys for the +job running in the terminal. See |terminal-typing|. + *omap-info* Operator-pending mappings can be used to define a movement command that can be used with any operator. Simple example: ":omap { w" makes "y{" work like "yw" @@ -418,6 +429,7 @@ When listing mappings the characters in the first two columns are: i Insert l ":lmap" mappings for Insert, Command-line and Lang-Arg c Command-line + t Terminal-Job Just before the {rhs} a special character can appear: * indicates that it is not remappable diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 2c2275cb2..aad8e4a5f 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 13 +*terminal.txt* For Vim version 8.0. Last change: 2017 Sep 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -38,7 +38,7 @@ output from the job, also while editing in another window. Typing ~ - + *terminal-typing* When the keyboard focus is in the terminal window, typed keys will be sent to the job. This uses a pty when possible. You can click outside of the terminal window to move keyboard focus elsewhere. @@ -79,6 +79,10 @@ do. For simple commands this causes a SIGINT to be sent to the job, which would end it. Other commands may ignore the SIGINT or handle the CTRL-C themselves (like Vim does). +To change the keys you type use terminal mode mappings, see |:tmap|. +These are defined like any mapping, but apply only when typing keys that are +sent to the job running in the terminal. + Size and color ~ @@ -221,6 +225,10 @@ mode. Use CTRL-W N (or 'termkey' N) to switch to Terminal-Normal mode. Now the contents of the terminal window is under control of Vim, the job output is suspended. CTRL-\ CTRL-N does the same. + +Terminal-Job mode is where |tmap| mappings are applied. Keys sent by +|term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are. + *E946* In Terminal-Normal mode you can move the cursor around with the usual Vim commands, Visually mark text, yank text, etc. But you cannot change the @@ -301,7 +309,7 @@ inspects the resulting screen state. Functions ~ -term_sendkeys() send keystrokes to a terminal +term_sendkeys() send keystrokes to a terminal (not subject to tmap) term_wait() wait for screen to be updated term_scrape() inspect terminal screen |