Ceci est obsolète et toutes les modifications futures concerneront la branche harpoon2
.
Harpon 2
STATUT : Fusion avec la ligne principale le 20 avril ou le 9 juin (sympa)
-- image fournie par Bob Rust
Ce n'est pas entièrement cuit, bien qu'il soit utilisé par plusieurs personnes. Si vous rencontrez des problèmes, constatez une amélioration que vous jugez incroyable, ou avez simplement des commentaires sur Harpoon (ou moi), faites un problème !
:bnext
& :bprev
deviennent trop répétitifs, un fichier alternatif ne suffit pas, etc.vim-plug
dans cet exemple) Plug ' nvim-lua/plenary.nvim ' " don't forget to add this one if you don't have it yet!
Plug ' ThePrimeagen/harpoon '
nous expliquerons ici comment utiliser le pouvoir du harpon :
vous marquez les fichiers que vous souhaitez revoir plus tard
: lua require ( " harpoon.mark " ). add_file ()
afficher toutes les marques de projet avec :
: lua require ( " harpoon.ui " ). toggle_quick_menu ()
vous pouvez parcourir la liste, saisir, supprimer ou réorganiser. q
et <ESC>
sortent et sauvegardent le menu
vous pouvez également passer à n'importe quelle marque sans afficher le menu, utilisez ce qui suit avec l'index de marque souhaité
: lua require ( " harpoon.ui " ). nav_file ( 3 ) -- navigates to file 3
vous pouvez également parcourir la liste dans les deux sens
: lua require ( " harpoon.ui " ). nav_next () -- navigates to next mark
: lua require ( " harpoon.ui " ). nav_prev () -- navigates to previous mark
depuis le menu rapide, ouvrez un fichier dans : un partage vertical avec contrôle+v, un partage horizontal avec contrôle+x, un nouvel onglet avec contrôle+t
cela fonctionne comme la navigation dans les fichiers sauf que s'il n'y a pas de terminal à l'index spécifié, un nouveau terminal est créé.
lua require ( " harpoon.term " ). gotoTerminal ( 1 ) -- navigates to term 1
les commandes peuvent être envoyées à n’importe quel terminal
lua require ( " harpoon.term " ). sendCommand ( 1 , " ls -La " ) -- sends ls -La to tmux window 1
de plus, davantage de commandes peuvent être stockées pour une utilisation rapide ultérieure
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 est pris en charge dès le départ et peut être utilisé en remplacement des terminaux normaux en changeant simplement 'term' with 'tmux'
comme ceci
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
et goToTerminal
acceptent également tout identifiant de volet tmux valide.
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'
Une fois que vous passez à une fenêtre tmux, vous pouvez toujours revenir à neovim, il s'agit d'un petit script bash qui basculera vers la fenêtre qui exécute neovim.
Dans votre tmux.conf
(ou partout où vous avez des raccourcis clavier), ajoutez ceci
bind-key -r G run-shell " path-to-harpoon/harpoon/scripts/tmux/switch-back-to-nvim "
Harpon du 1er registre comme extension du télescope
require ( " telescope " ). load_extension ( ' harpoon ' )
actuellement, seules les marques sont prises en charge dans le télescope
:Telescope harpoon marks
si la configuration du harpon est souhaitée, elle doit être effectuée via la fonction de configuration des harpons
require ( " harpoon " ). setup ({ ... })
voici tous les paramètres globaux disponibles avec leurs valeurs par défaut
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 = " " ,
}
pour préconfigurer les commandes du terminal pour une utilisation ultérieure
projects = {
-- Yes $HOME works
[ " $HOME/personal/vim-with-me/server " ] = {
term = {
cmds = {
" ./env && npx ts-node src/index.ts "
}
}
}
}
harpoon.log
dans le chemin du cache nvim ( :echo stdpath("cache")
)trace
, debug
, info
, warn
, error
ou fatal
. warn
est la valeur par défautvim.g.harpoon_log_level
(doit être avant setup()
)HARPOON_LOG=debug nvim
a priorité sur vim.g.harpoon_log_level
.warn
. ils ont un objectif similaire, mais les marques de harpon diffèrent sur plusieurs points clés :
Parfois, la largeur par défaut de 60
n’est pas assez large. L'exemple suivant montre comment configurer une largeur personnalisée en définissant la largeur du menu par rapport à la largeur de la fenêtre actuelle.
require ( " harpoon " ). setup ({
menu = {
width = vim . api . nvim_win_get_width ( 0 ) - 4 ,
}
})
Par défaut, la tabline utilisera le thème par défaut de votre thème. Vous pouvez personnaliser en modifiant les points forts suivants :
Exemple pour le rendre plus propre :
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 ' )
Résultat:
Pour toute question sur Harpoon, il existe une chaîne #harpoon sur le serveur Discord de Primeagen.