serpl
— это приложение пользовательского интерфейса терминала (TUI), которое позволяет пользователям искать и заменять ключевые слова во всей папке, аналогично функциям, доступным в VS Code.
cargo install serpl
cargo install serpl --features ast_grep
serpl
Посетите страницу выпусков для получения последних двоичных файлов.
serpl
можно установить с помощью Homebrew:
brew install serpl
serpl
можно установить из официальных репозиториев с помощью pacman
:
pacman -S serpl
serpl
включен в nixpkgs с 24.11 и может быть установлен через Nix разными способами:
В автономных установках Nix :
nix profile install nixpkgs#serpl
В NixOS (через configuration.nix
или аналогичный):
{ pkgs , ... } : {
environment . systemPackages = [ pkgs . serpl ] ;
}
В Home-Manager :
{ pkgs , ... } : {
home . packages = [ pkgs . serpl ] ;
}
serpl
serpl --project-root /path/to/project
Привязки клавиш по умолчанию можно настроить с помощью файла config.json
.
Комбинация клавиш | Действие |
---|---|
Ctrl + c | Покидать |
Ctrl + b | Помощь |
Tab | Переключение между вкладками |
Backtab | Перейти на предыдущие вкладки |
Ctrl + o | Процесс замены всех файлов |
r | Обработать замену выбранного файла или строки |
Ctrl + n | Переключить режимы поиска и замены |
Enter | Выполнить поиск (для больших папок) |
g / Left / h | Перейти к началу списка |
G / Right / l | Перейти в конец списка |
j / Down | Перейти к следующему элементу |
k / Up | Перейти к предыдущему элементу |
/ | Список результатов поиска |
d | Удалить выбранный файл или строку |
Esc | Выход из текущей панели или диалогового окна |
Enter (в диалогах) / y | Подтвердить действие |
Esc (в диалогах)/ n | Отменить действие |
h , l , Tab (в диалогах) | Навигация по опциям диалогового окна |
serpl
использует файл конфигурации для управления привязками клавиш и другими настройками. По умолчанию путь к файлу конфигурации можно найти, запустив serpl --version
. Для конфигурации вы можете использовать различные форматы файлов, такие как JSON, JSON5, YAML, TOML или 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
Вы можете настроить привязки клавиш, изменив файл конфигурации в выбранном вами формате.
Кончик
Если текущий каталог значительно велик, вам нужно нажать Enter
, чтобы начать поиск.
/
.Ctrl + b
чтобы отобразить диалоговое окно справки.Ctrl + o
чтобы выполнить замену всех файлов.r
для обработки замены выбранного файла или строки.Ctrl + n
для переключения между режимами поиска и замены.g
, G
, j
и k
для навигации по результатам поиска.d
, чтобы удалить выбранный файл или строку. Ознакомьтесь с плагином toggleterm.nvim для Neovim, который предоставляет терминал, который можно переключать с помощью привязки клавиш. Или вы можете использовать следующую конфигурацию, если используете 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 " },
},
}
Этот проект лицензируется по лицензии MIT. Подробности смотрите в файле ЛИЦЕНЗИИ.
(НЗП)