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 の toggleterm.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)