当たり前かもしれないが。面倒。
問題
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 + カーソルキーで選択できるので早い。削除もインデントも同様。