0

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

  1. ESC
  2. 键入冒号 ( :)
  3. 类型w
  4. Enter
  5. 再按ESC_
  6. 键入i以返回插入模式

这可能吗?

4

3 回答 3

4

是的,这是可能的,但如果光标位于行尾,它不会做你想做的事。

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

:imap <F2> <C-O>:w<CR> 
于 2013-01-11T02:00:45.930 回答
3

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

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

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

安东击败了我,得到了不那么直白(但正确)的答案。

不过,最好的答案是:不要错误地使用 Vim。你永远不应该在插入模式下花费太多时间,以至于需要一个快捷方式才能退出,保存文件,然后再重新进入。对于所有其他编辑器,你一直处于“插入模式”,而且只有临时弹出菜单或对话框或其他任何内容;在 Vim 中,你应该学会扭转这一点。仅弹出插入模式以编辑或添加内容;在插入模式下切勿使用箭头键移动光标;将大部分时间花在命令(普通)模式下,对新范式稍作调整后,您会发现您的编辑速度有所提高。

于 2013-01-11T02:04:37.050 回答
3

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

首先,您需要确定将从哪种模式使用映射,因为这决定了:map您将使用哪种变体。您可能希望在插入模式下使用它,因此您将使用:inoremap.

映射的格式为:

:..noremap {keys} {rhs}

你想要<F2>(见:help key-notation)为keys. 对于{rhs},只需连接描述中列出的键。

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

PS Anton Kovalenko 给出的替代方案可能更适合您尝试做的事情,但在这里我为您提供了未来键映射的一般配方。

于 2013-01-11T02:06:10.290 回答