我希望编写一个函数,我可以将其添加到我的.vimrc文件中,该文件将调用终端命令,然后将其绑定到<leader>u
。
我似乎无法让它工作。我相信我可以使用system()函数,但是文档很少,我似乎无法使用它。
有问题的终端命令是' git push origin master '。
我知道有可用于git的插件,但我不是在寻找任何这些插件,只是将终端命令绑定到组合键的简单函数。
function gitPush()
system("git push origin master")
endfunction
:nmap <leader>u :call gitPush()
我知道这已经过了,但是vim似乎并不想让文档非常有用。
泰
答案 0 :(得分:7)
function GitPush()
!git push origin master
endfunction
是在子shell中运行命令的方法。
编辑:用户定义的函数也必须以大写字母开头;)
答案 1 :(得分:1)
为什么使用call
调用自己的函数而无法将其用于内置函数?这是三个错误之一,其他是由@Richo提到的:用户定义的函数必须以大写字母开头,或者以b:
,w:
,t:
开头(请注意,这些都不是本地函数),g:
,s:
(仅在内部脚本中,您必须在映射中将s:
替换为<SID>
),甚至\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
。在命令开头有:
不会造成伤害并且不是错误,但我只是不写它:在正常模式映射中需要启动命令模式,而不是在脚本内部。