Это устаревшая версия, и все будущие изменения будут относиться к ветке harpoon2
.
Гарпун 2
СТАТУС : Слияние с основной веткой 20 апреля или 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 "
Гарпун 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 "
}
}
}
}
harpoon.log
по пути к кэшу nvim ( :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, на сервере Discord Primeagen есть канал #harpoon.