私は一部のモジュールがインデント用にタブを使用し、他のモジュールはスペースを使用するコードで作業することがあります。 Np ++のような多くのテキストエディタには、前の行(またはコードブロック)がスペースやタブを使用する場合にインデント用のスペースを使用する、ある種の適応型タブ機能があります。vimのアダプティブタブ移動
私はこのようなvimで何も見たことがありません。このようなプラグインや設定はありますか?
私は一部のモジュールがインデント用にタブを使用し、他のモジュールはスペースを使用するコードで作業することがあります。 Np ++のような多くのテキストエディタには、前の行(またはコードブロック)がスペースやタブを使用する場合にインデント用のスペースを使用する、ある種の適応型タブ機能があります。vimのアダプティブタブ移動
私はこのようなvimで何も見たことがありません。このようなプラグインや設定はありますか?
は、私は以下の例が示すように私の的環境をセットアップするperfer。タブをスペースで置き換える一般的なルールを作成し、そのルールをオーバーライドする必要があるときはaugroup
を使用します。 MakefileはTABSが必要な場合の良い例で、cppファイルはスペースが必要な場合です。
" A tab produces a 4-space indentation
:set softtabstop=4
:set shiftwidth=4
:set expandtab
" replace tabs with spaces unless noted otherwise
" <snip>
augroup CPPprog
au!
"-----------------------------------
" GENERAL SETTINGS
"-----------------------------------
au BufRead,BufNewFile,BufEnter *.cpp,*.c,*.h,*.hpp set nolisp
au BufRead,BufNewFile,BufEnter *.cpp,*.c,*.h,*.hpp set filetype=cpp
au FileType * set nocindent smartindent
au FileType *.c,*.cpp set cindent
au BufRead,BufNewFile,BufEnter *.cpp let g:qt_syntax=1
" turn on qt syntax highlighting (a plugin)
au BufNewFile,BufRead,BufEnter *.c,*.h,*.cpp,*.hpp let c_space_errors=1
" trailing white space and spaces before a <Tab>
" <snip>
augroup END
" <snip>
augroup filetype
au! BufRead,BufNewFile,BufEnter *Makefile*,*makefile*,*.mk set filetype=make
augroup END
" In Makefiles, don't expand tabs to spaces, since we need the actual tabs
autocmd FileType make set noexpandtab
@zkhrと同様に、smartindent
またはautoindent
を使用できます。 cindent
を使用することもできます。これは、C/C++ファイルの編集時にvimが使用するデフォルトのインデントです。
「smartindent」は、場合によっては1つの余分なレベルのインデントを自動的に挿入し、Cのようなファイルで動作します。
「cindent」はよりカスタマイズ可能ですが、構文に関してはより厳密です。
'smartindent'と 'cindent'は、ファイルタイプに基づくインデントを妨げる可能性があります。また、それと関連して使用しないでください。あなたが特定のファイルを編集していると、あなたは、そのファイル内の自動インデントを防ぎたい場合は
、次のように入力します
:setlocal noautoindent
:setlocal nocindent
:setlocal nosmartindent
:setlocal indentexpr=
Vimには、あなたが望むものはまったくありません。しかし、あなたはcopyindent
をチェックしたいかもしれません。 :h copyindent
を参照してください。それはあなたが望むものではなく、 "適応タブ"を与えます。新しい行の先頭のタブ/スペースは、前の行の先頭のタブ/スペースをコピーします。ただし、インデントを増やすと、タブまたはスペースの追加の決定はexpandtab
の設定に依存します。 (あなたはまた、あなたのシナリオに設定する必要がありpreserveindent
オプションのヘルプを見てみたいことがあり、私は思います。)
またautoindent
またはsmartindent
のいずれかを介して、自動タブ移動の設定を持っていることになるでしょう。わからない場合は、copyindentを正しく設定するためにsmartindent
またはautoindent
をリセットする必要があります(たとえば、:set nosmartindent
、:set smartindent
など)。
このプラグインはあなたの目標を達成しているようです。 IndentConsistencyCop
適切なオートコマンドをロードする無料のプラグインをインストールする必要があります。 IndentConsistencyCopAutoCmds