Zdefiniowałem czas pliku, jak.vim
aby oferować niestandardowe wyróżnianie podczas robienia notatek, jednak jest on stosowany do niektórych plików, które nie mają .jak
rozszerzenia. W szczególności plik o nazwie progress.jlog
. Żeby sprawdzić, czy problem dotyczy konkretnego rozszerzenia, którego nazwa zmieniłem progress.jlog
na progress
(brak rozszerzenia), ale wystąpił ten sam problem.
Co ja zrobiłem:
- Utworzyłem
jak.vim
w katalogu~/.vim/ftdetect
- Dodałem ten wiersz: „au BufRead, BufNewFile * .jak set filetype = jak” na górze, jak opisano w referencji vim
- Zrestartowałem vim (: x, a następnie ponownie otworzyłem)
Tak ~/.vim/ftdetect/jak.vim
wygląda moje :
~/.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
I wystarczy, że musisz wiedzieć, jak to .vimrc
wygląda:
~/.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
Uwaga: Wypełniłem wszystkie cytaty (komentarze), aby ułatwić czytanie
Aktualizacja
Uważam, że post nsharish jest bardzo pomocny. Zasugerowali, żebym dodał to do mojego vimrc:
au BufRead,BufNewFile *.jak set filetype=jak
i dodaj mój jak.vim
plik do~/.vim/syntax
Niestety ten kod jest w konflikcie z tymi dwiema liniami (w moim vimrc)
au BufWinLeave *.c mkview
au BufWinEnter *.c silent loadview
Używam tych dwóch do zapisywania foldów, lokalizacji kursora itp. Podczas ładowania vima (patrz :help lo
). Jeśli skomentuję te dwie linijki, sugestia nsharisha działa jak urok. Dzięki tym dwóm wierszom nie ma podświetlania w żadnym z moich plików.
Wniosek
Zaznaczyłem odpowiedź nsharish męska jako najlepszej odpowiedzi (bo jak najbardziej pomocne dla mnie). Jednak w ten sposób rozwiązałem problem:
Nsharish miał rację, potrzebowałem tej linii w moim .vimrc
:
syntax enable
au BufRead,BufNewFile *.jak set filetype=jak
Musiałem przenieść jak.vim
plik do ~/.vim/syntax
.
Jednak, jak wspomniano powyżej, wystąpił konflikt z tymi liniami:
au BufWinLeave * mkview
au BufWinEnter * silent loadview
Kiedy te linie zostały skomentowane, podświetlanie zadziałało.
Musiałem zmienić to ...set filetype...
na:
au BufWinEnter,BufRead,BufNewFile *.jak set filetype=jak
Myślę, że BufWinEnter jest wywoływany po pliku BufRead / BufNew, więc podświetlenie zostało zastąpione formatowaniem zapisanym z ostatniego razu.
Jeszcze raz dziękuję nsharish za pomoc w opracowaniu tego rozwiązania.