serpl
adalah aplikasi antarmuka pengguna terminal (TUI) yang memungkinkan pengguna mencari dan mengganti kata kunci di seluruh folder, mirip dengan fungsi yang tersedia di VS Code.
cargo install serpl
cargo install serpl --features ast_grep
serpl
Periksa halaman rilis untuk biner terbaru.
serpl
dapat diinstal menggunakan Homebrew:
brew install serpl
serpl
dapat diinstal dari repositori resmi menggunakan pacman
:
pacman -S serpl
serpl
disertakan dalam nixpkgs sejak 24.11, dan dapat diinstal melalui Nix dengan berbagai cara:
Pada pengaturan Nix mandiri :
nix profile install nixpkgs#serpl
Di NixOS (melalui configuration.nix
atau serupa):
{ pkgs , ... } : {
environment . systemPackages = [ pkgs . serpl ] ;
}
Di Manajer Rumah :
{ pkgs , ... } : {
home . packages = [ pkgs . serpl ] ;
}
serpl
serpl --project-root /path/to/project
Pengikatan kunci default dapat dikustomisasi melalui file config.json
.
Kombinasi Kunci | Tindakan |
---|---|
Ctrl + c | Berhenti |
Ctrl + b | Membantu |
Tab | Beralih antar tab |
Backtab | Beralih ke tab sebelumnya |
Ctrl + o | Proses penggantian untuk semua file |
r | Proses penggantian untuk file atau baris yang dipilih |
Ctrl + n | Alihkan mode pencarian dan penggantian |
Enter | Jalankan pencarian (untuk folder besar) |
g / Left / h | Pergi ke bagian atas daftar |
G / Right / l | Pergi ke bagian bawah daftar |
j / Down | Pindah ke item berikutnya |
k / Up | Pindah ke item sebelumnya |
/ | Daftar hasil pencarian |
d | Hapus file atau baris yang dipilih |
Esc | Keluar dari panel atau dialog saat ini |
Enter (dalam dialog) / y | Konfirmasikan tindakan |
Esc (dalam dialog) / n | Batalkan tindakan |
h , l , Tab (dalam dialog) | Navigasi opsi dialog |
serpl
menggunakan file konfigurasi untuk mengelola pengikatan kunci dan pengaturan lainnya. Secara default, jalur ke file konfigurasi dapat ditemukan dengan menjalankan serpl --version
. Anda dapat menggunakan berbagai format file untuk konfigurasinya, seperti JSON, JSON5, YAML, TOML, atau 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
Anda dapat menyesuaikan pengikatan kunci dengan memodifikasi file konfigurasi dalam format pilihan Anda.
Tip
Jika direktori saat ini cukup besar, Anda harus mengklik Enter
untuk memulai pencarian.
/
.Ctrl + b
untuk menampilkan dialog bantuan.Ctrl + o
untuk memproses penggantian semua file.r
untuk memproses penggantian file atau baris yang dipilih.Ctrl + n
untuk beralih antara mode pencarian dan penggantian.g
, G
, j
, dan k
untuk menavigasi hasil pencarian.d
untuk menghapus file atau baris yang dipilih. Lihat plugin toggleterm.nvim untuk Neovim, yang menyediakan terminal yang dapat diaktifkan dengan pengikatan kunci. Atau Anda dapat menggunakan konfigurasi berikut, jika Anda menggunakan 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 " },
},
}
Proyek ini dilisensikan di bawah Lisensi MIT. Lihat file LISENSI untuk detailnya.
(WIP)