serpl
est une application d'interface utilisateur de terminal (TUI) qui permet aux utilisateurs de rechercher et de remplacer des mots-clés dans un dossier entier, similaire à la fonctionnalité disponible dans VS Code.
cargo install serpl
cargo install serpl --features ast_grep
serpl
Consultez la page des versions pour les derniers binaires.
serpl
peut être installé en utilisant Homebrew :
brew install serpl
serpl
peut être installé à partir des dépôts officiels en utilisant pacman
:
pacman -S serpl
serpl
est inclus dans nixpkgs depuis 24.11, et peut être installé via Nix de différentes manières :
Sur les configurations Nix autonomes :
nix profile install nixpkgs#serpl
Sur NixOS (via configuration.nix
ou similaire) :
{ pkgs , ... } : {
environment . systemPackages = [ pkgs . serpl ] ;
}
Sur Home-Manager :
{ pkgs , ... } : {
home . packages = [ pkgs . serpl ] ;
}
serpl
serpl --project-root /path/to/project
Les raccourcis clavier par défaut peuvent être personnalisés via le fichier config.json
.
Combinaison de touches | Action |
---|---|
Ctrl + c | Quitter |
Ctrl + b | Aide |
Tab | Basculer entre les onglets |
Backtab | Passer aux onglets précédents |
Ctrl + o | Processus de remplacement pour tous les fichiers |
r | Processus de remplacement pour le fichier ou la ligne sélectionné |
Ctrl + n | Basculer les modes de recherche et de remplacement |
Enter | Exécuter la recherche (pour les gros dossiers) |
g / Left / h | Aller en haut de la liste |
G / Right / l | Aller en bas de la liste |
j / Down | Passer à l'élément suivant |
k / Up | Passer à l'élément précédent |
/ | Liste des résultats de recherche |
d | Supprimer le fichier ou la ligne sélectionné |
Esc | Quitter le volet ou la boîte de dialogue actuel |
Enter (dans les boîtes de dialogue) / y | Confirmer l'action |
Esc (dans les boîtes de dialogue) / n | Annuler l'action |
h , l , Tab (dans les boîtes de dialogue) | Parcourir les options de la boîte de dialogue |
serpl
utilise un fichier de configuration pour gérer les raccourcis clavier et autres paramètres. Par défaut, le chemin d'accès au fichier de configuration peut être trouvé en exécutant serpl --version
. Vous pouvez utiliser différents formats de fichiers pour la configuration, tels que JSON, JSON5, YAML, TOML ou INI.
{
"keybindings" : {
"<Ctrl-d>" : " Quit " ,
"<Ctrl-c>" : " Quit " ,
"<Tab>" : " LoopOverTabs " ,
"<Backtab>" : " BackLoopOverTabs " ,
"<Ctrl-o>" : " ProcessReplace " ,
"<Ctrl-b>" : " ShowHelp "
}
}
{
keybindings : {
"<Ctrl-d>" : "Quit" ,
"<Ctrl-c>" : "Quit" ,
"<Tab>" : "LoopOverTabs" ,
"<Backtab>" : "BackLoopOverTabs" ,
"<Ctrl-o>" : "ProcessReplace" ,
"<Ctrl-b>" : "ShowHelp" ,
} ,
}
keybindings :
" <Ctrl-d> " : " Quit "
" <Ctrl-c> " : " Quit "
" <Tab> " : " LoopOverTabs "
" <Backtab> " : " BackLoopOverTabs "
" <Ctrl-o> " : " ProcessReplace "
" <Ctrl-b> " : " ShowHelp "
[ keybindings ]
"<Ctrl-d>" = " Quit "
"<Ctrl-c>" = " Quit "
"<Tab>" = " LoopOverTabs "
"<Backtab>" = " BackLoopOverTabs "
"<Ctrl-o>" = " ProcessReplace "
"<Ctrl-b>" = " ShowHelp "
[keybindings]
<Ctrl-d> = Quit
<Ctrl-c> = Quit
<Tab> = LoopOverTabs
<Backtab> = BackLoopOverTabs
<Ctrl-o> = ProcessReplace
<Ctrl-b> = ShowHelp
Vous pouvez personnaliser les raccourcis clavier en modifiant le fichier de configuration au format de votre choix.
Conseil
Si le répertoire actuel est considérablement volumineux, vous devez cliquer sur Enter
pour lancer la recherche.
/
.Ctrl + b
pour afficher la boîte de dialogue d'aide.Ctrl + o
pour traiter le remplacement de tous les fichiers.r
pour traiter le remplacement du fichier ou de la ligne sélectionné.Ctrl + n
pour basculer entre les modes de recherche et de remplacement.g
, G
, j
et k
pour parcourir les résultats de la recherche.d
pour supprimer le fichier ou la ligne sélectionnée. Découvrez le plugin toggleterm.nvim pour Neovim, qui fournit un terminal qui peut être basculé avec une liaison de clé. Ou vous pouvez utiliser la configuration suivante, si vous utilisez AstroNvim :
return {
" akinsho/toggleterm.nvim " ,
cmd = { " ToggleTerm " , " TermExec " },
dependencies = {
{
" AstroNvim/astrocore " ,
opts = function ( _ , opts )
local maps = opts . mappings
local astro = require " astrocore "
maps . n [ " <Leader>t " ] = vim . tbl_get ( opts , " _map_sections " , " t " )
local serpl = {
callback = function ()
astro . toggle_term_cmd " serpl "
end ,
desc = " ToggleTerm serpl " ,
}
maps . n [ " <Leader>sr " ] = { serpl . callback , desc = serpl . desc }
maps . n [ " <Leader>tf " ] = { " <Cmd>ToggleTerm direction=float<CR> " , desc = " ToggleTerm float " }
maps . n [ " <Leader>th " ] = { " <Cmd>ToggleTerm size=10 direction=horizontal<CR> " , desc = " ToggleTerm horizontal split " }
maps . n [ " <Leader>tv " ] = { " <Cmd>ToggleTerm size=80 direction=vertical<CR> " , desc = " ToggleTerm vertical split " }
maps . n [ " <F7> " ] = { ' <Cmd>execute v:count . "ToggleTerm"<CR> ' , desc = " Toggle terminal " }
maps . t [ " <F7> " ] = { " <Cmd>ToggleTerm<CR> " , desc = " Toggle terminal " }
maps . i [ " <F7> " ] = { " <Esc><Cmd>ToggleTerm<CR> " , desc = " Toggle terminal " }
maps . n [ " <C-'> " ] = { ' <Cmd>execute v:count . "ToggleTerm"<CR> ' , desc = " Toggle terminal " }
maps . t [ " <C-'> " ] = { " <Cmd>ToggleTerm<CR> " , desc = " Toggle terminal " }
maps . i [ " <C-'> " ] = { " <Esc><Cmd>ToggleTerm<CR> " , desc = " Toggle terminal " }
end ,
},
},
opts = {
highlights = {
Normal = { link = " Normal " },
NormalNC = { link = " NormalNC " },
NormalFloat = { link = " NormalFloat " },
FloatBorder = { link = " FloatBorder " },
StatusLine = { link = " StatusLine " },
StatusLineNC = { link = " StatusLineNC " },
WinBar = { link = " WinBar " },
WinBarNC = { link = " WinBarNC " },
},
size = 10 ,
--- @param t Terminal
on_create = function ( t )
vim . opt_local . foldcolumn = " 0 "
vim . opt_local . signcolumn = " no "
if t . hidden then
local toggle = function () t : toggle () end
vim . keymap . set ({ " n " , " t " , " i " }, " <C-'> " , toggle , { desc = " Toggle terminal " , buffer = t . bufnr })
vim . keymap . set ({ " n " , " t " , " i " }, " <F7> " , toggle , { desc = " Toggle terminal " , buffer = t . bufnr })
end
end ,
shading_factor = 2 ,
direction = " float " ,
float_opts = { border = " rounded " },
},
}
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
(en-cours)