[英]Run terminal command from VIM?
我希望编写一个函数,我可以将其添加到我的.vimrc文件中,该函数将调用终端命令,然后将其绑定到<leader>u
。
我似乎无法让它工作。 我相信我可以使用system()函数,但是文档很少,我似乎无法使用它。
有问题的终端命令是' git push origin master '。
我知道有可用于git的插件,但我不是在寻找任何这些插件,只是将终端命令绑定到组合键的简单功能。
function gitPush()
system("git push origin master")
endfunction
:nmap <leader>u :call gitPush()
我知道这是waaay,但vim似乎并不想让文档非常可用。
泰
function GitPush()
!git push origin master
endfunction
是在子shell中运行命令的方法。
编辑:用户定义的函数也必须以大写字母开头;)
为什么使用call
调用自己的函数而不能将它用于内置函数? 这是三个错误之一,其他是由@Richo提到的:用户定义的函数必须以大写开头,或者用b:
, w:
, t:
注意这两个都不是本地函数), g:
, s:
(仅在脚本内部,你必须用映射中的<SID>
替换s:
:),甚至\\w:
例如, function _:foo()
工作)或{filename_without_extension}#
(如果文件名匹配\\w+.vim
)。 如果是匿名函数:
let dict={}
function dict["foo"]()
endfunction
function dict.bar()
endfunction
它也不需要从资本开始。 所以正确的解决方案是:
function g:gitPush()
call system("git push origin master")
endfunction
nnoremap <leader>u :call g:gitPush()<CR>
第三个错误是忽略<CR>
。 我改变nmap
到nnoremap
,因为它是很好用nore
在可能的情况。 拥有:
在命令开始时没有伤害并且不是错误,但我只是不写它:在正常模式映射中需要启动命令模式,但不在脚本内部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.