質問

ファイルの種類に基づいてVimのインデント動作を変更する最も簡単な方法を簡単な言葉で説明してもらえますか?たとえば、Pythonファイルを開く場合は2つのスペースでインデントする必要がありますが、Powershellスクリプトを開く場合は4つのスペースを使用する必要があります。

役に立ちましたか?

解決

vimが特定のファイルタイプに切り替わるたびに実行される .vim ファイルを追加できます。

たとえば、次の内容のファイル〜/ .vim / after / ftplugin / html.vim があります:

setlocal shiftwidth=2
setlocal tabstop=2

これにより、vimは幅2文字のタブをインデントに使用します( noexpandtab オプションは、私の構成の他の場所でグローバルに設定されます)。

これはここで説明されています: http://vimdoc.sourceforge.net/htmldoc/usr_05 .html#05.4 で、ファイルタイププラグインのセクションまでスクロールします。

他のヒント

ftpluginsまたはオートコマンドを使用してオプションを設定します。

ftplugin

〜/ .vim / ftplugin / python.vim内:

setlocal shiftwidth=2 softtabstop=2 expandtab

そして〜/ .vimrc でそれらを有効にすることを忘れないでください:

filetype plugin indent on

(詳細は:h ftplugin

オートコマンド

〜/ .vimrc 内:

autocmd FileType python setlocal shiftwidth=2 softtabstop=2 expandtab

長いコマンドまたは設定は、短いバージョンに置き換えることができます。
autocmd au
setlocal setl
shiftwidth sw
tabstop ts
softtabstop sts
expandtab et

tabstop softtabstop の違いを学ぶこともお勧めします。多くの人は softtabstop について知らない。

〜/ .vimrc を編集し、インデントごとに異なるファイルタイプを追加します。 html / rb インデントを2スペース、 js / coffee ファイルを4スペースインデントします:

" by default, the indent is 2 spaces. 
set shiftwidth=2
set softtabstop=2
set tabstop=2

" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab

" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab

参照先:ファイルタイプごとのVim空白設定の設定

〜/ .vimrcのファイルサフィックスに基づいてautocmdコマンドを入力します

autocmd BufRead,BufNewFile   *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile   *.pl syntax on

探しているコマンドはおそらくts =とsw =です

通常、 expandtab セットを使用しますが、メイクファイルには適していません。最近追加しました:

:autocmd FileType make set noexpandtab

.vimrcファイルの最後まで。Makefile、Makefile、および* .mkをMakefileとして認識し、タブを展開しません。おそらく、これを拡張できます。

私はいつも、さまざまなファイルタイプのタブのサイズを変更する人々に驚いています。 lessを使用してファイルを見るとき、一体どうしますか?

個人的には、これらの設定を.vimrcで使用します:

autocmd FileType python set tabstop=8|set shiftwidth=2|set expandtab
autocmd FileType ruby set tabstop=8|set shiftwidth=2|set expandtab

これは私たちのほとんどが知っているかもしれませんが、とにかく(初めて困惑しました): :set et :set expandtabs)を実行しても、ファイルに既に存在するタブは変更されません。:retab を実行する必要があります。 例:

:set et
:retab

およびファイル内のタブは十分なスペースに置き換えられます。タブを元に戻すには、次のようにします。

:set noet
:retab

今日、 editorconfig を試すことができますが、 vimプラグイン。これにより、vimのインデントサイズを変更できるだけでなく、他の多くのエディターで一貫したコーディングスタイルを維持できます。

以下はシンプルなeditorconfigです。ご覧のとおり、pythonファイルにはインデント用のスペースが4つあり、pugテンプレートファイルには2つしかありません。

# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4

# 2 space indentation for pug templates
[*.pug]
indent_size = 2

インデントプラグインを使用するか、設定を手動で使用してVimのインデントを適切に構成できますが、 Vindect は、Pythonファイルを開いたときに関連する設定を自動的に設定します。 Vindectをさらに効果的に使用するには、このヒントを使用してください。他の人がさまざまなインデントスタイル(タブとスペース、スペースの数)で作成したpythonファイルの編集を始めたとき、非常にイライラしていました。ただし、Vindectとこのインデントファイル

また推奨:

autotabというCで作成したユーティリティを使用します。 。ロードしたファイルの最初の数千行を分析し、Vimパラメーター shiftwidth tabstop および expandtab の値を決定します。

これは、たとえば gcc -O autotab.c -o autotab を使用してコンパイルされます。 Vimと統合する手順は、上部のコメントヘッダーにあります。

Autotabはかなり賢いですが、特に異なるインデントスタイルを使用して一貫性を維持していないため、時々混乱する可能性があります。

インデントに明らかにタブ、またはタブとスペースの組み合わせを使用するファイルの場合、Autotabはコメントなどの連続する行にわたる内部要素の配置などの要因を考慮して、使用されているタブサイズを判別します。

さまざまなプログラミング言語で機能し、「帯域外」を許容します。明白な空白行はもちろんのこと、Cプリプロセスディレクティブ、Cステートメントラベルなど、インデントの増分に従わない要素。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top