2009-12-05 170 views
5

有没有办法在vim中将一系列按键映射到命令行命令(在Ex模式下输入:之后的命令)?将按键序列映射到命令行命令

+1

当然!你能举一个你想做什么的例子,或者你只是问一般? – Rook 2009-12-05 06:13:22

+0

就在一般情况下,很多次我发现我反复做同样的事情,但另一方面,我不想为它创建一个键绑定(我不想要另一个Emacs,我正在使用所有我的命令修改键) – Opt 2009-12-06 03:40:02

回答

7

是的,它直观地叫:地图

例子:

:map foo :echo "bar"<CR> 

没有在插入模式下按下键foo VIM将与“酒吧”作出回应。 在vim中输入:help :map以获取更多信息。 默认情况下,您可以将要加载的映射放置在.vimrc文件中。

您可以独立映射不同模式的按键,如插入模式(:imap)和可视模式(:vmap)。另请参见重映射的主题vim的帮助(:noremap)

更新

如果你要使用命令模式的别名(但可以插入方式也做),你会想使用缩写

要定义命令模式的缩写,请使用:ca(这是cabbrev的缩写)。请参阅vim help :help :ca和更多信息:help :abbreviations

注意,与map不同,缩写不会被vim命令替换,而会被字面字符替换。缩写会在您按空格键或输入时触发。

例子:

" let me type :syn=cpp instead of :set syntax=cpp 
" 
:ca syn set syntax 

" fix my favorite spelling error 
" 
:abbr teh the 

" this does something different than the :map example above 
" 
:iabb foo :echo "bar"<CR> 

" this is ugly, misusing an abbreviation as :map by simulating ESCAPE press 
" 
:iabb hello <ESC>:echo "world"<CR> 
+0

这使得某些东西更讨厌 - 如果例如我想输入fo,那么我必须稍等一会才能执行该命令序列,因为fo是foo的子字符串。有没有办法将命令行命令(在:提示后输入的命令)映射到一系列按键? – Opt 2009-12-06 03:42:40

+0

我已经更新了我的回复 – catchmeifyoutry 2009-12-06 04:50:41