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>
コメント