vimメモ
「こいつぁ…」ってなったら書き足していきます。
「邪魔だな…」って思ったら消すこともあります。
コピペで貼っつけた「この一単語だけ」〇〇ケースから☓☓ケースに変えたい!
neovimならinit.vimに、vimだと.vimrcかな?(未確認)
1
2
3
4
5
6
7
8
9
10
11
12
"キャメルケースをスネークケース
nnoremap <C-c><C-s> ma<C-v>iw:s/\%V\([A-Z]\)/_\l\1/g<CR>`a
"キャメルケースをパスカルケース
nnoremap <C-c><C-p> ma<C-v>iw:s/\%V\([a-z]\)/\u\1/<CR>`a
"スネークケースをキャメルケース
nnoremap <C-s><C-c> ma<C-v>iw:s/\%V_\([a-z]\)/\u\1/g<CR>`a
"スネークケースをパスカルケース
nnoremap <C-s><C-p> ma <C-v>iw:s/\%V\([a-z]\)/\u\1/<CR>`a <C-v>iw:s/\%V_\([a-z]\)/\u\1/g<CR>`a
"パスカルケースをキャメルケース
nnoremap <C-p><C-c> ma<C-v>iw:s/\%V\([A-Z]\)/\l\1/<CR>`a
"パスカルケースをスネークケース
nnoremap <C-p><C-s> ma<C-v>iw:s/\%V\([A-Z]\)/\l\1/<CR>`a <C-v>iw:s/\%V\([A-Z]\)/_\l\1/g<CR>`a
例えば
キャメルケースにカーソル置いて<Ctrl + C> -> <Ctrl + s>すればそこだけスネークケースに
まとめて変えたいときは普通に置換したほうが早いので* -> ://snake_case/gでしょうか
コマンドモードで q1 した後、なんか操作するとその内容を記録する
1は他の数字や文字でも良い
コマンドモードで q
コマンドモードで @1 (qa で記録したときは @a )100@1 で 100回繰り返す
コマンドモードで :e ++enc=shift_jis
入力モードで ctrl + v
モード(n進数)を選択
入力
| モード | n進数 | 桁数 | 備考 |
|---|---|---|---|
| o | 8 | 3 | Oでも可 (000 ~ 377) |
| x | 16 | 2 | Xでも可 (00 ~ ff) |
| u | 16 | 4 | (0000 ~ ffff) |
| U | 16 | 8 | (00000000 ~ 7fffffff) |
| 他 | 10 | 3 | (000 ~ 255) |
コマンドモードで ctrl+z
shellコンソールで fg
| key | |
|---|---|
| f | 探したい文字を入力すると、その文字の位置まで移動 |
| w | 次の単語の先頭に移動 |
| b | 単語の先頭、または前の単語にカーソル移動 |
| e | 単語の終端文字に移動 |
調べたい文字にカーソルを当てて ga
コマンドモードで /検索したい文字列
charcodeで検索したければ \%u をつける
半角スペースなら /\%u20
JSON形式の文字のインデントを整えてくれる
!% jq
jqが入ってないとダメ。なければ brew install jq
brewのインストールはググる
ファイル全体で置換
:%s/検索文字列/置換文字列/オプション
ファイル内の半角スペースを全部削除したければ :%s/\%u20//g
普通に :%s/ //g でもいい
※gオプションいらなさそう
(行)範囲を指定して置換
:10,20s/foo/bar/
確認しながら置換
:%s/検索文字列/置換文字列/gc とすると都度xxx に置換しますか? (y/n/a/q/l/^E/^Y)と聞いてくるので
| key | |
|---|---|
| y | 置換して次の単語へ移動 |
| n | 置換しないで次の単語へ移動 |
| a | 現在の単語を含みすべて置換 |
| q | 置換しないで終了 |
| ESC | 置換しないで終了 |
| l | 置換して終了 |
| Ctrl+e | 下に一行スクロール |
| Ctrl+y | 上に一行スクロール |
現在の行で置換
:s/foo/bar/
foo/bar/foo
今選択している範囲だけで置換
\%V キモはコレ!
例えば foo_bar_foo の最後の foo だけ Foo にしたければ
最後のfooをVisualモードで選択して :s/\%Vf/F/ とする。
キャメルケースからパスカルケースへの変換キーマップなどで使ってます
\{-}
マッチした文字セットを変数に代入するのは \(.\{-}\)
...囲うカッコにエスケープが必要
変数は\1,\2... と順番に\nに代入される
最初のタブで2つに区切って前後を入れ替えたければ
:%s/^\(.\{-}\)\t\(.*\)/\2\t\1/g こんな感じ
\{n,}
\{n}
\_.
例えば以下のdivブロックにマッチさせたければ /<div>\_.\{-}<\/div>
1
2
3
4
5
6
7
<div>
<p>hoge</p>
</div>
<div>
<p>fuga</p>
</div>
コメント