当たり前かもしれないが。面倒。
問題
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 + vj<でインデントを下げる
なお、.で直前のコマンドを実行できる。インデントを複数下げたければ.。
一体どこが省略できているのかって? $で列移動しなくて済んだじゃないか。たったそれだけ? ...。
とても最短には見えないが...。ほかに方法はあるのか?
VimScriptなどに手を染めたら、さらなる学習コスト増大とバグ祭りの憂き目に合いそうで嫌。
GUIエディタのほうが圧倒的に早いのですが
GUIエディタならShift + カーソルキーで選択できるので早い。削除もインデントも同様。