我想创建两个对我自己有效的映射:
map X ddp
我希望能够一次性删除并粘贴。
map X "_dw
如何删除一个单词而不将其复制到寄存器中。
不过我不想破坏任何现有的、有用的快捷键,所以我想知道能用哪些按键 - 有什么建议吗?我是不是太过小心谨慎了?
vim的帮助文档有一个名为:he map-which-keys的部分
1.7 WHAT KEYS TO MAP *map-which-keys*
If you are going to map something, you will need to choose which key(s) to use
for the {lhs}. You will have to avoid keys that are used for Vim commands,
otherwise you would not be able to use those commands anymore. Here are a few
suggestions:
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>,
<S-F2>, etc. Note that <F1> is already used for the help command.
- Meta-keys (with the ALT key pressed). |:map-alt-keys|
- Use the '_' or ',' character and then any other character. The "_" and ","
commands do exist in Vim (see |_| and |,|), but you probably never use them.
- Use a key that is a synonym for another command. For example: CTRL-P and
CTRL-N. Use an extra character to allow more mappings.
See the file "index" for keys that are not used and thus can be mapped without
losing any builtin function. You can also use ":help {key}^D" to find out if
a key is used for some command. ({key} is the specific key you want to find
out about, ^D is CTRL-D).
<Leader>
来启动它们的键序列;这是一个(通常情况下)未使用的键,可以由用户进行配置。
*<Leader>* *mapleader* 为了定义一个使用 "mapleader" 变量的 mapping,可以使用特殊字符串 "<Leader>"。它会被替换为 "mapleader" 的字符串值。如果 "mapleader" 没有设置或为空,则使用反斜杠代替。例如: :map <Leader>A oanother line<Esc> 作用等同于: :map \A oanother line<Esc> 但是在执行下面的命令后: :let mapleader = "," 它的作用就变成了: :map ,A oanother line<Esc>
请注意,"mapleader" 的值在定义 mapping 时使用。更改 "mapleader" 对已经定义的映射没有影响。
在Vim中,每个ASCII字符(包括大小写)都被用于某种功能。因此,你最终会覆盖某些字符,所以选择不常用的字符进行覆盖。为自己的扩展使用常见的习惯用法可能有所帮助。例如,我使用前导逗号:
map ,w :w!<CR>
map ,e :e #<CR>
imap ,, <ESC>
(对我来说,最后一个特别有用,因为我几乎从不需要在插入模式下连续输入两个逗号,而且不必一直按 Esc 键也很好。)
嗯,不要这样做。在创建映射时,尽量不要覆盖任何内容......不是因为您不使用被覆盖的命令,而是因为您可能有/将来会使用的某些插件正在使用它。
然后您再进行覆盖,接着您就需要担心了。
就我个人而言,对于像您举例的命令,我喜欢使用Ctrl +某些键组合。在vim中有很多免费的组合键,Ctrl附近左侧的字母组合起来很好。
顺便问一下,您想用这些映射做什么......我理解第二个(逐个删除单词),但第一个对我来说没有意义。它应该做什么?交换行吗?
normal!
和 noremap
。(但并不是每个人都这样做,我认为有些情况下他们不能这样做。) - idbrii