serpl
เป็นแอปพลิเคชัน Terminal User Interface (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 ] ;
}
บนผู้จัดการบ้าน :
{ 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
เพื่อลบไฟล์หรือบรรทัดที่เลือก ลองดูปลั๊กอินสลับคำ.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 ดูไฟล์ใบอนุญาตสำหรับรายละเอียด
(งานระหว่างดำเนินการ)