Win 7 の Vim は、shiftwidth の設定を .sml ファイルだけで望ましくない値に変更します。
私が望むのは、すべてがスペースのみでインデントされ、すべてが常に 4 つのスペースになることです。多くのバリエーションを試しましたが、これは私の現在の _vimrc ファイルの内容です:
set nocompatible
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set guifont=Consolas:h9:cANSI
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
filetype plugin indent on
" Set the tab width
let s:tabwidth=4
exec 'set tabstop=' .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth
ファイルをロードせずに Vim を初めて起動すると、:set shiftwidth
が返されますshiftwidth=4
。.py または .php ファイルを開くと、まだ .py が返されますshiftwidth=4
。しかし、.sml ファイルを開くか、空のファイルを .sml 拡張子で保存すると、.sml に変わりますshiftwidth=2
。そのセッションでは手動で設定:set shiftwidth=2
できますが、.sml ファイルを開くたびに設定する必要があります。
.sml ファイルが開いているバッファにのみ影響します。保存されていないバッファ、または別のファイル タイプが同時に開いているバッファは、shiftwidth=4 を示します。
以前はファイルタイププラグインのインデントを使用していませんでしたが、検索した後、それが問題の可能性があるように見えました. ftplugin フォルダーにファイルがなかったので、_vimrc に追加filetype plugin indent on
し、sml.vim を作成して ftplugin フォルダーに配置しました (ここでも、多くのバリエーションを試しました:
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
" Set the tab width
let s:tabwidth=4
exec 'set tabstop=' .s:tabwidth
exec 'set shiftwidth=' .s:tabwidth
exec 'set softtabstop='.s:tabwidth
最初にエラーを入れたので、sml.vim が読み取られていることはわかっていますが、それらはキャッチされました。
これが関連しているかどうかはわかりませんが、私の indent.vim には .sml に関するものは何もなく、私の indent フォルダーは空です。
それでも、Vim は .sml ファイルをロードするたびに shiftwidth=2 を設定します。理由を知りたいです。
更新: 私が空だと言ったインデント フォルダーは vim\vimfiles\indent でした。以下の回答とコメントの後、sml.vim を検索したところ、別のインデント フォルダー vim\vim73\indent が見つかりました。sml.vim を編集し、shiftwidth=2 を shiftwidth=4 に変更したところ、問題は解決しました。