2024.01.31
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
はじめに
今回は僕が一番好きなVimコマンド、.(ドット)コマンドを紹介したいとおもいます。
Vimってhjklでカーソル移動して、iで文字入力モード、で通常モード「:wq」で保存して終了する
なんだかわからなくて操作するのが怖いエディタだよねっていう方対象です。
ある程度知っている人はそれほど新しい発見はないと思います。
.コマンドとは
Vimドキュメントには.コマンドの説明に「最後の編集を N 回繰り返す。」とあります。
最後の編集というところがミソで、さまざまな編集に対応できるというところが.コマンドの魅力です。
.コマンドの使い方
test
カーソル位置が先頭のtの状況で「x」を入力すると
est
となり、カーソル位置であった、先頭のtが消えます。
eがカーソル一の状態で「.」を押すと、eが消えます。
最後の編集がxになっているからです。
st
「N 回繰り返す」のN回は.の前に数字を入力すると、
その回数だけ繰り返されます。
st
カーソル位置が先頭の状況で「2.」と入力すると、
2回カーソル位置の文字を消すので、文字が消えた状態になります。
ここまでではxを.に置き換えただけなので、.コマンドを使う旨みがありません。
お得な.コマンド
使用例1
test1
test2
test3
1行目にカーソルがある状況で「dd」と入力すると一行目が消えます。
test2
test3
続けて、test2にカーソルがある状況で「.」と入力すると
test3
となり、「dd」と入力するのと比較すると、押すキーの数が一つ少なくなりました。
使用例2
This mountain is higher than that one.
一つ目のmountainのどこかにカーソルがある状況で、
「daw」と入力すると、
This is higher than that one.
になり、「.」を入力すると以下のようになります。
This higher than that one.
押すキーの数が二つ少なくなりますね。
使用例3
$string = "(arg1: "+$user+"arg2: "+$shop+")"
カーソル位置が先頭の状態で、「f+」と入力し、+までカーソルを移動し、
「s<Space>+<Space><Esc>」と入力する(<Space>はスペースキー、<Esc>はエスケープキー)と
$string = "(arg1: " + $user+"arg2: "+$shop+")"
カーソル位置の文字が消えて、インサートモードで「 + 」が入力され、↑のようになります。
次に「;」で最後のfを再度行い、「.」で次の+の前後に空白が入ります。
$string = "(arg1: " + $user + "arg2: "+$shop+")"
「;」「.」「;」「.」
$string = "(arg1: " + $user + "arg2: " + $shop + ")"
.コマンド一回につき4キー分お得ですね!
※使用例3のような場合、数が多ければ置換でもいいと思いますが、.コマンドの汎用性の高さを示したかったので。
おわりに
編集の方法は他にもあるので、それらを身につけて、
一回の編集を意味のある一つの塊にまとめる力がつけば、
.コマンドは汎用的に使えて便利です。
打つキー数を少なくして編集できるようになるので、ぜひ使ってみてください!