noremap :hsp :botright new
noremap :vsp :botright vnew
“不是编辑器命令:hsp”
我可能在谷歌搜索错误的东西,但我找不到很多关于别名vim命令的结果。我可以找到大量关于将键映射到命令的信息,比如我的选项卡:
noremap <C-t> :tabnew<CR>
但找不到映射到其他命令的命令。
答案 0 :(得分:3)
您正在做的是使用映射模拟命令。你说当你在正常模式下按下4个键:hsv
时,它应该输出键:botright new
(需要<CR>
才能运行,正如其他人所说的那样),但它实际上并没有发出命令hsv
。您可以使用用户命令(:h user-commands
)创建实际命令。但这些必须以大写字母开头。
:command Hsp botright new
:command Vsp botright vnew
现在您可以输入:Hsp
并按Enter键以运行命令botright new
。
答案 1 :(得分:1)
您是否尝试过命令缩写?
ca hsp botright new
ca vsp botright vnew
您必须通过之后按空格键来初始化缩写的扩展。根据全局vim配置,只有在按下enter时,扩展也会自动发生。
答案 2 :(得分:0)
使用相同的映射,我无法使用我的vim(v7.4)获取Not an editor command: hsp
错误消息。
您的映射工作正常,但最后没有<cr>
,因此当您在正常模式下按:hsp
时,您的映射将切换到命令行模式,并将映射的命令放在那里,而不执行它。您必须手动按Enter
。
@ XZS的答案有效,但请记住它是缩写(ab),而不是映射。 ab不是命令别名,它与映射不完全相同。例如,您必须在hsp
之后按另一个键(如空格)来触发ab。另外,你不能用一些特殊键,这将是ab的另一个限制。
命令映射有c(nore)map
。
e.g。你可以:
cnoremap hsp botright new
使用上一行,与原始行相同,您必须手动按Enter
,如果您希望执行该行,则需要在行末添加<CR>
。
我想如果我这样做,我会创建映射。
答案 3 :(得分:0)
创建命令别名可能很棘手:
cabbrev
和/或cmap
会导致扩展和映射在意外的地方触发,例如在/
搜索期间和文件名中间。cmap
在输出到屏幕时会有明显的延迟,这就是经常使用cabbrev
的原因。但是,有几种方法可以创建正确的别名:
:command
创建命令。
command W w
-nargs
,-bar
,-complete
和-range
选项:cabbrev
以防止缩写在适当的位置扩展。
<expr>
选项getcmdtype()
等于:
getcmdline()
或getcmdpos()
cnoreabbrev <expr> W getcmdtype() == ':' && getcmdline() ==# 'W' ? 'w' : 'W'
:Alias
Alias W w
cabbrev