特定のファイルタイプのVimハイライト(構文ファイル、vimイベント、vimrcに入れる行)


17

jak.vimメモを取るときにカスタムの強調表示を提供するファイル時間を定義しましたが、.jak拡張子のない一部のファイルに適用されています。具体的には、という名前のファイルprogress.jlog。問題がその拡張子に固有のものであるかどうかをテストするために、名前progress.jlogprogress(拡張子なし)に変更しましたが、同じ問題が発生しました。

私がしたこと:

  • jak.vimディレクトリに作成しました~/.vim/ftdetect
  • 次の行を追加しました: "au BufRead、BufNewFile * .jak set filetype = jak" vimリファレンスで説明されているよう
  • vimを再起動しました(:x、その後再び開きました)

これは私の~/.vim/ftdetect/jak.vim見た目です:

~/.vim/ftdetect][505]% cat jak.vim
au BufRead, BufNewFile *.jak set filetype=jak

syn region JakeSubtitle start=+==+ end=+==+
highlight JakeSubtitle ctermbg=black ctermfg=DarkMagenta

syn region JakeTitle start=+===+ end=+===+
highlight JakeTitle ctermbg=black ctermfg=yellow

syn region JakeMasterTitle start=+====+ end=+====+
highlight JakeMasterTitle cterm=bold term=bold ctermbg=black ctermfg=LightBlue

syn region emphasis start=+<em>+ end=+</em>+
highlight emphasis ctermbg=black ctermfg=yellow

" makes all of the numbered items bold."
" (this works I just don't like the effect.  Decided to change to just highlight the "number)
"syn region numberedItem start=+^\t*\d*)+ end=+\n+"
syn match numberedItem +^\t*\d*)+
highlight numberedItem cterm=bold

そして、これが私の.vimrc見た目であるということを知っておく必要がある場合に備えて:

~/.vim/ftdetect][508]% cat ../../.vimrc
"on will override defaults set.  Enable will allow you to set defaults."
" also turns on filetype"
"syntax on"
syntax enable

set nocompatible

" ???"
set backspace=2

"Auto indent"
set ai

"Map jj to Esc so that you do not have to reach for the Esc button"
imap jj <Esc>

"do not allow the search to wrap around the screen, must stop at the bottom."
set nowrapscan

"when doing a search highlight all occurances"
":set hlsearch"

"stop text from wrapping on the screen"
set nowrap

"turn the mouse on while in insert mode"
set mouse=i

"attempting to highlight specific keywords so it is easy to see in code."
"see help e410 for more info."
"see this post I created: /superuser/110054/custom-vim-highlighting"
"Legal colors: Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta,"
"Brown, DarkYellow, LightGray, LightGrey, Gray, Grey, DarkGray, DarkGrey,"
"Blue, LightBlue, Green, LightGreen, Cyan, LightCyan, Red, LightRed, Magenta,"
"LightMagenta, Yellow, LightYellow, White"
syn keyword JakeKeywords        Question TODO Answer JAKEHTTPS PossibleProblem
highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue


"for case-insensitve searches"
set ignorecase

"Override the 'ignorecase' option if the search pattern contains upper"
"case characters.  Only used when the search pattern is typed and"
"'ignorecase' option is on."
set smartcase


"use indents as the folding method"
set foldmethod=indent

"make vim save and load the folding of the document each time it loads"
"also places the cursor in the last place that it was left."
au BufWinLeave * mkview
au BufWinEnter * silent loadview

注:読みやすくするために、すべての引用(コメント)を完成させました


更新

nsharishの投稿は非常に役立つことがわかりました。彼らはこれをvimrcに追加することを提案しました:

au BufRead,BufNewFile *.jak set filetype=jak

jak.vimファイルを追加します~/.vim/syntax

残念ながら、そのコードはこれらの2行と競合します(私のvimrcで)

au BufWinLeave *.c mkview
au BufWinEnter *.c silent loadview

vimをロードするときに、これら2つを使用して、フォールド、カーソル位置などを保存します(を参照:help lo)。これらの2行をコメントアウトすると、nsharishの提案は魅力のように機能します。これらの2行では、どのファイルにも強調表示はありません。

結論

nsharishの答えを最良の答えとしてマークしました(私にとって最も役立つからです)。しかし、これは私が問題を解決した方法です:

Nsharishが正しかったので、この行が必要でした.vimrc

syntax enable
au BufRead,BufNewFile *.jak set filetype=jak

そして、jak.vimファイルをに移動する必要がありました~/.vim/syntax

ただし、上記のように、これらの行との競合がありました。

au BufWinLeave * mkview
au BufWinEnter * silent loadview

これらの行がコメントされると、強調表示が機能しました。

私がする必要があるのは...set filetype...、これに変更することでした:

au BufWinEnter,BufRead,BufNewFile *.jak set filetype=jak

BufWinEnterはBufRead / BufNewファイルのに呼び出されるので、強調表示は前回保存したフォーマットで上書きされていたと思います。

nsharishに、このソリューションを思い付くのを助けてくれてありがとう。


1
* .cステートメントは* .jakステートメントとどのような意味で競合しますか?
アキラ

回答:


10

これを試しましたか。

  • jak.vimを.vim / syntaxフォルダーに入れます
  • .vimrcファイルにのみ次の行を追加します。
構文enable 
au BufRead、BufNewFile * .jak set filetype = jak
私はあなたのjak.vimファイルでこれを試しました....それは私のためにうまくいった....
私はvim7.2を使用しています...
編集:
これを試してください、
私はそれらのmkviewとloadview行で同じ問題を抱えていました...ファイルに一度ファイルタイプを設定するだけで、その後保持されます

ファイルを開き、「:set ft = jak」を実行し、ファイルを保存してvimを終了します。...ファイルを再度開きます...構文の強調表示が機能するはずです...
mkviewloadviewは最後の構文の強調表示設定を保存しているようですまた....


今すぐ試してみてください...しかし、.vim / ftdetect /フォルダーが何をしているのか知っていますか?私が経験している動作は、そこにあるフォーマットファイルはすべてのファイルタイプに適用されるということです。
sixtyfootersdude

ええ、それは部分的に機能しました。しかし、vimrcの他の2つの行との競合がありました。私の更新を参照してください。
sixtyfootersdude

2

認めざるを得ない、これがあなたにとってどれほど役に立つかは確かではないが...

http://beerpla.net/2008/04/02/how-to-add-a-vim-file-extension-to-syntax-highlighting/

ページが削除される場合に備えてテキストを追加しました...または変更されました...

vim構文の強調表示にファイル拡張子を追加する方法Artem Russakovskiiが2008年4月2日にデータベース、Linux、プログラミングで24おいしい保存2 diggs共有3retweet

更新日:2009年7月8日

今日、vimがexample.lmxが実際にxml型であることを認識し、xml構文強調表示を適用するように、vim構文強調表示のカスタム拡張を定義することについて質問されました。私はvimがすでに拡張子に基づいているだけでなく、テキスト内の特定の文字列を探すことで自動的にそれを行うことを知っています

掘り下げた後、解決策を見つけました。以下を〜/ .vimrc(vim設定ファイル)に追加します:

1 2 3 au BufNewFile、BufRead * .lmxのfiletypeの構文set filetype = xml適用後、.lmxファイルが強調表示されます。

たとえば、時々行う必要があるmysqlダンプに対しても、同じ原則が機能します。.sql拡張子がない場合は、次のようになります。

1 2 3 au BufNewFile、BufReadのファイルタイプの構文* .dump set filetype = sqlすべてが正常です:

しかし、なぜそれがどのように機能するのか、あなたは尋ねますか?

:help au:au [tocmd] [group] {event} {pat} [nested] {cmd}

{pat}に一致するファイルの{event}でVimが自動的に実行するコマンドのリストに{cmd}を追加します。:help BufNewFile存在しないファイルの編集を開始するとき。:help BufReadファイルをバッファに読み込んだ後、新しいバッファの編集を開始するとき。:help filetypeは、実際にパートBでこのストーリー全体を伝えます。そして、それがあなたのやり方です。


ほら

まあ、それは潜在的に1つの問題を解決するかもしれませんが、私はそれがこの問題を解決するとは思いません...私はこれへの鍵は.vim/ftdetectディレクトリに関係していると思います
...-sixtyfootersdude

私は...それを自分の言葉を取る必要がありますので、私は正直にさえ、VIMを使用していない
ベンジャミンSchollnick

1

私はあなたがしたことを再現しようとしましたが、ファイルタイプを他の拡張子に適用することができませんでした。

また、これが助けになったことがわかりました:

'new-filetype'のVimヘルプファイルには、独自の 'filetype.vim'を作成し~/.vim/filetype.vim 、そのファイルに自動コマンドを書き込むことが記載されています。

if exists("did_load_filetypes")
  finish
endif
augroup filetypedetect
  au! BufRead,BufNewFile *.jak      setfiletype jak
augroup END

jak.vimのこれらの構文と強調表示コマンドはすべてに保存する必要がある~/.vim/syntaxため、~/.vim/syntax/jak.vimauコマンドなしで)にコピーする必要があります。

また、変更を反映するには、Vimを終了して再起動する必要があります。


1

私は物事がねじれているかもしれないと思うが、私はvimの専門家ではない。

構文強調表示ファイルは、構文ディレクトリにある必要があります。nsharishのアドバイスの内容は、ftdetect内に配置するファイルに含まれるものです。

この部分:

au BufRead,BufNewFile *.jak set filetype=jak

.vimrcでは、次のような行も追加する必要があります。

au! syntax jak source $VIM/syntax/jak.vim

私見、それはこのようにもっと理にかなっています。これがお役に立てば幸いです。

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