#1 楼
要最终得出答案,请使用以下方法来实现此目的:Vanilla Terminal Vim
在正常模式下按CTRL-Z将使您回到外壳并挂起Vim。执行完
git checkout [branchname]
后,键入fg
命令返回到挂起的Vim,这也将强制Vim刷新。还值得注意的是,Vim中的
:checktime
命令可以派上用场,以便对其中的文件系统更改执行缓冲区扫描。已经。有关更多信息,请参见:help :checktime
。Vanilla GUI Vim
某些gvim实现将具有
:shell
支持,这将使用哑终端在Vim内部打开外壳。但是,仅键入以下内容可能会更容易::!git checkout [branchname]
这将执行命令,而无需打开新的Shell提示符。 (此选项在Vim终端中也可用)。
vim-fugitive
vim-fugitive是一个插件,允许您从Vim内部使用Git。命令为:
:Git checkout [branchname]
vim-merginal
vim-merginal是一个使用vim逃犯并提供用户友好的界面的插件。
:Merginal
。将光标移动到所需分支。
键入
cc
签出该分支。#2 楼
使用vim-merginal插件(逃逸扩展名)。它提供了以下交互式TUI:查看分支列表
从列表中检查分支
创建新分支
删除分支
合并分支
重新设置分支
解决合并冲突
与遥控器交互(拉,推,获取,跟踪)
与其他分支的区别分支机构的git历史记录
#3 楼
您应该拥抱您的终端。如果使用CTRL-Z,它将在Vim(或您当前正在运行的任何进程)的背景下运行,然后您可以运行所需的任何命令fg
,以使该进程回到前台: 评论
...以及何时使用GVim?
–muru
15年12月23日在5:30
:shell是进入或替代进入其他喜爱的终端模拟器的方法
– 65-e9-7e-17
2015年12月23日在5:32
我一直喜欢!git checkout [分支名称]
–bronzehedwick
15/12/23在18:46
#4 楼
逃犯Git checkout <branch>
有一个缺点,就是不能自动完成分支名称。使用fzf.vim我创建了以下命令:function! s:changebranch(branch)
execute 'Git checkout' . a:branch
call feedkeys("i")
endfunction
command! -bang Gbranch call fzf#run({
\ 'source': 'git branch -a --no-color | grep -v "^\* " ',
\ 'sink': function('s:changebranch')
\ })
希望您发现它有用
#5 楼
@ kubek2k提供的答案是如此惊人。该解决方案比我想象的要好,并且用更少的代码行就能实现。它打开了大门,可以帮助我理解'fzf'的强大个性化用法。我对其进行了稍微修改,以提供以下功能:
使用逃犯(而不是命令行)获取参考(更好地支持Windows)
列表标签和分支
这里是稍作修改:
function! s:gitCheckoutRef(ref)
execute('Git checkout ' . a:ref)
" call feedkeys("i")
endfunction
function! s:gitListRefs()
let l:refs = execute("Git for-each-ref --format='\%(refname:short)'")
return split(l:refs,'\r\n*')[1:] "jump past the first line which is the git command
endfunction
command! -bang Gbranch call fzf#run({ 'source': s:gitListRefs(), 'sink': function('s:gitCheckoutRef'), 'dir':expand('%:p:h') })
评论
听起来不错。但这对我不起作用(在:Gbranch之后没有显示结果),而kubek2k解决方案确实起作用。
–塞巴斯蒂安·穆勒(SebastianMüller)
20 Mar 7 '20 at 22:57
#6 楼
我找到了这个FZF插件,它添加了一个GBranches
命令来浏览您的存储库。https://github.com/stsewd/fzf-checkout.vim
评论
这是逃犯,不是逃犯,这就是OP已经在使用的东西。
–muru
15/12/23在20:07
很棒的答案。 vim-merginal是我想要的。
–塞尔吉奥·马尔克斯(Sergio D.Márquez)
2015年12月23日在20:09
我喜欢ctrl-z,因为它会自动加载文件。同事喜欢为命令行提供一个tmux窗口,为vim提供一个tmux窗口,但是当他们执行签出操作或返回vim时合并时,必须进入每个打开的文件和:e!每一次。 (:bufdo e)这是一个令人难忘的痛苦。相反,在发生fg时,按ctrl-z会更容易,Vim自动神奇地执行:e。
– Sukima
16年11月25日在17:25
我可以添加到列表中的另一个很好的逃犯扩展名:github.com/sodapopcan/vim-twiggy
–塞尔吉奥·马尔克斯(Sergio D.Márquez)
18年3月16日19:00
如果git checkout已经完成,:checktime会很方便地重新加载所有打开的缓冲区。
–雷
18年4月19日在22:02