Vim で、選択範囲の各行の先頭に文字を挿入する方法を教えてください。
たとえば、各行の先頭に//
を前に付けてコードブロックをコメントアウトしたいとしましょう(私の言語のコメントシステムでは、/* */
のようなブロックコメントを許可していないと仮定します)。どのようにこれをしますか?
詳しい情報と読み方については、 vim wikiに関するこの関連記事 を調べてください。
これは、各行の先頭を "//"に置き換えます。
:%s!^!//!
これは各選択行(視覚モードを使って選択)の先頭を "//"に置き換えます。
:'<,'>s!^!//!
注(通常モードでは)gv
は最後の視覚的選択を復元します。これは時々役に立ちます。
検索と置換の一般的なパターンは次のとおりです。
:s/search/replace/
現在行の最初の 'search'を 'replace'に置き換えます
:s/search/replace/g
現在行のすべての 'search'を 'replace'に置き換えます。 'g'は 'global'の短縮形です
このコマンドは、現在の行についてのみ、 'search'の各出現箇所を 'replace'に置き換えます。 %はファイル全体を検索するために使用されます。各置き換えを対話的に確認するには、確認のために 'c'を追加します。
:%s/search/replace/c
対話形式でファイル全体の 'search'を 'replace'に置き換えます
%文字の代わりに、行番号の範囲を使用することができます( '^'文字は、行の先頭を表す特別な検索文字です)。
:14,20s/^/#/
14〜20行目の先頭に '#'文字を挿入します
別のコメント文字(//など)を使用したい場合は、コマンドの区切り文字を変更してください。
:14,20s!^!//!
14行目から20行目の先頭に '//'文字シーケンスを挿入します
あるいは、//のように常にエスケープすることもできます。
:14,20s/^/\/\//
14行目から20行目の先頭に '//'文字シーケンスを挿入します
エディタに行番号が表示されていない場合は、単に次のように入力してください。
:set nu
初心者にとってより簡単かもしれないもう一つの方法:
some█
code
here
最初の行にカーソルを置きます。によって
:1Enter
次のように入力して挿入モードに入り、テキストを追加します。
I//Space
// █some
code
here
押す Esc コマンドモードに戻って有向グラフを使うには:
j.j.
// some
// code
//█here
j 1行下がるモーションコマンドです。 . 最後に行った編集コマンドを繰り返します。
そしてもう一つの方法:
これは各行の先頭に#
を追加します。
:%s/^/#/
そして、人々はあなたが適切にスクリプトをコメントすることの欠如について不平を言うのをやめるでしょう。
あなたがそれについて超空想を得たいならば、あなたの.vimrcにこれを入れてください:
vmap \c :s!^!//!<CR>
vmap \u :s!^//!!<CR>
その後、ビジュアルモードでいつでも\c
を押してcブロックを削除し、\u
をuncommentにすることができます。もちろん、これらのショートカットキーストロークを任意のものに変更できます。
さらに別の方法:
:'<,'>g/^/norm I//
/^/
は、すべての行に一致させるための単なるダミーパターンです。 norm
を使用すると、その後に続く通常モードのコマンドを実行できます。 I//
は、カーソルを行の先頭に移動しながらinsert-modeに入るように指示してから、次のテキスト(2つのスラッシュ)を挿入します。
:g
は、複数のモードを切り替えたり、行を削除または追加したり、カーソルを移動したり、たくさんのマクロを実行したりしたい場合など、複数行で複雑な操作を行うのに便利です。それはパターンにマッチします。
コードブロックをコメントするためには、 NERD Commenter プラグインが好きです。
テキストを選択してください:
Shift-V
...select the lines of text you want to comment....
コメント:
,cc
コメント解除:
,cu
あるいは単に行やブロックのコメント状態を切り替えるだけです:
,c<space>
EnhCommentify プラグインをお勧めします。
例えば。これをあなたのvimrcに置いてください。
let maplocalleader=','
vmap <silent> <LocalLeader>c <Plug>VisualTraditional
nmap <silent> <LocalLeader>c <Plug>Traditional
let g:EnhCommentifyBindInInsert = 'No'
let g:EnhCommentifyMultiPartBlocks = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyUseBlockIndent = 'Yes'
(選択した)行を '、c'でコメント/コメント解除することができます
誰かの複数行選択が実際に段落である場合、手動で行を選択する必要はありません。 vimはあなたのためにそれを行うことができます:
vip
:段落全体を選択してマークするshift-i
:行の先頭にテキストを挿入escape
:挿入モードのままにする/通常モードに入る[行頭が選択されたまま]escape
:行の始まりの選択を解除しますコメント対象の領域を視覚的ブロックとしてマークする(<C-V
)
そしてc#<ESC>p
を実行
c
を "#"に変更頻繁に行う場合は、.vimrcにショートカット(例:\q
)を定義してください。
:vmap \q c#<ESC>p
各行の先頭に "ABC"を挿入するには
1)コマンドモードに入る
2):ABCにおける%norm