vim-自動インデントを設定して、先頭のスペースをスペースまたはタブストップで埋めます
-
28-10-2019 - |
質問
「ai」を有効にすると、vimが先頭のスペースをタブストップで埋めるようになります。 'et'でスペースだけで埋めることができます。スペースとタブストップが混在するCファイルは好きではありません。
私のvimrc: ジェネラコディセタグプレ
ただし、makefileなどで、キーボードの「TAB」を押したときにタブストップを入力する必要がある場合があります。 'autocmdFileType'コマンドは適切ではありません。vimrcにすべてのファイルタイプを追加することはできません。
欲しいのは簡単です:
- 先頭領域を埋めるための自動インデント スペース;
- キーボードの「TAB」を押すと、タブストップ
スペースではなく入力(したがって「et」はありません)
それを行う方法は?
解決
正しく読めば@Lynchの回答と同じです。
<C-v><Tab>
を使用することもできます。これにより、マッピングを呼び出さずに<Tab>
が挿入され、何らかの理由で<C-v>
または<C-v><Tab>
を再マッピングしない限り、expandtabは無視されます。
タブを挿入するだけの場合は ジェネラコディセタグプレ
expandtabの設定は無視されます。
他のヒント
関数を使ってやりました。私はそれをテストしましたが、場合によってはいくつかのバグを修正する必要があります。これをvimrcに追加してみてください: ジェネラコディセタグプレ
基本的に、ビジュアルモードのキーを関数Inserttab()に再マップします。また、tsを4以外に変更しても、値がハードコードされているため、2つではなく4つのスペースが出力されることに注意してください。
また、vimスクリプトについてはあまり詳しくありませんが、使用されるすべての変数がグローバルになると思います。これは悪いことです。
空白を「見る」には、set list
を使用できることを忘れました。これはset nolist
で無効にします。また、通常モードでは、ga
を使用して、カーソルが置かれている文字に関する情報を表示できます。
編集 行の先頭にタブを挿入することをお勧めします。私のスクリプトは先頭にスペースを挿入し、他の場所にタブを挿入します。
Tabキーを押すたびに本当にタブが必要な場合は、次のように使用できます。 ジェネラコディセタグプレ
しかし、要点はわかりません。このバージョンでは、挿入モードから手動でインデントすることはできません。
それを行う1つの方法は
- :set sw= 4(または必要なもの)
- :set ts= 46(またはいくつかの大きな数)
その後、自動インデントは46スペースに到達しない限りタブを挿入しません。その場合、より多くのスペースを挿入できます。
他の誰かがタブを使用している場合は、これについてドラッグするだけです。編集しているファイルに同意するには、tsをリセットする必要があります。一方で、タブがすぐにわかるようになるため、これも望ましい場合があります。