これは非推奨であり、将来の変更はすべてharpoon2
ブランチに対して行われます。
銛2
ステータス: 4 月 20 日または 6 月 9 日にメインラインにマージ予定 (いいですね)
-- 画像提供: Bob Rust
数人で使用していますが、まだ完全に焼き上がっていません。何か問題が発生した場合は、素晴らしいと思われる改善点を確認するか、ハープーン (または私) へのフィードバックがあれば、問題を作成してください。
:bnext
と:bprev
の繰り返しが多すぎる、代替ファイルでは十分に処理できない、などなど。vim-plug
) を使用してインストールしますPlug ' nvim-lua/plenary.nvim ' " don't forget to add this one if you don't have it yet!
Plug ' ThePrimeagen/harpoon '
ここでは銛の力を行使する方法を説明します。
後でもう一度見たいファイルにマークを付ける
: lua require ( " harpoon.mark " ). add_file ()
すべてのプロジェクト マークを表示するには:
: lua require ( " harpoon.ui " ). toggle_quick_menu ()
リストを上下に移動したり、入力、削除、並べ替えたりすることができます。 q
と<ESC>
押して終了し、メニューを保存します
メニューを表示せずに任意のマークに切り替えることもできます。以下を使用して希望のマーク インデックスを使用します。
: lua require ( " harpoon.ui " ). nav_file ( 3 ) -- navigates to file 3
リストを両方向に循環させることもできます
: lua require ( " harpoon.ui " ). nav_next () -- navigates to next mark
: lua require ( " harpoon.ui " ). nav_prev () -- navigates to previous mark
クイックメニューからファイルを開きます: control+v で垂直分割、control+x で水平分割、control+t で新しいタブ
これはファイル ナビゲーションと同様に機能しますが、指定されたインデックスに端末がない場合は新しい端末が作成される点が異なります。
lua require ( " harpoon.term " ). gotoTerminal ( 1 ) -- navigates to term 1
コマンドは任意の端末に送信できます
lua require ( " harpoon.term " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
さらに多くのコマンドを後で素早く保存できるようにすることができます
lua require ( ' harpoon.cmd-ui ' ). toggle_quick_menu () -- shows the commands menu
lua require ( " harpoon.term " ). sendCommand ( 1 , 1 ) -- sends command 1 to term 1
tmux はそのままサポートされており、次のように'term' with 'tmux'
切り替えるだけで、通常の端末へのドロップイン代替品として使用できます。
lua require ( " harpoon.tmux " ). gotoTerminal ( 1 ) -- goes to the first tmux window
lua require ( " harpoon.tmux " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
lua require ( " harpoon.tmux " ). sendCommand ( 1 , 1 ) -- sends command 1 to tmux window 1
sendCommand
とgoToTerminal
有効な tmux ペイン識別子も受け入れます。
lua require ( " harpoon.tmux " ). gotoTerminal ( " {down-of} " ) -- focus the pane directly below
lua require ( " harpoon.tmux " ). sendCommand ( " %3 " , " ls " ) -- send a command to the pane with id '%3'
tmux ウィンドウに切り替えたら、いつでも neovim に戻すことができます。これは、neovim を実行しているウィンドウに切り替える小さな bash スクリプトです。
tmux.conf
(またはキーバインドのある場所) にこれを追加します
bind-key -r G run-shell " path-to-harpoon/harpoon/scripts/tmux/switch-back-to-nvim "
望遠鏡の拡張としてハープーンを 1 番目に登録します
require ( " telescope " ). load_extension ( ' harpoon ' )
現在、望遠鏡ではマークのみがサポートされています
:Telescope harpoon marks
ハープーンの設定が必要な場合は、ハープーンのセットアップ機能を通じて行う必要があります
require ( " harpoon " ). setup ({ ... })
ここでは、利用可能なすべてのグローバル設定とそのデフォルト値を示します。
global_settings = {
-- sets the marks upon calling `toggle` on the ui, instead of require `:w`.
save_on_toggle = false ,
-- saves the harpoon file upon every change. disabling is unrecommended.
save_on_change = true ,
-- sets harpoon to run the command immediately as it's passed to the terminal when calling `sendCommand`.
enter_on_sendcmd = false ,
-- closes any tmux windows harpoon that harpoon creates when you close Neovim.
tmux_autoclose_windows = false ,
-- filetypes that you want to prevent from adding to the harpoon list menu.
excluded_filetypes = { " harpoon " },
-- set marks specific to each git branch inside git repository
mark_branch = false ,
-- enable tabline with harpoon marks
tabline = false ,
tabline_prefix = " " ,
tabline_suffix = " " ,
}
後で使用できるように端末コマンドを事前に設定する
projects = {
-- Yes $HOME works
[ " $HOME/personal/vim-with-me/server " ] = {
term = {
cmds = {
" ./env && npx ts-node src/index.ts "
}
}
}
}
:echo stdpath("cache")
) 内のharpoon.log
に書き込まれます。trace
、 debug
、 info
、 warn
、 error
、またはfatal
です。 warn
がデフォルトですvim.g.harpoon_log_level
で設定できます ( setup()
の前に設定する必要があります)HARPOON_LOG=debug nvim
vim.g.harpoon_log_level
よりも優先されます。warn
に戻ります。 それらは同様の目的を果たしますが、銛のマークはいくつかの重要な点で異なります。
場合によっては、デフォルトの幅60
では十分な幅が得られません。次の例は、現在のウィンドウの幅を基準にしてメニューの幅を設定することによってカスタム幅を構成する方法を示しています。
require ( " harpoon " ). setup ({
menu = {
width = vim . api . nvim_win_get_width ( 0 ) - 4 ,
}
})
デフォルトでは、タブラインはテーマのデフォルトのテーマを使用します。次のハイライトを編集してカスタマイズできます。
よりクリーンにする例:
vim . cmd ( ' highlight! HarpoonInactive guibg=NONE guifg=#63698c ' )
vim . cmd ( ' highlight! HarpoonActive guibg=NONE guifg=white ' )
vim . cmd ( ' highlight! HarpoonNumberActive guibg=NONE guifg=#7aa2f7 ' )
vim . cmd ( ' highlight! HarpoonNumberInactive guibg=NONE guifg=#7aa2f7 ' )
vim . cmd ( ' highlight! TabLineFill guibg=NONE guifg=white ' )
結果:
Harpoon に関する質問については、Primeagen の Discord サーバーに #harpoon チャンネルがあります。