Ho definito un tempo di file jak.vim
per offrire l'evidenziazione personalizzata quando prendo appunti, tuttavia viene applicato ad alcuni file che non hanno l' .jak
estensione. In particolare un file denominato progress.jlog
. Proprio per verificare se il problema fosse specifico per tale interno ho rinominato progress.jlog
a progress
(senza estensione), ma ha sperimentato lo stesso problema.
Cosa ho fatto:
- Ho creato
jak.vim
nella directory~/.vim/ftdetect
- Ho aggiunto questa riga: "au BufRead, BufNewFile * .jak set filetype = jak" all'inizio come descritto nel riferimento vim
- Ho riavviato vim (: x, quindi riaperto)
Ecco ~/.vim/ftdetect/jak.vim
come appare il mio :
~/.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
E nel caso in cui hai bisogno di sapere che questo è come .vimrc
appare il mio :
~/.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
Nota: ho completato tutte le citazioni (commenti) per facilitarne la lettura
Aggiornare
Ho trovato molto utile il post di nsharish . Mi hanno suggerito di aggiungere questo al mio vimrc:
au BufRead,BufNewFile *.jak set filetype=jak
e aggiungi il mio jak.vim
file a~/.vim/syntax
Sfortunatamente quel codice è in conflitto con queste due righe (nel mio vimrc)
au BufWinLeave *.c mkview
au BufWinEnter *.c silent loadview
Uso questi due per salvare le mie pieghe, la posizione del cursore, ecc. Durante il caricamento di vim (vedi :help lo
). Se commento queste due righe, il suggerimento di nsharish funziona come un incantesimo. Con queste due righe non c'è alcun evidenziazione in nessuno dei miei file.
Conclusione
Ho contrassegnato la risposta di nsharish come la migliore risposta (perché è la più utile per me). Tuttavia, è così che ho risolto il problema:
Nsharish aveva ragione, avevo bisogno di questa linea nel mio .vimrc
:
syntax enable
au BufRead,BufNewFile *.jak set filetype=jak
E dovevo spostare il mio jak.vim
file in ~/.vim/syntax
.
Tuttavia, come notato sopra, c'è stato un conflitto con queste linee:
au BufWinLeave * mkview
au BufWinEnter * silent loadview
Quando queste righe sono state commentate, l'evidenziazione ha funzionato.
Quello che dovevo fare era cambiare ...set filetype...
in questo:
au BufWinEnter,BufRead,BufNewFile *.jak set filetype=jak
Penso che BufWinEnter sia chiamato dopo il file BufRead / BufNew, quindi l'evidenziazione veniva sovrascritta dalla formattazione salvata dall'ultima volta.
Grazie ancora a nsharish per avermi aiutato a trovare questa soluzione.