vimで拡張子のないファイルのファイルタイプや構文を設定するにはどうすればよいですか?
ノート
これは、拡張子のないファイルの vim デフォルト構文の複製です。私の見解では誰も適切に答えていないので、もう一度質問します。
認識されないファイル タイプのデフォルトの構文を設定する方法は知りたくありません。拡張子のないファイルのみに設定する方法を知りたいです。
vimで拡張子のないファイルのファイルタイプや構文を設定するにはどうすればよいですか?
ノート
これは、拡張子のないファイルの vim デフォルト構文の複製です。私の見解では誰も適切に答えていないので、もう一度質問します。
認識されないファイル タイプのデフォルトの構文を設定する方法は知りたくありません。拡張子のないファイルのみに設定する方法を知りたいです。
ファイル名に が含まれているかどうかを確認し、含まれて.
いない場合は特定の構文に切り替える自動コマンドを作成できます。
autocmd BufNewFile,BufRead * if expand('%:t') !~ '\.' | set syntax=perl | endif
これperl
はデフォルトの構文として選択されていますが、適切なものをそのまま使用できます。
:help ftdetect
ファイルタイプ検出スクリプトの書き方に関するvimドキュメントの一部が表示されます。
この場合の提案は次のとおりです。
~/.vim/ftdetect
ファイルタイプにちなんで名付けられたファイルを作成しますmyfiletype.vim
。
このファイルに
au BufRead,BufNewFile * if expand('<afile>:e') == '' | set ft=myfiletype | end
これにより、vim は拡張子のないファイルのファイルタイプを に設定しますmyfiletype
。他のファイルタイプが検出されなかった場合にのみ使用する場合は、setfiletype myfiletype
代わりにset ft=myfiletype
.
次に、構文ファイルを作成します~/.vim/syntax/myfiletype.vim
。これは通常の vim 構文定義ファイルであり、特別なものではありません。独自のファイルタイプを作成したくない場合は、autocommand で myfiletype の代わりに通常のファイルタイプを使用してください。例えば
au BufRead,BufNewFile * if expand('<afile>:e') == '' | set ft=html | end
html構文ファイルをロードするhtmlファイルタイプを設定します。
1) Hit escape to make sure you're in normal mode
2) Type ":set syntax=java" (or equivalent language)
3) :set filetype=FILETYPE, where FILETYPE is the filetype.
これを自動的に行う場合は、前の回答のソリューションを使用してみてください。
autocmd BufNewFile,BufRead * if expand('%:t') !~ '\.' | set syntax=perl | endif
最終的に、C++ 構成にこれを選択しました。
let s:reserved = '^NERD_tree\|^GoToFile$'
au BufNewFile,BufRead *
\ if expand('%:e') =~ '^\(h\|hh\|hxx\|hpp\|ii\|ixx\|ipp\|inl\|txx\|tpp\|tpl\|cc\|cxx\|cpp\)$' ||
\ expand('%:t') !~ '\.\|'.s:reserved && expand('%:t') =~ '[a-z]' |
\ if &ft != 'cpp' |
\ set ft=cpp |
\ endif |
\ set syntax=cpp11 |
\ call CSyntaxAfter() |
\ endif
.
テールの不足をチェックするだけではありません。これにより、いくつかの非 cpp ファイルがCommandT やNERD ツリーからCOMMIT_EDITMSG
、README
、 のように設定されるのを回避できます。GoToFile
NERD_tree*
編集
私はこの考えをあきらめました。