Я определил время файла jak.vim
чтобы предлагать настраиваемое выделение, когда я делаю заметки, однако оно применяется к некоторым файлам, которые не имеют расширения .jak
. В частности, файл с именем progress.jlog
. Просто чтобы проверить, была ли проблема связана с этим расширением, я переименовал progress.jlog
в progress
(без расширения), но столкнулся с той же проблемой.
Что я сделал:
- Я создал
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: 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
К сожалению, этот код конфликтует с этими двумя строками (в моем vimrc)
au BufWinLeave *.c mkview
au BufWinEnter *.c silent loadview
Я использую эти два, чтобы сохранить свои сгибы, местоположение курсора и т.д. При загрузке vim (см . :help lo
). Если я закомментирую эти две строки, предложение nsharish работает как шарм. С этими двумя строками нет подсветки ни в одном из моих файлов.
Заключение
Я отметил ответ 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 за помощь в разработке этого решения.