]> granicus.if.org Git - vim/commitdiff
patch 8.1.2194: modifyOtherKeys is not enabled by default v8.1.2194
authorBram Moolenaar <Bram@vim.org>
Sun, 20 Oct 2019 17:53:22 +0000 (19:53 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 20 Oct 2019 17:53:22 +0000 (19:53 +0200)
Problem:    ModifyOtherKeys is not enabled by default.
Solution:   Add t_TI and t_TE to the builtin xterm termcap.

runtime/doc/map.txt
src/term.c
src/version.c

index bdf5e9755403234f389d32a148a6874de919adba..daa1cf2cc7ce87176cf2ce2507b1a434d348bce4 100644 (file)
@@ -20,7 +20,8 @@ manual.
    1.8 Examples                                |map-examples|
    1.9 Using mappings                  |map-typing|
    1.10 Mapping alt-keys               |:map-alt-keys|
-   1.11 Mapping an operator            |:map-operator|
+   1.11 Mapping in modifyOtherKeys mode        |modifyOtherKeys|
+   1.12 Mapping an operator            |:map-operator|
 2. Abbreviations               |abbreviations|
 3. Local mappings and functions        |script-local|
 4. User-defined commands       |user-commands|
@@ -777,6 +778,9 @@ In the GUI Vim handles the Alt key itself, thus mapping keys with ALT should
 always work.  But in a terminal Vim gets a sequence of bytes and has to figure
 out whether ALT was pressed or not.
 
+If the terminal supports the modifyOtherKeys mode and it has been enabled,
+then Vim can recognize more key combinations, see |modifyOtherKeys| below.
+
 By default Vim assumes that pressing the ALT key sets the 8th bit of a typed
 character.  Most decent terminals can work that way, such as xterm, aterm and
 rxvt.  If your <A-k> mappings don't work it might be that the terminal is
@@ -814,7 +818,31 @@ on the terminal; that's a good last resource in case you want to send ESC when
 using other applications but not when inside Vim.
 
 
-1.11 MAPPING AN OPERATOR                               *:map-operator*
+1.11 MAPPING IN modifyOtherKeys mode                   *modifyOtherKeys*
+
+Xterm and a few other terminals can be put in a mode where keys with modifiers
+are sent with a special escape code.  Vim recognizes these codes and can then
+make a difference between CTRL-H and Backspace, even when Backspace sends the
+character 8.  And many more special keys.
+
+For xterm modifyOtherKeys is enabled in the builtin termcap entry.  If this is
+not used you can enable modifyOtherKeys with these lines in your vimrc: >
+      let &t_TI = "\<Esc>[>4;2m"
+      let &t_TE = "\<Esc>[>4;m"
+
+In case the modifyOtherKeys mode causes problems you can disable it: >
+      let &t_TI = ""
+      let &t_TE = ""
+It does not take effect immediately.  To have this work without restarting Vim
+execute a shell command, e.g.: `!ls`
+
+A known side effect effect is that in Insert mode the raw escape sequence is
+inserted after the CTRL-V key.  This can be used to check whether
+modifyOtherKeys is enabled: In Insert mode type CTRL-V CTRL-V, if you get
+one byte then modifyOtherKeys is off, if you get <1b>27;5;118~ then it is on.
+
+
+1.12 MAPPING AN OPERATOR                               *:map-operator*
 
 An operator is used before a {motion} command.  To define your own operator
 you must create mapping that first sets the 'operatorfunc' option and then
index fa4375e4e8bd5c3b0dfaace7cea0db195c353132..afdd482e38aed023f5ca32a2dfe587c6145cb568 100644 (file)
@@ -912,6 +912,8 @@ static struct builtin_term builtin_termcaps[] =
     {(int)KS_TE,       IF_EB("\033[2J\033[?47l\0338",
                                  ESC_STR "[2J" ESC_STR_nc "[?47l" ESC_STR_nc "8")},
 #  endif
+    {(int)KS_CTI,      IF_EB("\033[>4;2m", ESC_STR_nc "[>4;2m")},
+    {(int)KS_CTE,      IF_EB("\033[>4;m", ESC_STR_nc "[>4;m")},
     {(int)KS_CIS,      IF_EB("\033]1;", ESC_STR "]1;")},
     {(int)KS_CIE,      "\007"},
     {(int)KS_TS,       IF_EB("\033]2;", ESC_STR "]2;")},
index 6c8a36b219a53f4ee72306d652f3d5638dec6bed..38696fa45334477ed40a09757cee91fb4616f4d8 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2194,
 /**/
     2193,
 /**/