まくまくVimノート
インサートモード中に Backspace キーや CTRL-W で文字を削除するときの振る舞いを変更する (backspace)
2018-11-07

インサートモード中に Backspace キーを押すと、入力した文字が削除されますが、デフォルトではインサートモードに入ったカーソル位置より前の文字を削除することはできません。 代表的な削除系のキー入力は、下記のような振る舞いをします。

  • Backspace: カーソル位置の直前の1文字を削除する。ただし、インサートモードに入ったときのカーソル位置までしか削除できない。
  • CTRL-W: カーソル位置の直前の1単語を削除する。ただし、インサートモードに入ったときのカーソル位置までしか削除できない。
  • CTRL-U: カーソル位置からインサートモードに入ったときのカーソル位置までを削除する。

backspace オプションを設定しておくと、これらのキー入力よって削除できる文字の範囲を変更することができます。

  • backspace に設定できる値(カンマ区切りで複数指定可能)
    • indent: オートインデント機能で挿入されたスペースを削除できる
    • eol: 改行を削除できる(前の行に遡って削除していける)
    • start: インサートモードに入ったときのカーソル位置よりも前の文字を削除できる(ただし、CTRL-WCTRL-U による削除は、インサートモードに入ったカーソル位置までで削除範囲が一度止まる)

設定例 (~/.vimrc

" インサートモード中の BS、CTRL-W、CTRL-U による文字削除を柔軟にする
set backspace=indent,eol,start

上記のように設定しておくと、それぞれの削除系のキー入力の振る舞いは下記のように変化します。

  • Backsapce: カーソル位置の直前の1文字を削除する。インサートモードに入った時のカーソル位置よりも前の文字を削除できる。
  • CTRL-W: カーソル位置の直前の1単語を削除する。インサートモードに入った時のカーソル位置よりも前の単語を削除できる。ただし、インサートモードに入った時のカーソル位置も単語の境界とみなす。
  • CTRL-U: カーソル位置から行頭までを削除する。ただし、インサートモードに入ったときのカーソル位置も行頭とみなす。
2018-11-07