无法使这些控制键在vim中工作

时间:2019-05-17 09:10:22

标签: vim

我正在查看Ben Frain的部分vimrc文件

https://gist.github.com/benfrain/f09dd39e66fe2da9cf0a

" Allow line movement on wraps with CTRL+usual {{{
vmap <C-j> gj
vmap <C-k> gk
vmap <C-h> g$
vmap <C-6> g^
vmap <C-0> g^
nmap <C-j> gj
nmap <C-k> gk
nmap <C-4> g$
nmap <C-6> g^
nmap <C-0> g^
" }}}

我确实注意到该列表中的一个问题,例如ctrl-k已经执行gk。因此,当它起作用时,并非来自他的映射。

我正在使用macvim

即使我尝试一些简单的事情

~/.vim$ cat vimrc
nmap <C-0> aaaa
~/.vim$ 

~/.vim$ cat vimrc
nmap <C-0> aaaa
vmap <C-0> aaaa
~/.vim$ 

它不起作用,没有将ctrl-0映射到'aaaa'的类型

我尝试使用/usr/local/bin/vim(通过brew cask install macvim安装的macvim)和我尝试过的/usr/bin/vim(预安装的vim)。因此,我使用哪个vim没什么区别。

我想知道可以映射哪些ctrl键。

我听说映射ctrl键是一个坏主意,也许'正在使用许多人,并且最好使用默认为反斜杠的leader键。这样。 map <leader>0 aaaa。可以,但是我仍然很想知道ctrl的映射。

2 个答案:

答案 0 :(得分:3)

Vim不会“看到”所有可用的Ctrl-something组合。 Vim是为Unix终端开发的,这些终端并未向应用程序提供所有的Ctrl键。

要测试ctrl组合是否可映射,请执行以下操作:

打开Vim并进入插入模式。然后按 Ctrl-v ,然后按要映射的Ctrl组合键。如果显示某些内容,则Ctrl组合是可映射的。

示例:

  • 如果先按 Ctrl-v ,再按 Ctrl-k ,则会显示字符^k(通常为浅蓝色)。因此 Ctrl-k 是可映射的。
  • 如果您先按 Ctrl-v ,再按 Ctrl-0 ,则不会显示任何内容。因此 Ctrl-0 不可可映射的。
  • 如果先按 Ctrl-v ,再按 Ctrl-3 ,则会显示字符^[。所以... Ctrl-3 等于 ESC

答案 1 :(得分:0)

此页面提到xmap,vmap和nmap https://vim.fandom.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)

之间的区别
:map <-- (presumably display all maps)

:nmap - Display normal mode maps
:imap - Display insert mode maps
:vmap - Display visual and select mode maps
:smap - Display select mode maps
:xmap - Display visual mode maps
:cmap - Display command-line mode maps
:omap - Display operator pending mode maps

nmap, nnoremap, nunmap          Normal mode
imap, inoremap, iunmap          Insert and Replace mode
vmap, vnoremap, vunmap          Visual and Select mode
xmap, xnoremap, xunmap          Visual mode
smap, snoremap, sunmap          Select mode
cmap, cnoremap, cunmap          Command-line mode
omap, onoremap, ounmap          Operator pending mode

您似乎无法使用ctrl进行数字运算。

nmap用于普通模式,因此要键入aaaa,您需要键入iaaaa才能首先进入插入模式。因此,使用nmap,映射到iaaaa即可输入“ aaaa”。

您可以一直尝试nmap <C-a> iaaaa<C-z>,并从大多数反馈中获得答案。您可以进行map <C-a> aaaa:map <C-a> aaaa