Why does mapping the <C-…> key not work?
The only Ctrl-printable-key chords which Vim can reliably detect (because they are defined in the ASCII standard) are the following:
Ctrl-@ 0x00 NUL
Ctrl-A to Ctrl-Z 0x01 to 0x1A
Ctrl-a to Ctrl-z 0x01 to 0x1A
Ctrl-[ 0x1B ESC
Ctrl-\ 0x1C
Ctrl-] 0x1D
Ctrl-^ 0x1E
Ctrl-_ 0x1F
Ctrl-? 0x7F DEL
Most of these, however, already have a function in Vim (and some are aliases of other keys: Ctrl-H and Bsp, Ctrl-I and Tab, Ctrl-M and Enter, Ctrl-[ and Esc, Ctrl-? and Del). The “safest” keys to use in Vim for the {lhs} of a mapping are the F keys, with or without Shift: <F2> to <F12> and <S-F1> to <S-F12>. (Some OSes, including mine, intercept Ctrl-Fn and Alt-Fn, which never reach an application program such as vim or gvim). You can try other combinations of Ctrl + any key, but they may either not work everywhere (e.g. the terminal might not pass that key to Vim, or they might have unintended side effects (e.g. mapping <C-I> means also to map <Tab>). If you are using a recent xterm as terminal, Vim is able to actually distinguish most Ctrl,Alt,Shift (and even distinguish Ctrl-I from Tab, etc) mappings by making use of the modifyOtherKeys feature of xterm. See the xterm documentation: https://invisible-island.net/xterm/modified-keys.html and https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys For terminals that pretend to be xterm, vim will try to enable this feature. You can check, if this feature is enabled in your Vim by typing CTRL-SHIFT-V CTRL-V in insert mode. If the result is a single byte, then the feature is off, when the feature is enabled, Vim will print: <1b>27;5;118~. Note: that your desktop environment or terminal might intercept the key press, to e.g. paste the clipboard If this feature causes problems, you can disable it: let &t_TI = ‘’ let &t_TE = ‘’ It does not take effect immediate, run a shell command after changing those values: :!true
Comments (1)
Pepsh Pepshinsky
Let’s see you to :help viminfo-file-name (option -i) :set viminfofile=NONE