Skróty typu pliku w vimie

0

Dodałem 4 następujące wiersze do mojego pliku vimrc, aby dodać skróty (aby uruchomić bieżący bufor * .html w przeglądarce i uruchomić bieżący plik * .js w węźle):

autocmd filetype html map <C-S-F10> :sav %<CR>:! chromium-browser %<Enter>
autocmd filetype html inoremap <C-S-F10> <Esc>:sav %<CR>:! chromium-browser %<Enter>
autocmd filetype javascript map <C-S-F10> :sav %<CR>:! node %<Enter>
autocmd filetype javascript inoremap <C-S-F10> <Esc>:sav %<CR>:! node %<Enter>

Działa dobrze, gdy mam tylko pliki HTML lub tylko pliki JavaScript otwarte. Ale kiedy mam dowolną kombinację tych typów plików otwartą w różnych buforach (używając kart) i chcę otworzyć plik HTML w przeglądarce i nacisnąć Ctrl+ Shift+ F10mój plik HTML przechodzi do węzła, co powoduje błąd kompilacji.

Postęp:

Kiedy piszę :set filetype, mówi htmlo javascriptplikach * .html i * .js. Problem nie dotyczy niewłaściwego typu pliku.

Próbowałem ustawić skrót Alt+ Shift+ F10do otwierania w przeglądarce i to jakoś rozwiązuje mój problem. Teraz, gdy oba typy plików plus pliki bez rodzaju pliku są otwarte w tym samym czasie, mogę otworzyć dowolny (html, js i zwykły tekst) typ pliku w przeglądarce za pomocą Alt+ Shift+ F10i wysłać go do węzła, aby skompilować z Ctrl+ Shift+ F10. Dlaczego tak się dzieje

Oto mój plik vimrc . Wersja Vima to 7.4

Alexander
źródło

Odpowiedzi:

0

Lepiej jest dodać wtyczki typu pliku do sekcji po katalogu środowiska wykonawczego vim użytkownika i zdefiniować tam swoje mapowania bez użycia autocmd.

Na przykład ~/.vim/after/ftplugin/html.vimwstawiłbyś swoje mapowania HTML, a ~/.vim/after/ftplugin/javascript.vimdla JavaScript.

To jednak nie rozwiąże twojego problemu. Musisz ustawić buforowanie na lokalne. Wypróbuj to, w przypadku buforów HTML:

map <buffer> <C-S-F10> :sav %<CR>:! chromium-browser %<Enter>
inoremap <buffer> <C-S-F10> <Esc>:sav %<CR>:! chromium-browser %<Enter>

I to w przypadku buforów JavaScript:

map <buffer> <C-S-F10> :sav %<CR>:! node %<Enter>
inoremap <buffer> <C-S-F10> <Esc>:sav %<CR>:! node %<Enter>

Widzieć:

:help :map-local
Heptyt
źródło
Dzięki, twoje rozwiązanie zadziałało. „Lepiej jest dodawać wtyczki typu pliku do sekcji po katalogu użytkownika środowiska wykonawczego vim” - jakie są zalety oprócz tego, że nie powoduje wzdęcia pliku vimrc? Pomyślałem, że wygodniej jest mieć całą konfigurację w jednym miejscu.
Alexander
Głównie wiesz na pewno, że twoje mapowania zostaną zdefiniowane po pozyskaniu wszystkich elementów systemowych, więc w razie potrzeby możesz zastąpić elementy systemowe. Jeśli użyjesz autocmd, nie ma gwarancji, że wydarzy się w tej kolejności (a tak naprawdę prawdopodobnie nie będzie).
Heptyt