これは何?
最近コードを実装するにあたって、不便に感じたことを Vim で解決する記事
- 主に自分のリマインド用
単語をレジスタに格納している文字列と置換したい
- ye : 単語のヤンク(eは、スペースより前で止まる。wは、次の単語まで移動する)
- vep : 単語の選択後そこにペースト
カーソル上の単語選択
- viw → i : inner w : 単語選択
- yiw → 単語ヤンク
- uiE → 空白区切りヤンク
- vi" → i : inner " : ダブルクォートの中身を選択
- va" → a : a : ダブルクォートを含んだ検索
ダブルクォートの中をレジスタと置換
- vi"p : ダブルクォートの中身を選択した後、ペースト
選択した単語をレジスタに格納している文字列に一括置換
以下を .vimrc に設定
" s*でカーソル下のキーワードを置換nnoremap<expr>s* ':%s/\<' . expand('<cword>') . '\>/'vnoremap<expr>s* ':s/\<' . expand('<cword>') . '\>/'
*s の後に <C-R>" する
:%s/\<word\>/ここにペーストされる
現在のファイルのカレントディレクトリからの相対パスをコピーする
CopyPathは、ファイル名と、絶対Pathだけなので BTS 等 にファイル名をコピーする時等に不便
command! CopyRelativePath
\ let @*=join(remove( split( expand('%:p'),"/"), len( split( getcwd(),"/")),-1),"/")| echo "copied"
:CopyRelativePath
- ../ とかでカレントディレクトリの外に出ているファイルの場合正しく動作しない
- もっと良い方法がある気がする