serpl
VS Code에서 사용할 수 있는 기능과 유사하게 사용자가 전체 폴더에서 키워드를 검색하고 바꿀 수 있는 TUI(터미널 사용자 인터페이스) 애플리케이션입니다.
cargo install serpl
cargo install serpl --features ast_grep
serpl
최신 바이너리는 릴리스 페이지를 확인하세요.
serpl
Homebrew를 사용하여 설치할 수 있습니다.
brew install serpl
serpl
pacman
사용하여 공식 저장소에서 설치할 수 있습니다.
pacman -S serpl
serpl
은 24.11부터 nixpkgs에 포함되어 있으며 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
키를 사용하세요. 키 바인딩으로 전환할 수 있는 터미널을 제공하는 Neovim용ggleterm.nvim 플러그인을 확인하세요. 또는 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 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
(WIP)