這是已棄用的,所有未來的變更都將針對分支harpoon2
。
魚叉2
狀態:4 月 20 日或 6 月 9 日合併至主線(很好)
-- 圖片由鮑伯魯斯特提供
儘管有幾個人使用過,但尚未完全烘烤。如果您遇到任何問題,看到一些您認為令人驚奇的改進,或者只是對魚叉(或我)有一些反饋,請提出問題!
: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,這是一個小的 bash 腳本,它將切換到正在運行 neovim 的窗口。
在你的tmux.conf
(或任何你有按鍵綁定的地方),加入這個
bind-key -r G run-shell " path-to-harpoon/harpoon/scripts/tmux/switch-back-to-nvim "
第一個將魚叉註冊為望遠鏡擴展
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 "
}
}
}
}
harpoon.log
( :echo stdpath("cache")
)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 頻道。