Podświetlanie Vima dla określonych typów plików (gdzie umieścić pliki składniowe, zdarzenia vim, wiersz do wstawienia do vimrc)

17

Zdefiniowałem czas pliku, jak.vimaby oferować niestandardowe wyróżnianie podczas robienia notatek, jednak jest on stosowany do niektórych plików, które nie mają .jakrozszerzenia. W szczególności plik o nazwie progress.jlog. Żeby sprawdzić, czy problem dotyczy konkretnego rozszerzenia, którego nazwa zmieniłem progress.jlogna progress(brak rozszerzenia), ale wystąpił ten sam problem.

Co ja zrobiłem:

  • Utworzyłem jak.vimw 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.vimwyglą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 .vimrcwyglą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.vimplik 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.vimplik 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.

sześćdziesiąt stóp
źródło
1
w jakim sensie instrukcje * .c są sprzeczne z instrukcją * .jak?
akira

Odpowiedzi:

10

Próbowałeś tego ...

  • Umieść swój jak.vim w folderze .vim / syntax
  • umieść następujące wiersze tylko w pliku .vimrc.
włącz składnię 
au BufRead, BufNewFile * .jak set filetype = jak
Próbowałem tego z twoim plikiem jak.vim .... To działało dobrze dla mnie ....
Używam vim7.2 ...
edytuj:
Wypróbuj,
miałem ten sam problem z tymi liniami mkview i loadview ... wystarczy ustawić typ pliku jeden raz w pliku, a wtedy zostanie on zachowany

Otwórz plik, a następnie wykonaj polecenie „ : set ft = jak ”, zapisz plik i wyjdź z vima .... Teraz ponownie otwórz plik ... podświetlanie składni powinno już działać ...
mkview i loadview wydają się zapisywać ostatnie ustawienia podświetlania składni również....

asdfg
źródło
próbujesz teraz ... Ale czy wiesz, co robi folder .vim / ftdetect /? Zachowuję się tak, że każdy plik formatujący ma zastosowanie do wszystkich typów plików.
sixtyfootersdude
Huh, to częściowo zadziałało .. Jednak w moim vimrc wystąpił konflikt z dwiema innymi liniami. Zobacz moją aktualizację.
sixtyfootersdude
2

Muszę przyznać, że nie wiem na pewno, jak przydatne byłoby to dla ciebie ... Ale ...

http://beerpla.net/2008/04/02/how-to-add-a-vim-file-extension-to-syntax-highlighting/

Dołączyłem tekst, gdy strona zostanie zdjęta ... Lub zmieniona ...

Jak dodać rozszerzenie pliku, aby wyróżnić składnię vima Wysłany przez Artem Russakovskii 2 kwietnia 2008 w bazach danych, Linux, Programowanie 24 pyszne zapisy 2 diggs Udostępnij 3retweet

Aktualizacja: 8 lipca 2009 r

Dzisiaj zadano mi pytanie o zdefiniowanie niestandardowych rozszerzeń do podświetlania składni vima, tak aby na przykład vim wiedział, że przyklad.lmx jest w rzeczywistości typu xml i zastosuje do niego wyróżnianie składni xml. Wiem, że vim już automatycznie robi to nie tylko na podstawie rozszerzenia, ale szukając pewnych ciągów wewnątrz tekstu, takich jak

Po przekopaniu znalazłem rozwiązanie. Dodaj następujące pliki do ~ / .vimrc (plik konfiguracyjny vim):

1 2 3 składnia na typ pliku w pliku BufNewFile, BufRead * .lmx set filetype = xml Po zastosowaniu, mój plik .lmx jest podświetlony:

Ta sama zasada działa na przykład w przypadku zrzutów MySQL, które muszę wykonywać od czasu do czasu. Jeśli nie mają rozszerzenia .sql, otrzymasz coś takiego:

Po

1 2 3 składnia na typ pliku na au BufNewFile, BufRead * .dump set filetype = sql wszystko jest w porządku:

Ale dlaczego i jak to działa, pytasz?

: help au: au [tocmd] [group] {event} {pat} [nested] {cmd}

Dodaj {cmd} do listy poleceń, które Vim wykona automatycznie w {event} dla pliku pasującego {pat}. : help BufNewFile Po rozpoczęciu edycji pliku, który nie istnieje. : help BufRead Po rozpoczęciu edycji nowego bufora, po wczytaniu pliku do bufora. : help typ pliku opowie całą historię w części B. I tak to robicie, ludzie.

Benjamin Schollnick
źródło
Huh, niedługo lepiej się temu przyjrzę, ale wygląda na użyteczne ...
sixtyfootersdude
To może potencjalnie rozwiązać jeden problem, ale nie sądzę, że rozwiąże ten problem ... Myślę, że kluczem do tego jest .vim/ftdetectkatalog ...
sixtyfootersdude
Szczerze mówiąc, nawet nie używam VIM, więc muszę ci
wierzyć
1

Próbowałem odtworzyć to, co zrobiłeś, ale nie mogłem zastosować typu pliku do innych rozszerzeń.

Odkryłem również, że pomogło to:

Plik pomocy Vima dla „new-filetype” wspomina o tworzeniu własnego „filetype.vim” ~/.vim/filetype.vim i zapisywaniu poleceń auto w tym pliku:

if exists("did_load_filetypes")
  finish
endif
augroup filetypedetect
  au! BufRead,BufNewFile *.jak      setfiletype jak
augroup END

Wszystkie polecenia składni i podświetlania z twojego jak.vim muszą być przechowywane pod ~/.vim/syntax, więc skopiuj je do ~/.vim/syntax/jak.vim(bez aupolecenia).

Będziesz także musiał wyjść z Vima i uruchomić go ponownie, aby pobrać zmiany.

njd
źródło
1

Wydaje mi się, że wszystko może się zmienić, ale nie jestem ekspertem od vimów.

Plik podświetlania składni powinien znajdować się w katalogu składni. Zalecenia nsharish mogą dotyczyć tego, co trafia do pliku, który umieścisz w ftdetect.

Ta część:

au BufRead,BufNewFile *.jak set filetype=jak

W .vimrc może być konieczne dodanie wiersza, takiego jak:

au! syntax jak source $VIM/syntax/jak.vim

IMHO, w ten sposób ma to większy sens. Mam nadzieję, że to pomoże.


źródło