这是已弃用的,所有未来的更改都将针对分支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 频道。