如何将这五个键盘操作映射到Vim中的单个键?

时间:2013-01-11 01:51:56

标签: linux vim

我想映射一个键,以便它在Vim中执行以下操作。假设我正在编辑一个文件;我希望它设置为如果我按 F2 ,我会完成同样的事情,如果我做了以下事情:

  1. ESC
  2. 输入冒号(:
  3. 输入w
  4. 输入
  5. 再次按 ESC
  6. 键入i以返回插入模式
  7. 这可能吗?

3 个答案:

答案 0 :(得分:4)

是的,但是如果光标在行尾,它就不能做你想要的。

要在插入模式下将文件保存在 F2 上,请使用以下映射:

:imap <F2> <C-O>:w<CR> 

答案 1 :(得分:3)

字面答案:是的。你可以用这个:

:inoremap <F2> <Esc>:w<CR>I

但它不会完全符合您的要求(光标将位于错误的位置)。

安东打败了我,不那么直接(但也是正确的)答案。

最好的答案是这样的:不要错误地使用Vim。你不应该在插入模式上花费这么多时间,你需要一个快捷方式来摆脱它,保存文件然后再回来。对于所有其他编辑器,你一直处于“插入模式”,只是暂时弹出菜单或对话框等等;在Vim中,你应该学会扭转这种局面。只进入插入模式进行编辑或添加;在插入模式下,永远不要使用箭头键移动光标;将大部分时间花在命令(正常)模式上,在对新范例进行一些调整后,您会发现编辑速度有所提高。

答案 2 :(得分:3)

编写映射几乎比描述更容易。

首先,您需要确定将使用哪个模式映射,因为它决定了您将使用的:map变体。您可能希望在插入模式中使用此功能,因此您将使用:inoremap

映射的格式为:

:..noremap {keys} {rhs}

您需要<F2>(请参阅:help key-notation)了解keys。对于{rhs},只需连接说明中列出的键。

要保留映射,请将其添加到~/.vimrc。 (见:help vimrc。)

P.S。 alternative given by Anton Kovalenko可能对你正在做的事情更好,但在这里我给了你未来键映射的一般方法。