[解決済み】Vim:複数行に渡って同じ文字を挿入する
2022-03-24 06:49:43
質問
あるビジュアルブロックのテキストを複数行に渡って編集したいことがあります。
例えば、こんな文章を取り上げます。
name
comment
phone
email
そして、次のように見えるようにします。
vendor_name
vendor_comment
vendor_phone
vendor_email
現在、私が行う方法は...
- ブロックの4つの行をすべて選択して V と入力し j を4回。
- でインデントします。 > .
- で1文字戻る h .
- でブロックビジュアルモードに移行します。 Ctrl v .
- を押して4行下まで選択します。 j を4回実行します。この時点で、4x1の視覚的な空白ブロック(4行と1列)を選択したことになります。
- 押す C . このようにかなり1列分左にインデントされていることに注目してください。
-
を入力します。
" vendor_"
を引用符で囲まないでください。余分なスペースを戻さなければならないことに注意してください。 - プレス エスケープ . を使う数少ない機会です。 エスケープ で挿入モードを解除します。 Ctrl c は1行目だけを編集します。
- 手順1を繰り返す。
- で反対方向にインデントします。 <です。 .
言葉の前に少なくとも1列の空白があれば、インデントする必要はないんです。でビジュアルブロックをクリアする必要がなければ、空白は必要ありません。 c .
しかし、もし私がクリアしなければならないとしたら、インデントで必要な空白を作らずに、上で実行したことを行う方法はあるのでしょうか?
また、複数行の同時編集は、なぜ挿入モードから エスケープ オーバー Ctrl c ?
さらに複雑な例を挙げます。
name = models.CharField( max_length = 135 )
comment = models.TextField( blank = True )
phone = models.CharField( max_length = 135, blank = True )
email = models.EmailField( blank = True )
になります。
name = models.whatever.CharField( max_length = 135 )
comment = models.whatever.TextField( blank = True )
phone = models.whatever.CharField( max_length = 135, blank = True )
email = models.whatever.EmailField( blank = True )
この例では、垂直方向のビジュアルブロックを
.
と入力し、挿入モードで再び挿入する。
.whatever.
. この方法の欠点がおわかりいただけたでしょうか。テキストの列を選択するだけという制限があるのです。
縦位置ですべて同じであるもの
.
どのように解決するのですか?
-
にカーソルを移動します。
n
でname
. - ビジュアルブロックモードに入る( Ctrl v ).
- プレス j を3回(または 3j で3行下にジャンプします。 G (大文字のg)で最終行にジャンプします。
-
押す
I
(大文字のi)で始まる。 -
で入力します。
vendor_
. 注:画面を更新するのは 最初 行目まで エスケープ が押されると(6.)、すべての行が更新されます。 - 押す エスケープ .
大文字
I
は小文字ではなく、必ず
i
というのは、小文字の
i
の開始と解釈されます。
テキストオブジェクト
これは、タグブロック内を選択する場合など、それ自体でかなり有用です (
it
):
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] viで複数行を素早くインデントする
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] Vimのマッピングコマンドであるremap, noremap, nnoremap, vnoremapの違いは何ですか?
-
[解決済み] Vim 空白行の削除
-
[解決済み] Vimのコマンドラインにヤンクのテキストを貼り付ける方法
-
[解決済み] vimで複数行の文字列を検索・置換する
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
-
[解決済み] Vimで複数行の編集を繰り返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Vimでクリップボードにコピーする方法は?
-
[解決済み】Vimでファイル名を通常の(Bashのような)タブ補完にするにはどうしたらいいですか?
-
[解決済み】vimで、検索前にいた場所に戻るにはどうしたらいいですか?
-
[解決済み】vimでファイルの最初の行に移動する?
-
[解決済み】VIMアプリケーションを終了させずにファイルを閉じる?
-
[解決済み】ある行より上のテキストをすべて削除する方法
-
[解決済み】NERDTreeが新しいファイルを再読み込みする。
-
[解決済み】Vimでブラケット(またはクォート、...)の間を選択する方法は?
-
[解決済み】viを無理やりマスターするのに最適な方法とは?[クローズド]
-
[解決済み】Vimのタブサイズを変更する方法は?