Esto está en desuso y todos los cambios futuros se realizarán en la rama harpoon2
.
Arpón 2
ESTADO : Fusión con la línea principal el 20 de abril o el 9 de junio (bueno)
-- imagen proporcionada por Bob Rust
Esto no está completamente horneado, aunque lo usan varias personas. Si tiene algún problema, ve alguna mejora que cree que sería sorprendente o simplemente tiene algún comentario sobre Harpoon (o sobre mí), ¡formule un problema!
:bnext
y :bprev
se están volviendo demasiado repetitivos, el archivo alternativo no es suficiente, etc., etc.vim-plug
en este ejemplo) Plug ' nvim-lua/plenary.nvim ' " don't forget to add this one if you don't have it yet!
Plug ' ThePrimeagen/harpoon '
Aquí te explicaremos cómo ejercer el poder del arpón:
marcas los archivos que deseas volver a visitar más adelante
: lua require ( " harpoon.mark " ). add_file ()
ver todas las marcas del proyecto con:
: lua require ( " harpoon.ui " ). toggle_quick_menu ()
puedes subir y bajar en la lista, ingresar, eliminar o reordenar. q
y <ESC>
salen y guardan el menú
También puede cambiar a cualquier marca sin abrir el menú, use lo siguiente con el índice de marca deseado
: lua require ( " harpoon.ui " ). nav_file ( 3 ) -- navigates to file 3
También puedes recorrer la lista en ambas direcciones.
: lua require ( " harpoon.ui " ). nav_next () -- navigates to next mark
: lua require ( " harpoon.ui " ). nav_prev () -- navigates to previous mark
desde el menú rápido, abra un archivo en: una división vertical con control+v, una división horizontal con control+x, una nueva pestaña con control+t
Esto funciona como la navegación de archivos, excepto que si no hay ningún terminal en el índice especificado, se crea un nuevo terminal.
lua require ( " harpoon.term " ). gotoTerminal ( 1 ) -- navigates to term 1
Los comandos se pueden enviar a cualquier terminal.
lua require ( " harpoon.term " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
Además, se pueden almacenar más comandos para un uso rápido posterior.
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 es compatible desde el primer momento y se puede usar como reemplazo directo de terminales normales simplemente cambiando 'term' with 'tmux'
así
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
y goToTerminal
también aceptan cualquier identificador de panel 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'
Una vez que cambie a una ventana tmux, siempre podrá volver a neovim, este es un pequeño script bash que cambiará a la ventana que ejecuta neovim.
En su tmux.conf
(o en cualquier lugar donde tenga combinaciones de teclas), agregue esto
bind-key -r G run-shell " path-to-harpoon/harpoon/scripts/tmux/switch-back-to-nvim "
Primer arpón de registro como extensión de telescopio
require ( " telescope " ). load_extension ( ' harpoon ' )
Actualmente solo se admiten marcas en el telescopio.
:Telescope harpoon marks
Si se desea configurar el arpón, se debe realizar a través de la función de configuración del arpón.
require ( " harpoon " ). setup ({ ... })
aquí están todas las configuraciones globales disponibles con sus valores predeterminados
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 preconfigurar comandos de terminal para su uso posterior
projects = {
-- Yes $HOME works
[ " $HOME/personal/vim-with-me/server " ] = {
term = {
cmds = {
" ./env && npx ts-node src/index.ts "
}
}
}
}
harpoon.log
dentro de la ruta de caché de nvim ( :echo stdpath("cache")
)trace
, debug
, info
, warn
, error
o fatal
. warn
es predeterminadovim.g.harpoon_log_level
(debe ser anterior setup()
).HARPOON_LOG=debug nvim
tiene prioridad sobre vim.g.harpoon_log_level
.warn
. Tienen un propósito similar, sin embargo, las marcas de arpón difieren en algunos aspectos clave:
A veces, el ancho predeterminado de 60
no es lo suficientemente amplio. El siguiente ejemplo demuestra cómo configurar un ancho personalizado estableciendo el ancho del menú en relación con el ancho de la ventana actual.
require ( " harpoon " ). setup ({
menu = {
width = vim . api . nvim_win_get_width ( 0 ) - 4 ,
}
})
De forma predeterminada, la línea de pestañas utilizará el tema predeterminado de su tema. Puede personalizar editando los siguientes aspectos destacados:
Ejemplo para hacerlo más limpio:
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:
Si tiene preguntas sobre Harpoon, hay un canal #harpoon en el servidor Discord de Primeagen.