我想映射一个键,以便它在 Vim 中执行以下操作。假设我正在编辑一个文件;我希望它进行设置,以便如果我按F2,我将完成与执行以下操作时相同的事情:
- 按ESC
- 键入冒号 (
:
) - 类型
w
- 按Enter
- 再按ESC_
- 键入
i
以返回插入模式
这可能吗?
是的,这是可能的,但如果光标位于行尾,它不会做你想做的事。
要F2以插入模式保存文件,请使用以下映射:
:imap <F2> <C-O>:w<CR>
字面答案:是的。你可以使用这个:
:inoremap <F2> <Esc>:w<CR>I
但它不会完全符合您的要求(光标将位于错误的位置)。
安东击败了我,得到了不那么直白(但正确)的答案。
不过,最好的答案是:不要错误地使用 Vim。你永远不应该在插入模式下花费太多时间,以至于需要一个快捷方式才能退出,保存文件,然后再重新进入。对于所有其他编辑器,你一直处于“插入模式”,而且只有临时弹出菜单或对话框或其他任何内容;在 Vim 中,你应该学会扭转这一点。仅弹出插入模式以编辑或添加内容;在插入模式下切勿使用箭头键移动光标;将大部分时间花在命令(普通)模式下,对新范式稍作调整后,您会发现您的编辑速度有所提高。
编写映射几乎比您的描述容易。
首先,您需要确定将从哪种模式使用映射,因为这决定了:map
您将使用哪种变体。您可能希望在插入模式下使用它,因此您将使用:inoremap
.
映射的格式为:
:..noremap {keys} {rhs}
你想要<F2>
(见:help key-notation
)为keys
. 对于{rhs}
,只需连接描述中列出的键。
要保留映射,请将其添加到~/.vimrc
. (见:help vimrc
。)
PS Anton Kovalenko 给出的替代方案可能更适合您尝试做的事情,但在这里我为您提供了未来键映射的一般配方。