ファイルタイプに基づいてデフォルトのインデントを変更するにはどうすればよいですか?


34

作業中のファイルの種類に基づいて、さまざまなインデントを設定したいと思います。たとえば、.cファイルで作業する場合、インデントを4スペースにする必要があります。では.html、ファイルIは、タブ付きの仕事を(してい)したいと思います。

どうすればそれを達成できますか?

回答:


25

最良の方法は、これらの設定をに入れること~/.vim/after/ftplugin/<filetype>.vimです。

HTMLの場合(4文字幅のタブが必要だと仮定):

~/.vim/after/ftplugin/html.vim

setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab

Vimは既にファイルタイプのチェックを行っており、適切なftpluginを取得しようとしているため、さらに多くのチェックを強制してホイールを再実装する理由がないため、ftpluginの使用はオートコマンドの使用よりも優先されます。

-編集-

あなたが持っていると仮定すると、filetype plugin onあなたにvimrc-あなたがすべき- Vimはファイルあなた編集のファイルタイプを検出し、正しいファイルタイプが見つかり、バッファ用セットされると、これらの標準的な場所に対応するftpluginを調達しようと試みます。

$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim

これらはすべて自動的に行われるため、ファイルタイプがVimによって認識されている場合、ファイルタイプ検出ロジックを追加する理由はまったくありません。設定を正しいftpluginに追加するだけで十分です。


ftpluginを何らかの方法でアクティブにする必要がありますか、またはファイルを作成すると自動的にアクティブになりますか?
DeltaLima

あなたが持っていることを確認filetype plugin indent onしてくださいvimrc
ロメイン

1
@DeltaLima vimには、設定を確認するためのパスがあります。filetype plugin on設定されている限り、vimのパスにはそのパスにftplugin/<filetype>.vimafter/ftplugin/<filetype>/vimファイルが含まれます。
-davidlowryduda

@DeltaLima、私の編集をご覧ください。
ロメイン

14

あなたはあなたのオートコマンドでこれを行うことができます.vimrc

たとえば、html_like_modeHTMLファイルを編集するためのさまざまなものを設定する関数があります。で.vimrc、私は持っています:

au BufNewFile,BufRead *.html call s:html_like_mode()

これは、ファイル拡張子からキーオフします。有効にしている場合は、ファイルタイプをキーオフすることもできます。

au FileType perl setlocal equalprg=perltidy

ご覧のとおり、そこで任意のコマンドを実行できます。したがってsetlocal shiftwidth 4、*。cファイルに対して簡単にできます。


9

augroup関連する自動コマンドを名前付きグループにグループ化できます。(オートコマンドグループについては、こちらを参照してください。)augroups を使用し~/.vimrcて、ソースを作成するたびに重複が追加されないようにオートコマンドを追加します。

augroup vimrc
  autocmd!
augroup END

autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4

2
これが何をするのか、どのように設定するのかを説明すると便利です。誰もが知っているとは限りません;)
セス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.