メモを取るときにカスタムハイライトを提供するためにファイル時間jak.vim
を定義しましたが、.jak
拡張子が付いていない一部のファイルに適用されています。具体的には、progress.jlog
という名前のファイル。問題がその拡張機能に固有であるかどうかをテストするために、progress.jlog
の名前をprogress
(拡張機能なし)に変更しましたが、同じ問題が発生しました。
私がしたこと:
jak.vim
に~/.vim/ftdetect
を作成しましたこれは私の~/.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: https://superuser.com/questions/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
私はこれら2つを使用して、vimをロードするときに折り目やカーソル位置などを保存します(:help lo
を参照)。これらの2行をコメントアウトすると、nsharishの提案は魅力のように機能します。これらの2行では、どのファイルにも強調表示はありません。
私は nsharish's answer をベストアンサーとしてマークしました(私にとって最も役立つので)。しかし、これは私が問題を解決した方法です:
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はafter BufRead/BufNewファイルと呼ばれているので、前回保存したフォーマットでハイライトが上書きされていたと思います。
この解決策を考え出すのを手伝ってくれたnsharishにもう一度感謝します。
これを試しましたか。
構文の有効化
au BufRead、BufNewFile * .jak set filetype = jak
ファイルを開いて、「:set ft = jak"、ファイルを保存してvimを終了します...ファイルを再度開きます...構文の強調表示が機能するはずです...
mkview そして loadview 最後の構文ハイライト設定も保存するようです...
私は認めなければなりません、これがあなたにとってどれほど役立つかは確かではありません...しかし...
http://beerpla.net/2008/04/02/how-to-add-a-vim-file-extension-to-syntax-highlighting/
ページが削除された場合に備えて、テキストを追加しました...または変更しました...
ファイル拡張子をvimに追加する方法構文の強調表示ArtemRussakovskiiが2008年4月2日にデータベース、Linux、プログラミングで投稿24おいしい保存2ディグ共有3リツイート
更新日:2009年7月8日
今日、vim構文の強調表示用のカスタム拡張の定義について質問しました。たとえば、vimは、example.lmxが実際にはタイプxmlであり、xml構文の強調表示を適用することを知っています。 vimは、拡張子に基づくだけでなく、テキスト内の特定の文字列を検索することで、自動的に既にそうしていることを知っています。
掘り下げた後、私は解決策を見つけました。以下を〜/ .vimrc(vim設定ファイル)に追加します。
1 2 3 au BufNewFile、BufReadのfiletypeの構文* .lmx 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}に一致するファイルに対してVimが{event}で自動的に実行するコマンドのリストに{cmd}を追加します。 :help BufNewFile存在しないファイルの編集を開始したとき。 :help BufReadファイルをバッファに読み込んだ後、新しいバッファの編集を開始するとき。 :help filetypeは、実際にはパートBでこの全体像を伝えます。それがあなたのやり方です。
物事はねじれているかもしれないと思いますが、私はvimの専門家ではありません。
構文強調表示ファイルは、構文ディレクトリにある必要があります。 nsharishのアドバイスにあるのは、ftdetect内に配置するファイルに何が入るかということかもしれません。
この部分:
au BufRead,BufNewFile *.jak set filetype=jak
.vimrcでは、次のような行を追加する必要がある場合もあります。
au! syntax jak source $VIM/syntax/jak.vim
私見、それはこのようにもっと理にかなっています。これがお役に立てば幸いです。
私はあなたがしたことを再現しようとしましたが、ファイルタイプを他の拡張子に適用することができませんでした。
また、これが役立つこともわかりました。
'new-filetype'のVimヘルプファイルでは、~/.vim/filetype.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.vim
にコピーします(au
コマンドなし)。
変更を反映するには、Vimを終了して再起動する必要もあります。