当たり前かもしれないが。面倒。
問題
before
def A(): if True: print('A') print('B') print('C')
after
def A(): print('B') print('C')
beforeをafterにしたいのだが、以下のように操作すると残念な結果になる。
v
でビジュアルモードにするif .. print('A')\n
までを選択するj
$
(Shift + 4
)
- 以下のようにインデントが崩れてしまう
def A(): print('B') print('C')
\n
を含めず削除すれば、と思ったが余計な空白が残る。
def A(): print('B') print('C')
だからといって、dd
で削除するのも。削除する行数分*2回もd
キー押下せねばならないし、インデントがそのまま。10行分削除やインデントするとき、どうすんの?
def A(): print('B') print('C')
どうするのが最短? どうすれば覚えるのを最小化できる? 総合的に楽なのは?
解決
ビジュアル行モードを使う。
3種類のビジュアルモード
コマンド | モード名 | 説明 |
---|---|---|
v |
ビジュアル | 指定インデックスの文字を選択する |
Shift + v |
ビジュアル行 | 指定行を選択する |
Ctrl + v |
ビジュアル矩形 | 指定列を選択する |
じつは3種類もあった。これらを理解し、使い分ける必要がある...。
手順
if ..
の行でノーマルモード時、Shift + v
キー押下するビジュアル行モード
になるj
キー押下でprint('A')
選択Del
キー押下で削除するShift + v
j
<
でインデントを下げる
なお、.
で直前のコマンドを実行できる。インデントを複数下げたければ.
。
一体どこが省略できているのかって? $
で列移動しなくて済んだじゃないか。たったそれだけ? ...。
とても最短には見えないが...。ほかに方法はあるのか?
VimScriptなどに手を染めたら、さらなる学習コスト増大とバグ祭りの憂き目に合いそうで嫌。
GUIエディタのほうが圧倒的に早いのですが
GUIエディタならShift + カーソルキー
で選択できるので早い。削除もインデントも同様。