時々、複数の行にまたがるテキストの特定の視覚的なブロックを編集したい。
たとえば、次のようなテキストを使用します。
name
comment
phone
email
そして、それをこのように見せます
vendor_name
vendor_comment
vendor_phone
vendor_email
現在私が今それを行う方法は...
- を押しVてからj4回押して、ブロックの4行すべてを選択します。
- でインデントし>ます。
- で1文字戻りhます。
- でビジュアルモードをブロックしますCtrlv。
- をj4回押して、4行下を選択します。この時点で、空白の4x1ビジュアルブロック(4行と1列)を選択しています。
- を押しCます。これは、左に1列インデントされていることに注意してください。
" vendor_"
引用符なしで入力します。元に戻す必要がある余分なスペースに注意してください。- を押しEscます。これはEsc、挿入モードを終了するために使用する非常に数少ない時間の1つです。Ctrlc最初の行だけを編集します。
- 手順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.
ます。うまくいけば、今あなたはこの方法の欠点を見ることができます。私は、垂直位置ですべて同じであるテキストの列のみを選択することに制限されています。
:s/models\./\0whatever./