Vim 複数ファイルを対象にいい感じにreplaceを実行したい
code:.vimrc
" replace in quickfix
function! Replace()
let before = input('from ') call inputrestore()
call inputsave()
let after = input('from ' . before . ' to ') call inputrestore()
execute ':cfdo :%s/' . before . '/' . after . '/g | :w | :ccl'
endfunction
nnoremap <C-r> :call Replace()<CR>
fzfのウィンドウが開いた状態でTab(or Shift-Tab)をすると複数選択でき、Enterを押すとQuickfixウィンドウに一覧がでる 以下設定
code:.vimrc
command! -bang -nargs=* Rg
\ call fzf#vim#grep(
\ 'rg --column --line-number --no-heading --color=always --smart-case -- '.shellescape(<q-args>), 1,
\ fzf#vim#with_preview(), <bang>0)
nnoremap <C-g> :Rg<Space>
cfdoはQuickfix内のテキストに対して操作を行うコマンド TODO
Rgでの対象の選択方法
対象のテキストをファイル選択せず一括でreplace
対象箇所がinteractiveに見れると良い
ファイルの細かい箇所ではなく、ファイル単位で選択
選択はファイルの位置だがreplaceはファイル単位で実行されるので直す
[from] [to]がださいのでもっといい感じに