のようないくつかのファイル拡張子を除いて、デフォルトのテキスト幅を 80 文字にしたいと思いますtxt
。ファイルを初めて編集(および作成)するときを除いて、次の行は機能しているように見えtxt
ます。
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
これを行う正しい方法は何ですか?
のようないくつかのファイル拡張子を除いて、デフォルトのテキスト幅を 80 文字にしたいと思いますtxt
。ファイルを初めて編集(および作成)するときを除いて、次の行は機能しているように見えtxt
ます。
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
これを行う正しい方法は何ですか?
まず、スコープを間違った方法で取得しています。:set
のグローバル デフォルトおよび:setlocal
バッファ ローカル オーバーライドに使用します:autocmd
。
2 つ目は、BufReadPre
新しいファイルではなく、既存のファイルの読み取り専用です。そのため、最初は機能しません。代わりに、BufNew,BufRead
;を使用する必要があります。これは両方のケースをキャプチャし、ファイルが読み取られた後にのみ適用されるため、モードラインを使用するか、 filetype pluginに設定がある場合でも機能します。
第 3 に、:autocmd
多くのカスタマイズを行うと、ソリューションが扱いにくくなる傾向があります。特定のファイル タイプの設定のみを有効にする場合は、対応する:setlocal
コマンドを~/.vim/after/ftplugin/<filetype>.vim
に入力します。ここ<filetype>
で、 は実際のファイル タイプです (例: java
)。(これには が必要です:filetype plugin on
。afterディレクトリを使用すると、 によって行われたデフォルトのファイルタイプ設定をオーバーライドできます$VIMRUNTIME/ftplugin/<filetype>.vim
。)
使用するsetlocal
autocmd bufreadpre *.txt setlocal textwidth=0
の代わりにset
。
setlocal
設定している値がすべてのバッファではなく、現在のバッファに設定されていることを確認してください。