場合によっては、複数の行にわたる特定の視覚的なテキスト ブロックを編集したいことがあります。
たとえば、次のようなテキストがあるとします。
name
comment
phone
email
そして、このように見えるようにします
vendor_name
vendor_comment
vendor_phone
vendor_email
現時点で私がやっている方法は…
- を4 回押してV、ブロックの 4 行すべてを選択します。j
- でインデントします>。
- で1文字戻りますh。
- でブロックビジュアルモードに切り替えますCtrlv。
- 4 回押して 4 行下を選択しますj。この時点で、4x1 の視覚的な空白ブロック (4 行と 1 列) が選択されています。
- を押しますC。1 列分だけ左にインデントされていることに注意してください。
- 引用符なしで「a」と入力します
" vendor_"
。戻さなければならなかった余分なスペースに注意してください。 - を押します。これは、挿入モードを終了するためにEsc使用する非常にまれな方法の 1 つです。最初の行のみを編集します。EscCtrlc
- 手順 1 を繰り返します。
- 反対方向にインデントします<。
単語の前に少なくとも 1 列の空白がある場合は、インデントする必要はありません。 で視覚的なブロックをクリアする必要がなければ、空白は必要ありませんc。
しかし、クリアする必要がある場合、インデントで必要な空白を作成せずに、上記で実行したことを実行する方法はありますか?
また、複数の行を一度に編集するには、Escoverを使用して挿入モードを終了する必要があるのはなぜですかCtrlc?
より複雑な例を次に示します。
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.
テキストの列のみを選択するように制限されています。
ベストアンサー1
- カーソルを に移動し
n
ますname
。 - ビジュアルブロックモード(Ctrlv)に入ります。
- j3回押す3jと(または)3行下に移動します。G(大文字のg)を押すと最後の行に移動します。
I
(大文字のi)を押します。- と入力します
vendor_
。注: が押されるまでは、画面の最初の行のみが更新されますEsc(6.)。 が押された時点で、すべての行が更新されます。 - プレスEsc。
小文字は文字列の始まりとして解釈されるためI
、小文字ではなく大文字を使用する必要があります。i
i
テキストオブジェクトこれは、タグブロック内の選択など、それ自体でも非常に便利です(it
):