Vim操作実用事例分析(一):行の先頭または行末に一括して内容を追加する


コードやドキュメントを書くときは、複数行の行頭や行末に同じ内容を追加する必要があります.手動で1行の操作は明らかに効率が低く、便利なテクニックがあります.
ケース1
つかむ
aaa
bbb
ccc

ddd
eee

に改心
# aaa
# bbb
# ccc
# 
# ddd
# eee

注記コードを削除するのはよく使われる操作です.多くの人が操作方法を知っています.直接置き換えればいいです.
:%s/^/# 
#の後ろにスペースがあります.^は行頭の位置のみが一致し、文字は一致しないため、直接置き換えることができます.$も同じです.
また、列選択モード(、またはを使用することもできます.は通常貼り付けに使用されるため、Vimまたは端末でを貼り付け機能にマッピングすることができ、他のソフトウェアと一致すると便利になります).これらの行を選択してI# をスキップするのは不便なので、展開しません.
ケース2
多くの人は空の行の先頭にコメントを追加するのが好きではありません(特に行末にスペースを追加したくない)ので、
aaa
bbb
ccc

ddd
eee

に改心
# aaa
# bbb
# ccc

# ddd
# eee

すべて置換してから削除すると効率が低下することは間違いありません.
:%s/./# &

ポイントは&の使用であり、前に一致した内容(すなわち、空白行ではない最初の文字)を表す.
ケース3
実際のシーンでは、ファイル全体を注釈することはめったにありません.一般的には、注釈の一部です.例えば、
aaa
bbb
ccc

ddd
eee

fff
ggg

hhh
iii

に改心
aaa
bbb
ccc

# ddd
# eee

# fff
# ggg

hhh
iii

今回の操作は5行目から始まります.次の操作は193行から始まるかもしれません.5Gで位置決めしてから操作するのは通用しないに違いありません.便利ではありません.検索で位置決めするのは通常便利です.
:/ddd/,/ggg/s/./# &
:/ddd/,/ggg/は、dddとgggの間に後の操作をのみ作用させることである.
検索で開始行にナビゲートし、後に決定された数行(現在の行と後の4行を注釈する)を注釈する必要がある場合があります.
:/ddd/,+4s/./# &
+4は、その後の4行も作用範囲内に入れることを意味する.行番号をそのまま使う場合は、5,+45,9など、行番号に変更すればいいです.先に再操作を選択し、開始行に位置決めし、次にVを選択し、終了行に位置決めし、:s/./# &を入力すればよいのは、従来の操作であり、言うまでもない.
ケース4
行の最後にセミコロンを追加するなど、コンテンツを追加する場合があります.
aaa
bbb
ccc

ddd
eee

に改心
aaa;
bbb;
ccc;

ddd;
eee;

それは次のように使用できます.
:%s/.$/&;

今回.は空行ではない最後の文字にマッチし、法炮制のようにすればよい.位置決め範囲は、上記のいくつかのケースと同じです.
キーにバインド
このような操作を頻繁に必要とする場合は、コマンドを入力するたびに面倒なので、キーにバインドすることができます.たとえば、次のようにします.
nnoremap c :s/./# &
vnoremap c :s/./# &
デフォルトは\で、あまり押すことができず、多くの人がそれを,にマッピングしました.
let mapleader = ','
nnoremap \ ,

便利になりますから、やってみてください.
これは簡単ですが、汎用性は強くありません.例えば、異なるコード注釈方法が異なり、各注釈方法がボタンにマッピングされるのは明らかに浪費され、不便です.既存のプラグインを使用できます.
vim-commentaryプラグインの使用
注釈コードを削除するのはよくある操作で、すでにプラグインを書いた人がいて、直接使うことができます.
https://github.com/tpope/vim-...
インストール後、gcはコメント(またはコメントの取り消し)操作です.たとえば、gccは現在の行を変更し、gcGは現在の行からファイルの末尾に変更します.プラグインは、一般的なプログラミング言語またはプロファイルを識別したり、カスタムフォーマットを追加したりすることができます.行アノテーションはすべて使用され、ブロックアノテーションは使用されません.たとえば、Cコードは次のように注釈されます.
/* int main() { */

/*     return 0; */
/* } */

もう一度gcを叩くとコメントがキャンセルされるので、使用には影響しません.ブロックコメントを使いたいなら、プラグインを使う必要はありません.2行だけ操作する必要があるからです.
このプラグインは行末にコンテンツを追加することはサポートされていないようですが、カスタム構成で行うことができます.たとえば、次のようになります.
autocmd FileType xxx setlocal commentstring=%s;

アノテーション機能も使えるようにするには、構成を動的に変更したり、キーやコマンドにマッピングしたりする方法を考えなければなりません.
しかし、一般的に行末にコンテンツを追加する操作は一般的ではなく、コマンドを直接使用すればよい.
原文:http://www.mocihan.ml/archive...