我对vim / gvim很新。这是我第一次尝试修改〜/ .vimrc文件。 我试图将F11映射到多个命令。 我正在尝试的是
inoremap jj <ESC>
map <F11> h e a , jj && l && x
虽然手动输入h e a , jj l x
对我有用,但使用F11
键却不行。
我想要实现的是 -
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.
我不明白我的映射有什么问题。 请帮帮我。
答案 0 :(得分:4)
首先,让我们构建一个适当的宏
表示
- 到达当前单词的末尾
醇>
e
- 追加','
醇>
ea,<Esc>
- 向右移动一个地方......
醇>
ea,<Esc>l
...并删除','和下一个单词开头之间的空格。
ea,<Esc>lx
其次,让我们在正确的非递归映射的右侧使用它:
nnoremap <F11> ea,<Esc>lx
值得注意的是:
<Space>
是合法的普通模式命令,因此宏中的任何<Space>
都被解释为“将光标向右移动一个单元格”,请参阅:help l
。
&
也是合法的正常模式命令,请参阅:help &
。
在宏中,每个字符都有意义,因此h e a , jj && l && x
被解释为:
您的jj
插入模式映射在普通<Esc>
上提供零值,因此没有理由在任何映射中使用它。
您的映射因此变为非递归映射,因此nmap
变为nnoremap
。