4

lightline.vimを使用しており、現在の git ブランチを表示したいと思います。現時点ではvim-fugitiveを使用していますが、ステータス ラインに git ブランチを表示することを除いて、このプラグインはまったく使用していません。

私の質問は:

fugitive を使用せずにステータス ラインに git ブランチを表示する方法はありますか?

lightline にフックするカスタム関数を作成しようとしました。systemこの関数は、 vimscript 関数を使用して現在の git ブランチを取得しました。キーストロークごとにステータスラインが更新され、他のすべてが壊れてvimが使用できなくなったことを除いて、うまく機能しませんでした。基本的に、キーストロークごとに関数を使用して git ブランチがフェッチされていましたsystem...

したがって、それは実行可能な解決策ではありません。私が「できる」ことは、gitブランチがフェッチされたかどうかを示すグローバル変数を作成し、すでにフェッチされている場合、カスタム関数がブランチ名を再度フェッチしないようにすることです。その後、MacVim がフォーカスを失うたびにブランチ名を再度取得できます (ターミナル vim を使用してそれを行う方法がわかりません)。それは理想的ではありませんが...

この問題を解決する方法についてのアイデアはありますか?

4

3 に答える 3

23

必要な機能に焦点を当てたプラグインを作成しました。

https://github.com/itchyny/vim-gitbranch

関数ごとにブランチ名を取得できgitbranch#name()ます。

コードは非常に小さいため、1 分で読むことができます。

于 2014-06-10T03:51:27.103 に答える
4

はい、グローバル変数を使用する方法です。

自明でない部分は、その変数の値を更新する方法/時期です。アンautocmdは最も明白な選択のようですが、どのイベントに夢中になっていますか? BufEnter良いスタートのようです。

では、逃亡者を使用していないので、どのようにブランチを切り替えますか? Vimの外ですか?Vim のコマンドラインで?

Vim のコマンド ラインで:!git checkout foo実行すると、引数としてブランチ名を受け取るコマンドを記述して、適切なシェル コマンドを実行、. を使用しなくてもの値をg:git_branch一度に変更できautocmdます。

Vim の外部 ( <C-z>、、別のターミナル ウィンドウまたは tmux ペイン、GUI アプリなど) で行う場合は、その変更を Vim に通知する確実な方法:shを見つけるsystem()autocmd.

于 2014-06-04T08:00:37.927 に答える