13

現在取り組んでいるプロジェクトがあり、コーディング標準では2つのスペースインデントを使用しています。ただし、他のプロジェクトでは、4つのスペースインデントを使用します。

特定のディレクトリ内のすべてのファイルに2つのスペースのタブストップが必要であることをvimに伝える簡単な方法はありますか?

4

5 に答える 5

19

ディレクトリに一致するを使用し、autocmd必要なオプションを設定します。

au BufRead,BufNewFile,BufEnter /path/to/dir/* setlocal ts=2 sts=2 sw=2

これは、サブディレクトリ内のファイルにも適用されます。

Ingo Karkatが指摘しているように、このようなコマンドは、バッファーに固有setlocalのものではなく、を使用する必要があります。set

于 2013-01-18T20:31:09.257 に答える
4

由緒あるTimPopeは、現在のファイルで使用されているものに基づいて(または、信じられないほど、新しいバッファーの場合は近くのファイルに基づいて)シフト幅とタブストップを(他のバッファーオプションの中でも)自動的に決定するプラグイン呼び出しSleuthをリリースしました。

于 2013-01-19T00:27:39.917 に答える
3

これらのプロジェクトディレクトリの例外の中央構成について心配する必要がない場合、:autocmdNikitaKouevdaのソリューションはシンプルで効果的です。一方、特定の構成をプロジェクトとともに保存する場合(および、これをモードラインを介してすべてのファイルに埋め込みたくない場合)、次の2つのオプションがあります。

常にプロジェクトのルートディレクトリからVimを起動する場合は、組み込みの

:set exrc

.vimrc現在のディレクトリからファイルを読み取ることができます。:set ts=2 sw=2 etそこにコマンドを配置できます。

それ以外の場合は、プラグインの助けが必要です。vim.orgにはいくつかあります。localrcプラグインをお勧めします。

于 2013-01-18T20:30:35.690 に答える
1

少し前に、私はこれらのニーズにぴったりのプラグインを作成しました:Vimprj。これは、さまざまなプロジェクトのオプションを管理するためのプラグインです。

一人の男もそれについて素敵な記事を書いた。

.vimprj簡単に言うと、プロジェクトのルート(または.vimprjいくつかのファイルを含むディレクトリ)にファイルを作成する必要があります。.vimこのプロジェクトに切り替えるたびに、このファイルまたはディレクトリ.vimprjがソースになります。

詳細についてはプラグインのページをお読みください。このプラグインに問題がある場合は、お気軽にお問い合わせください。

于 2013-01-18T21:29:31.200 に答える
0

embear /vim-localvimrchttps://github.com/embear/vim-localvimrc うまく機能しました。

.lvimrc以下を含むファイルを作成します。

setlocal noexpandtab
setlocal shiftwidth=8
setlocal tabstop=8

を含む子ディレクトリ内のすべてのファイルについて、 myのデフォルトautocmd FileType構成よりも優れています。.vimrc.lvimrc

プラグイン.lvimrcは、親ディレクトリで見つかったすべてのものをルート側から最初にソースするため、深い.lvimrcほど優先順位が高くなります。

EditorConfig https://github.com/editorconfig/editorconfig-vimは、エディターに依存しない設定(およびVimの実装)が含まれているため、誰もが使用する必要のある設定のソースツリーを制御する場合に最適なオプションです。

于 2015-07-19T11:45:49.703 に答える