Ich habe eine Dateizeit definiert jak.vim
, um benutzerdefinierte Hervorhebungen beim Aufnehmen von Notizen zu ermöglichen. Sie wird jedoch auf einige Dateien angewendet, die nicht die .jak
Erweiterung haben. Insbesondere eine Datei mit dem Namen progress.jlog
. Nur um zu testen , ob das Problem war spezifisch für diese Erweiterung I umbenannt progress.jlog
zu progress
(keine Verlängerung) , aber das gleiche Problem erlebt.
Was ich getan habe:
- Ich habe
jak.vim
im Verzeichnis erstellt~/.vim/ftdetect
- Ich habe die folgende Zeile hinzugefügt: "au BufRead, BufNewFile * .jak set filetype = jak", wie in der vim-Referenz beschrieben
- Ich habe vim neu gestartet (: x, und dann wieder geöffnet)
So ~/.vim/ftdetect/jak.vim
sieht mein aus:
~/.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
Und nur für den Fall, dass Sie wissen müssen, wie ich .vimrc
aussehe:
~/.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
Hinweis: Ich habe alle Anführungszeichen (Kommentare) ausgefüllt, um das Lesen zu erleichtern
Aktualisieren
Ich fand nsharishs Post sehr hilfreich. Sie schlugen vor, dass ich dies meinem vimrc hinzufüge:
au BufRead,BufNewFile *.jak set filetype=jak
und füge meine jak.vim
Datei hinzu~/.vim/syntax
Leider widerspricht dieser Code diesen beiden Zeilen (in meinem vimrc)
au BufWinLeave *.c mkview
au BufWinEnter *.c silent loadview
Ich verwende diese beiden, um meine Falten, Cursorpositionen usw. beim Laden von vim zu speichern (siehe :help lo
). Wenn ich diese beiden Zeilen auskommentiere, wirkt der Vorschlag von nsharish wie ein Zauber. Mit diesen beiden Zeilen gibt es in keiner meiner Dateien eine Hervorhebung.
Fazit
Ich habe die Antwort von nsharish als die beste Antwort markiert (weil sie mir am hilfreichsten ist). Aber so habe ich das Problem gelöst:
Nsharish hatte recht, ich brauchte diese Zeile in meinem .vimrc
:
syntax enable
au BufRead,BufNewFile *.jak set filetype=jak
Und ich musste meine jak.vim
Datei nach verschieben ~/.vim/syntax
.
Wie oben erwähnt, gab es jedoch einen Konflikt mit diesen Zeilen:
au BufWinLeave * mkview
au BufWinEnter * silent loadview
Als diese Zeilen kommentiert wurden, funktionierte die Hervorhebung.
Was ich tun musste, war das zu ändern ...set filetype...
:
au BufWinEnter,BufRead,BufNewFile *.jak set filetype=jak
Ich denke, dass der BufWinEnter nach der BufRead / BufNew-Datei aufgerufen wird, so dass die Hervorhebung durch die vom letzten Mal gespeicherte Formatierung überschrieben wurde.
Nochmals vielen Dank an nsharish, der mir geholfen hat, diese Lösung zu finden.