Este está obsoleto e todas as alterações futuras serão no ramo harpoon2
.
Arpão 2
STATUS : Incorporação na linha principal em 20 de abril ou 9 de junho (legal)
- imagem fornecida por Bob Rust
Não está totalmente cozido, embora seja usado por várias pessoas. Se você tiver algum problema, ver alguma melhoria que você acha que seria incrível ou apenas tiver algum feedback para o arpão (ou para mim), crie um problema!
:bnext
& :bprev
estão ficando muito repetitivos, o arquivo alternativo não é suficiente, etc.vim-plug
neste exemplo) Plug ' nvim-lua/plenary.nvim ' " don't forget to add this one if you don't have it yet!
Plug ' ThePrimeagen/harpoon '
aqui explicaremos como exercer o poder do arpão:
você marca os arquivos que deseja revisitar mais tarde
: lua require ( " harpoon.mark " ). add_file ()
veja todas as marcas do projeto com:
: lua require ( " harpoon.ui " ). toggle_quick_menu ()
você pode subir e descer na lista, inserir, excluir ou reordenar. q
e <ESC>
saem e salvam o menu
você também pode mudar para qualquer marca sem abrir o menu, use o abaixo com o índice de marca desejado
: lua require ( " harpoon.ui " ). nav_file ( 3 ) -- navigates to file 3
você também pode percorrer a lista em ambas as direções
: lua require ( " harpoon.ui " ). nav_next () -- navigates to next mark
: lua require ( " harpoon.ui " ). nav_prev () -- navigates to previous mark
no menu rápido, abra um arquivo em: uma divisão vertical com control+v, uma divisão horizontal com control+x, uma nova aba com control+t
isso funciona como a navegação de arquivos, exceto que, se não houver nenhum terminal no índice especificado, um novo terminal será criado.
lua require ( " harpoon.term " ). gotoTerminal ( 1 ) -- navigates to term 1
comandos podem ser enviados para qualquer terminal
lua require ( " harpoon.term " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
ainda mais comandos podem ser armazenados para posterior rápida
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 é suportado imediatamente e pode ser usado como um substituto imediato para terminais normais, simplesmente trocando 'term' with 'tmux'
assim
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
e goToTerminal
também aceitam qualquer identificador de painel tmux válido.
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'
Depois de mudar para uma janela do tmux, você sempre pode voltar para o neovim, este é um pequeno script bash que mudará para a janela que está executando o neovim.
No seu tmux.conf
(ou em qualquer lugar onde você tenha atalhos de teclado), adicione este
bind-key -r G run-shell " path-to-harpoon/harpoon/scripts/tmux/switch-back-to-nvim "
1º registro de arpão como extensão de telescópio
require ( " telescope " ). load_extension ( ' harpoon ' )
atualmente apenas marcas são suportadas no telescópio
:Telescope harpoon marks
se desejar configurar o arpão, isso deve ser feito através da função de configuração do arpão
require ( " harpoon " ). setup ({ ... })
aqui estão todas as configurações globais disponíveis com seus valores padrão
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 = " " ,
}
para pré-configurar comandos de terminal para uso posterior
projects = {
-- Yes $HOME works
[ " $HOME/personal/vim-with-me/server " ] = {
term = {
cmds = {
" ./env && npx ts-node src/index.ts "
}
}
}
}
harpoon.log
dentro do caminho de cache nvim ( :echo stdpath("cache")
)trace
, debug
, info
, warn
, error
ou fatal
. warn
é o padrãovim.g.harpoon_log_level
(deve ser antes de setup()
)HARPOON_LOG=debug nvim
tem precedência sobre vim.g.harpoon_log_level
.warn
. eles servem a um propósito semelhante, no entanto, as marcas de arpão diferem em alguns aspectos principais:
Às vezes, a largura padrão de 60
não é suficientemente larga. O exemplo a seguir demonstra como configurar uma largura personalizada definindo a largura do menu em relação à largura da janela atual.
require ( " harpoon " ). setup ({
menu = {
width = vim . api . nvim_win_get_width ( 0 ) - 4 ,
}
})
Por padrão, a tabline usará o tema padrão do seu tema. Você pode personalizar editando os seguintes destaques:
Exemplo para torná-lo mais limpo:
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 ' )
Resultado:
Para dúvidas sobre o Harpoon, existe um canal #harpoon no servidor Discord da Primeagen.