Vimのキーボードマクロ機能

テキストエディタ―には便利なキーボードマクロ機能(キーボード押下を記憶させて繰り返し呼び出す)がありますがVimにも備わっています。
コマンドを覚えればかなり簡単に使えるので便利です。

Vimの場合、マークと同様に任意のアルファベットに記録できます。

たとえば「a」にマクロを記録しないなら、

で記録開始

(適当にキー操作)

で記録終了

で実行

などで繰り返し実行もできます。

【Linux】viで複数行をコピーする

viで1行コピーするのは

でコピーして

で貼り付けるだけなので簡単です。

複数行のコピーも、数行程度なら行数が分かるので

(カーソル位置から下に5行分をコピー)
という感じで簡単です。

では行数が簡単に数えられないくらいの行をコピーするには?

そんなときはブックマーク機能(mコマンド)を使ってコピーしましょう。

まずコピーしたい最初の行にカーソルを持っていき、任意のアルファベットでマークします。

(aというマーク)

次にコピーしたい最後の行にカーソルを持っていき、別のアルファベットでマークします。

(bというマーク)

あとは、コマンドモードで以下のコマンドを打ちます。

最初と最後のマークをカンマ区切りで呼び出してy(ヤンク)
なので、viのコマンドとしては分かりやすい方かと思います。

貼付けは1行のときと同じように、貼り付けたい場所で

を押すだけです。

【Linux】viでペーストしたソースコードのインデントやコメントが崩れる

viには標準で自動インデントや自動コメント行の機能がありますが、
その弊害として、インデントやコメントを含むコードを
クリップボードからペーストしたときにもその機能が実行されて
コードが崩れてしまうことがあります。

私の場合はJavaScriptのコードで

によるコメントが含まれていると次の行もコメントになり、
ペーストしたコードが盛大に崩れてしまうことがよくありました。

しかし、さすがはvi。
.vimrcに以下のプログラムを書けばこの問題を回避できます。

【Linux】viで全角記号があるとおかしくなる問題を修正

viで「●」などの全角記号が含まれるテキストを編集していると
おかしくなったことはありませんか?

全角文字なのにカーソルの幅が半角文字分になっていて
その行の編集が大変だったり。

以下の設定で解決できます。

~/.vimrc を開いて

を追加して保存します。

【Linux】viで複数行を一括削除

viではブックマーク機能(mコマンド)を使って複数行を一括削除できます。

まず、削除したい最初の行と最後の行にマークをつけます。
マークをつけるのはmを押した後、任意のアルファベットですから、
たとえば最初の行で

と打ち、最後の行で

と打ちます。

次にコロンを打ってコマンドモードにして、

と打ちます。
「’最初のマーク,’最後のマークd」ですからわかりやすいですね。
これでaというマークを付けた行から
bというマークを付けた行までが一括削除されます。