現在のディレクトリにあるすべてのファイルにVim設定を指定するにはどうすればよいですか?
理想的な解決策は、Vimが〜/ .vimrcを検索する前に現在のディレクトリで.vimrcを検索して読み取り、そこに設定をツリー全体に適用する場合です。
plugin を見ましたが、これはプラグインをインストールする必要があるため、適用された設定が透過的ではないことを意味します。対照的に、ユーザーのvimrcまたは特定のvim呼び出しに関係なく、モードライン設定がそのファイルに適用されるため、モードラインは透過的です。
私が試したものは
:so vimrc
モードラインで。セキュリティ上の理由から、どちらも機能しないと思います。 vimrcの全機能は必要ありません。モードラインで受け入れられる設定にバインドされていれば十分です。私の目標は、初心者がプロジェクトでコーディング標準を簡単に採用できるようにすることです。
私は plugin way の支持者です。いくつかの理由で:
ところで、 sth's solution を使用して、単一の構成ファイルを入手できます。これは、.vimrcを非グローバルオプションで寄生する必要があることを除いて、プラグインアプローチに非常に似ており、複数/共有の構成ファイルを簡単にサポートしません。
このようなものを$VIM/vimrc
に入れることができます
autocmd BufNewFile,BufRead /path/to/files/* set nowrap tabstop=4 shiftwidth=4
set exrc
を使用しないことを強くお勧めします
* nixの下のset secure
を使用しても、ファイルを所有している場合、vimはシェルなどの自動コマンドを実行します。そのため、たまたまそのtarballのファイルを編集した場合は、次を含む.vimrc
を送信しました。
autocmd BufEnter * :silent! !echo rm -rf ~/
あなたはおそらく私よりも面白くないでしょう。
この質問は古いですが、それはかなり自然で永続的な懸念のようです。
私の解決策は非常に簡単です。プロジェクトのルートディレクトリに.vimrc
ファイルを配置します。 .vimrc
ファイルの最初の行は、通常~/.vimrc
をソースにした後、必要な特定の構成を追加します。 tvim='vim -u .vimrc'
のエイリアスを作成し、個人のプロジェクトディレクトリでtvim
を使用します。 「信頼されたvim」の「tvim」。つまり、.vimrc
ファイルのあるディレクトリで実行すると何か問題が発生した場合、信頼できると明示的に言ったので、自分以外の責任はありません。また、特定の種類のプロジェクトに必要なものをソフトリンクできるように、これらのグループを保管しておきます。
.vimrcの作業ディレクトリへの配置は実際にサポートされており、デフォルトでのみ無効になっています。詳細については:h 'exrc'
および:h startup
を参照してください。'exrc'
を設定すると、現在のディレクトリから.vimrc
の読み取りが可能になります。
これを使用する場合は、:set secure
もお勧めします。これにより、:autocmd
、Shell、および現在のディレクトリの.vimrc
のコマンドがロックされます。
見る価値があるもう1つのことは、プロジェクトの標準ビューと設定でセッション(:h session
)を設定することです。
そうは言っても、おそらく自分でLuc Hermitteが詳細に説明したプラグインオプションを使用します。
最近の「自動実行」機能でセキュリティリスクを最小限に抑えるには、プラグイン(携帯用荷物)の代わりにvimの既存の機能を利用することをお勧めしますか?
例えば。
ローカルフォルダーのvimrcファイルの名前は「_gvimrc」です(意図的に)。これは、私たちの費用でフェンのような人々が自分自身を面白がらせることからの希望を減らします。 :-)
私の$ VIM/.vimrcファイルに、以下を挿入しました:
if filereadable("_gvimrc")
source _gvimrc
endif
最後に。
私は「fileexists()」よりも「filereadable()」を使用します。複数の(10+)ファイルを同時に開くことで拷問された場合、後の方がいくらか奇抜なためです(理由はわかりません)。
もちろん、潜在的なトラブルメーカーをさらに難読化するために、独自の一意のファイル名を与えることができます。 「_mygvimrc」、「_ gobbledygook」など。標準化された名前を1つ決めて、それを$ VIM/.vimrcでソースするだけです。このためにvi/vim内部に依存すると、移植性の問題が排除されます。ただし、後でvimを使用して$ VIM/.vimrcファイルを編集している場合に再帰的なソースを防ぐために、.vimrc(または_vimrc)という名前を付けないでください。
Windoze 98SE以降、Windork XP Pro、そして現在Windorkier 7(5年以上)を使用してこれを使用しています。Explorerで.txtファイルのリストをマークし、[編集]複数のvimウィンドウが同時に開くことになります。仕事では、これを1日に数回、毎日行います。すべてのファイルは、ローカル_gvimrcで設定したもので処理されました。
人々が数日ごとにファイルを追加しないと仮定すると、おそらく各ファイルの上部にモードラインを追加できます。実際、バージョン管理システムで許可されている場合は、チェックインするときに各ファイルにモードラインが必要であるという規則を実施できます。
セキュリティ上の理由からプラグインのアプローチに同意します。
まだ言及されていない非常に優れたプラグインがあります。プロジェクトディレクトリで.lvimrc
を使用できます。
「localvimrc」を試してください。
Vim-localrcを試す
~/
|- .local.vimrc (1)
`- project/
|- .local.vimrc (2)
`- src/
|- .local.vimrc (3)
`- main.c
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
実施するコーディング標準の種類がインデントスタイル、タブサイズ、ファイル形式、文字セットに関連している場合は、クロスエディタ標準である "editorconfig" を調べてください。特定のプロジェクトでこの種の設定を指定し、すべてのエディターがその構成に従うようにします。
「editorconfig」仕様により、プロジェクトはファイル拡張子またはプロジェクト内の名前に応じて異なる設定を要求できます。 (つまり、TABを使用してMakefileを作成し、Pythonスクリプトで4つのスペースを使用し、シェルスクリプトで2つのスペースをインデントに使用できます。)
Vimで「editorconfig」を使用するにはプラグインが必要です。公式Webサイトでは提供されていますが、個人的には sgur/vim-editorconfig をお勧めします。これは純粋なVimscriptで記述されているため、外部の依存関係についてあまり心配する必要はありません。
「editorconfig」はクロスエディターの互換性を目的としているため、その機能は非常に限られているため、一貫性のある空白、ファイル形式(DOS対Unix)、エンコード(Unicode utf-8など)が必要です。 " あなたのためです。
存在するプラグインを見て、それらのどれもあまり気に入らなかったので、 vim-fugitive に便乗する単純な関数を書きました。これの利点は、プロジェクトのルートが常にリポジトリのルートであることを知っていることです。さらに、ファイルをハッシュして信頼テーブルを保持できます。 .vimrc
ファイルに次を入力するだけです。
function LoadRepoVimrc()
let l:path = fugitive#repo().tree('.vimrc')
if filereadable(l:path)
let l:sha1 = fugitive#repo().git_chomp('hash-object',l:path)
if !exists('g:SAFE_VIMRC') | let g:SAFE_VIMRC = {} | endif
if has_key(g:SAFE_VIMRC,l:path) && g:SAFE_VIMRC[l:path] ==? l:sha1
execute 'source '.fnameescape(l:path)
elseif confirm("Trust ".l:path."?", "&Yes\n&No",2) == 1
let g:SAFE_VIMRC[l:path] = l:sha1
execute 'source '.fnameescape(l:path)
else
execute 'sandbox source '.fnameescape(l:path)
endif
endif
endfunction
autocmd User FugitiveBoot call LoadRepoVimrc()
set viminfo ^= !
!
オプションがviminfo
設定で設定されている場合、SAFE_VIMRC
辞書は実行間で保持されます(オプションを先頭に追加しないように^
に注意してください) n
オプションを台無しにします)。