5

のようないくつかのファイル拡張子を除いて、デフォルトのテキスト幅を 80 文字にしたいと思いますtxt。ファイルを初めて編集(および作成)するときを除いて、次の行は機能しているように見えtxtます。

setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0

これを行う正しい方法は何ですか?

4

2 に答える 2

10

まず、スコープを間違った方法で取得しています。:setのグローバル デフォルトおよび:setlocalバッファ ローカル オーバーライドに使用します:autocmd

2 つ目は、BufReadPre新しいファイルではなく、既存のファイルの読み取り専用です。そのため、最初は機能しません。代わりに、BufNew,BufRead;を使用する必要があります。これは両方のケースをキャプチャし、ファイルが読み取られた後にのみ適用されるため、モードラインを使用するか、 filetype pluginに設定がある場合でも機能します。

第 3 に、:autocmd多くのカスタマイズを行うと、ソリューションが扱いにくくなる傾向があります。特定のファイル タイプの設定のみを有効にする場合は、対応する:setlocalコマンドを~/.vim/after/ftplugin/<filetype>.vimに入力します。ここ<filetype>で、 は実際のファイル タイプです (例: java)。(これには が必要です:filetype plugin onafterディレクトリを使用すると、 によって行われたデフォルトのファイルタイプ設定をオーバーライドできます$VIMRUNTIME/ftplugin/<filetype>.vim。)

于 2013-04-26T18:45:13.193 に答える
9

使用するsetlocal

autocmd bufreadpre *.txt setlocal textwidth=0

の代わりにset

setlocal設定している値がすべてのバッファではなく、現在のバッファに設定されていることを確認してください。

于 2013-04-26T15:05:55.257 に答える