您尚未登录。

#1 2016-06-04 23:57:43

tan9p
会员
注册时间: 2015-07-07
帖子: 111

vim的git push 绑定,怎么写比较好?

在.vimrc 里面是这样写的
```
map <F8> :call GitPush()<CR>
func! GitPush()
    exec 'w'
    exec '!git add .'
    exec '!git commit -a -m "commit by vim"'
    exec '!git push'
endfunc

```
基本可以达到目标,但是需要按三次回车,而且commit的说明没法现输入。

请问大虾们是如何绑定的啊?对vim的配置了解不深入,见笑:)

离线

#2 2016-06-05 09:43:06

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,460
个人网站

Re: vim的git push 绑定,怎么写比较好?

为何不用 fugitive 呢?

你的 exec 都是不需要的。提交说明可以用 input() 函数来输入。不过 fugitive 已经做得很好了呀。

离线

#3 2016-06-05 10:21:54

tan9p
会员
注册时间: 2015-07-07
帖子: 111

Re: vim的git push 绑定,怎么写比较好?

谢谢依云,fugitive在研究中,经您提示刀耕火种了一个:

map <F8> :call GitPush()<CR>
func! GitPush()
    exec 'w'
    exec '!git add .'
    exec ':let content = input("Commit: ")'
    exec '!git commit -a -m '.content
    exec '!git push'
endfunc

但是content 里不能有 ! % 等字符:(

最近编辑记录 tan9p (2016-06-05 10:45:33)

离线

#4 2016-06-05 15:30:10

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,460
个人网站

Re: vim的git push 绑定,怎么写比较好?

:help shellescape()

离线

#5 2016-06-05 17:23:55

tan9p
会员
注册时间: 2015-07-07
帖子: 111

Re: vim的git push 绑定,怎么写比较好?

谢谢大虾,当时就在想 vim里类似 strip 的函数叫什么,是 escape这个关键词啊.
经测试 空格 可以包含了 但!会被解析成上一条命令 即 "git add ."
;;这个用shellescape(content,1)可以解决吧。

另外 exec 不写的话,每一句的结束是不是需要标记啊?

最近编辑记录 tan9p (2016-06-05 18:01:35)

离线

#6 2016-06-05 17:43:25

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,460
个人网站

Re: vim的git push 绑定,怎么写比较好?

不是啊。exec 用于把字符串当命令来执行。所以 「exec 'w'」等同于「w」。当然你拼接字符串作为命令的时候就需要用 exec 了。

离线

#7 2016-06-05 18:04:55

tan9p
会员
注册时间: 2015-07-07
帖子: 111

Re: vim的git push 绑定,怎么写比较好?

基本概念没有,所以在撞大运呢:)习惯Google,却不愿认真读文档。谢谢您!

最近编辑记录 tan9p (2016-06-05 18:07:14)

离线

页脚