我对 vim/gvim 很陌生。这是我第一次尝试修改 ~/.vimrc 文件。我正在尝试将 F11 映射到多个命令。我正在尝试的是
inoremap jj <ESC>
map <F11> h e a , jj && l && x
Run Code Online (Sandbox Code Playgroud)
虽然手动输入h e a , jj l x对我有用,但使用F11key 不是。我想要实现的是-
1. get to the end of the current word
2. append ','
3. move right one place and delete that space between ',' and the start of next word.
Run Code Online (Sandbox Code Playgroud)
我不明白我的映射有什么问题。请在这里帮助我。
首先,让我们为您的宏构建一个正确的表示
- 到达当前单词的结尾
e
Run Code Online (Sandbox Code Playgroud)
- 附加','
ea,<Esc>
Run Code Online (Sandbox Code Playgroud)
- 向右移动一个地方……
ea,<Esc>l
Run Code Online (Sandbox Code Playgroud)
...并删除“,”和下一个单词开头之间的空格。
ea,<Esc>lx
Run Code Online (Sandbox Code Playgroud)
其次,让我们在适当的非递归映射的右侧部分使用它:
nnoremap <F11> ea,<Esc>lx
Run Code Online (Sandbox Code Playgroud)
值得注意的是:
<Space>是合法的正常模式命令,因此<Space>宏中的任何命令都被解释为“将光标向右移动一个单元格”,请参阅:help l。
&也是合法的正常模式命令,请参阅:help &。
在宏中,每个字符都是有意义的,因此h e a , jj && l && x被解释为:
您的jj插入模式映射在普通映射上提供零值,<Esc>因此没有理由在任何映射中使用它。
因此,您的映射成为非递归映射,因此nmap成为nnoremap.