GitHubのWebページでリポジトリ内のファイルに含まれる文字列をGrep(あいまい検索)する方法です。 Grepしたい まじまじとコードを見始めるとGrepを使いたくなる時がありますが、Go to…
neovimのプラグイン「bufferline」でタブごとに表示するバッファを切り替えられない問題の解決メモです。
実現したいこと
その1
・タブ1をフロントエンドのワークスペースにしたい
・タブ2をバックエンドのワークスペースにしたい
・タブを切り替えることでフロントエンド・バックエンドを簡単に行き来したい
・お互いのタブには各ワークスペースで開いたバッファだけ表示したい
その2
・タブ1をフロントエンドのワークスペースにしたい
・タブ2にターミナルを開いておきたい
・タブを切り替えることでフロントエンド・ターミナルを簡単に行き来したい
・タブ1にはターミナルのバッファは表示したくない
変更前のデフォルト
bufferlineは開いているバッファをタブラインに表示するプラグインです。
以下のGIF画像のようにタブを切り替えても、タブラインには常に同じ開いているバッファが表示されます。
変更後
その1
gt
でタブを切り替えると、それぞれのタブのワークスペース(カレントディレクトリ)で開いたバッファが表示されます。
その2
ターミナルがタブ1に表示されません。
設定方法
bufferlineに専用の設定がある訳ではなく、custom_filter
で実現します。
custom_filterでは、タブラインに表示する条件をセットすることができます。
カレントディレクトリのパスがバッファのファイルのパスに含まれている場合に表示するフィルターを追加します。
options = { custom_filter = function(buf_number) if not not vim.api.nvim_buf_get_name(buf_number):find(vim.fn.getcwd(), 0, true) then return true end end },
使い方
tabnew
で新しいタブを作成します。
tcd
で新しいタブに別のカレントディレクトリをセットします。
fern等のファイルエクスプローラーにはツリー上でカーソルのある場所にtcdをセットするコマンドが用意されているので、それを使うと手軽にセットできます。
:tc[d][!] {path} |:cd| と似ているが、カレントタブページのディレクトリを
設定するだけである。カレントウィンドウもこのディレクト
リを使用する。カレントディレクトリは、他のタブページ内
のウィンドウやカレントタブページ内のウィンドウ固有の
ウィンドウローカルディレクトリに対しては変更されない。
各タブごとに別々のカレントディレクトリがセットされることで、それぞれのタブにはセットされているカレントディレクトリ内のバッファだけ表示されるようになりました。
課題
同じワークスペース内(カレントディレクトリ)でタブごとに表示を分けたい場合は上手くいかない。
例
タブA: /projects/sample
タブB: /projects/sample/src/features
タブAではタブBで開いているバッファのパスがマッチするため、
タブAにはタブA+タブBのすべてのバッファが表示される。
コメントを書く