3

非常に簡単な例:関数を作成したいのですが、すでにいくつかのレベルのインデントがあります(「関数」という単語の前のタブ)。私は最初に書きます:

1     function doCoolStuff() {
2 
3     }

次に、3行目から2行目まで1行上に移動し、関数の内容の入力を開始します。ただし、vimでは、3行目に角かっこを入力して1行上に移動した後、2行目に自動挿入されたタブを削除することはできません。そのため、新しい関数を作成するたびに手動でタブを挿入する必要があります。それがその方法です:

関数のヘッドを入力してEnterキーを押すと、次のようになります。

1     function doCoolStuff() {
2     ▊
3     

Vimは2行目に自動タブを正しく挿入します。

だが!

次に、Enterキーを押して、閉じ角かっこを入力し、1行上に移動します。私はそれがこのようになることを期待しています:

1     function doCoolStuff() {
2     ▊
3     }

しかし、2行目にタブがない場合は、このようになります。

1     function doCoolStuff() {
2 ▊
3     }

vimは、完全にタブ文字で構成されている行があることを確認し、タブ文字を削除しているようです。vimが末尾のタブを削除できないようにするにはどうすればよいですか?

4

3 に答える 3

4

その場合、ViMはタブ文字を自動削除しないため、答えはその行に何かを入力して再度削除することです。

:inoremap <CR> <CR>x<BS>

仕事をします。詳細については、このスレッドを参照してください。

于 2012-08-24T23:08:50.407 に答える
3

あなたが見ているのは、おそらくある種の自動インデントまたはシンデントの結果です。何かを入力するまで、そこには実際にはタブやスペースはありません。したがって、その行を離れるとき、そもそもそこになかったので、実際にはタブやスペースを取り除いているわけではありません。

私が通常行うことは、入力を開始したい上の行に移動し、を押しoて次の行の編集を開始することです(自動インデントが位置を正しく処理します)。

于 2012-08-24T23:19:42.450 に答える
1

同様の問題に対して、 DelimitMateまたは他の自動ペアリングスクリプトまたは私のこの回答のようなものを使用できます。

于 2012-08-25T07:55:46.913 に答える