現在、私は逃亡者を使ってgitに関連するほとんどすべてを管理していますが、利用可能なブランチをすばやく視覚化し、切り替える良いワークフローを見つけることができません。
私ができることは:Git checkout <branch-name>
、問題はファイル名とブランチの両方をオートコンプリートすることであり、ブランチリストを好むことです。
現在、私は逃亡者を使ってgitに関連するほとんどすべてを管理していますが、利用可能なブランチをすばやく視覚化し、切り替える良いワークフローを見つけることができません。
私ができることは:Git checkout <branch-name>
、問題はファイル名とブランチの両方をオートコンプリートすることであり、ブランチリストを好むことです。
回答:
ここで答えを得ることが、これを達成する方法です。
通常モードでCTRL- Zを押すと、シェルに戻り、Vimを一時停止します。タイプを実行した後、中断されたVimに戻るコマンドを実行すると、Vimも強制的に更新されます。git checkout [branchname]
fg
一部のgvim実装には:shell
、ダム端末を使用してVim内でシェルを開くサポートがあります。ただし、単に入力する方が簡単な場合があります。
:!git checkout [branchname]
これにより、新しいシェルプロンプトを開かずにコマンドが実行されます。(このオプションはターミナルVimでも使用可能です)。
vim-fugitiveは、Vim内からGitを使用できるプラグインです。コマンドは次のようになります。
:Git checkout [branchname]
vim-merginalは、vim-fugitiveを使用するプラグインで、使いやすいインターフェイスを提供します。
:Merginal
ます。cc
して、そのブランチをチェックアウトします。vim-merginal
私が探していたものです。
ctrl-z
ファイルが自動でロードされるため、気に入っています。同僚はコマンドライン用のtmuxウィンドウとvim用のtmuxウィンドウを持ちたいのですが、vimに戻ったときにチェックアウトまたはマージを行う場合は、開いている各ファイルにアクセスする必要があります:e!
。(:bufdo e
)これは覚えておくべき苦痛です。代わりに、それはに簡単ですctrl-z
ときにfg
はVimが実行起こる:e
自動魔法のように。
:checktime
開いているすべてのバッファーをリロードするのに役立ちます。
使用のvim-merginalプラグイン(逃亡拡張子)。以下のインタラクティブなTUIを提供します。
端末を使用する必要があります。を使用するとCTRL-Z、Vim(または現在実行中のプロセス)がバックグラウンドになり、必要なコマンドを実行fg
して、プロセスをフォアグラウンドに戻すことができます。
<CTRL-Z>
git checkout <tab>
fg
:shell
あなたの他の好みの端末エミュレータの中でタブ移動を行ったり、ALTするための方法です
!git checkout [branchname]
逃亡者に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')
\ })
あなたがそれが役に立つことを願っています
@ kubek2kが提供する答えは非常に驚異的です。このソリューションは、想像していたよりも少ないコード行数でイメージを実装できたよりも優れています。「fzf」の強力なパーソナライゼーションの使用を理解するのに役立つドアを開きました。
私はそれを少し修正して、さらに提供します:
以下にわずかな変更を示します。
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') })
fugitive
はfugative
、ではなく、OPがすでに使用しているものです。