Jak wyróżnić skrypty Bash w Vim?
Mój edytor Vim automatycznie podświetla Pliki PHP (vim file.php
), Pliki HTML (vim file.html
) i tak dalej.
Ale kiedy wpiszę: vim file
i w środku napiszę skrypt Basha, to go nie podświetla.
Jak mogę powiedzieć Vimowi, aby podświetlił go jako skrypt Bash?
Zaczynam wpisywać #!/bin/bash
na górze pliku, ale to nie działa.
11 answers
Czy poprawnie dajesz skryptowi powłoki rozszerzenie .sh
? Automatyczny wybór składni Vima jest prawie całkowicie oparty na wykrywaniu nazwy pliku (rozszerzenia). Jeśli plik nie ma zestawu składni (lub jest błędną składnią), Vim nie zmieni automatycznie poprawnej składni tylko dlatego, że zacząłeś pisać skrypt w danym języku.
Jako tymczasowe obejście, polecenie :set syn=sh
włączy podświetlanie składni shell-script.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-05 02:53:01
Dotychczasowe odpowiedzi są poprawne, więc możesz użyć rozszerzenia (jak .sh
) lub linii shebang (jak #!/bin/bash
), aby zidentyfikować typ pliku. Jeśli nie masz jednego z nich, nadal możesz określić typ pliku ręcznie za pomocą komentarza modeline u góry lub u dołu pliku.
Na przykład, jeśli chcesz zidentyfikować skrypt bez rozszerzenia jako skrypt powłoki, możesz dodać ten komentarz na górze pliku:
# vim: set filetype=sh :
Lub
# vim: filetype=sh
To powie Vimowi, żeby leczył plik jako skrypt powłoki. (W modelinie można też ustawić inne rzeczy. W vim type :help modeline
Aby uzyskać więcej informacji.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-20 14:04:33
Vim może również wykrywać typy plików, sprawdzając ich zawartość (na przykład, jeśli pierwsza linia zawiera bash shebang), oto cytat z filetype.txt
help:
Jeśli twój typ pliku może zostać wykryty tylko przez sprawdzenie zawartości pliku
Utwórz katalog runtime użytkownika. Zwykle używasz pierwszej pozycji opcji "runtimepath". Przykład dla Uniksa:
:!mkdir ~/.vim
Utwórz w tym celu plik skryptu Vima. Przykład:
if did_filetype() " filetype already set..
finish " ..don't do these checks
endif
if getline(1) =~ '^#!.*\<mine\>'
setfiletype mine
elseif getline(1) =~? '\<drawing\>'
setfiletype drawing
endif
Zobacz $VIMRUNTIME / scripts.vim więcej przykładów. Zapisz ten plik jako " scripts.vim " w katalogu użytkownika runtime. Na przykład dla Uniksa:
:w ~/.vim/scripts.vim
Wykrywanie będzie działać od razu, nie ma potrzeby ponownego uruchamiania Vima.
Twoje Skrypty.vim jest ładowany przed domyślnym sprawdzaniem typów plików, które oznacza, że Twoje reguły zastępują domyślne reguły w $VIMRUNTIME / scripts.vim.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-05 08:02:22
W rzeczywistości podświetlanie składni jest cechą Vima, a nie vi. Spróbuj użyć polecenia vim, a następnie wykonaj
:syntax on
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-03 08:06:43
Przyszedłem na tę odpowiedź, szukając konkretnie, jak podkreślić bash
składnia, nie powłoka POSIX. Po prostu wykonanie set ft=sh
(lub równoważnego) spowoduje, że plik zostanie podświetlony dla powłoki POSIX, co pozostawia wiele składni poprawnych w bash
podświetlonych na Czerwono. Aby uzyskać podświetlenie Basha:
" Set a variable on the buffer that tells the sh syntax highlighter
" that this is bash:
let b:is_bash = 1
" Set the filetype to sh
set ft=sh
Zauważ, że jeśli Twoje ft
jest już sh
, nadal potrzebujesz komendy set
; w przeciwnym razie let
nie zacznie działać natychmiast.
Możesz uczynić to globalnym domyślnie zmienna global, tj. let g:is_bash = 1
.
:help ft-sh-syntax
to strona podręcznika, którą musiałem znaleźć; wyjaśnia to i jak wywołać podświetlanie innych smaków powłoki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 22:29:49
Vim może wykryć przez górny komentarz
Spróbuj tej linii na górze pliku
#!/bin/sh
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 14:56:51
Po dodaniu shebang u góry pliku, zapisz go i przeładuj (np. :w|e
) i kolorowanie składni może zadziałać.
Zobacz także Vim niekonsekwentne podświetlanie składni plików bash , przyjęta odpowiedź może również pomóc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-15 22:12:32
Vim domyślnie rozpoznaje wiele typów plików. Większość z nich działa na podstawie rozszerzeń plików, ale w takim przypadku vim przeanalizuje również zawartość pliku, aby odgadnąć odpowiedni typ.
Vim ustawia typ pliku dla określonych nazw plików, takich jak .bashrc
, .tcshrc
, itd. automatycznie. Ale Plik z rozszerzeniem .sh
zostanie rozpoznany jako skrypt csh, ksh lub bash. Aby określić, jaki to jest skrypt, vim czyta pierwszą linię pliku, ABY SPOJRZEĆ na #! Kolejka
Jeśli pierwsza linia zawiera słowo bash
, Plik jest identyfikowany jako skrypt bash. Zwykle widzisz #!/bin/bash
czy skrypt ma być wykonywany bezpośrednio, ale w przypadku pliku konfiguracyjnego powłoki użycie prostej # bash
również by zadziałało.
Jeśli chcesz spojrzeć na szczegóły, jest to zaimplementowane w $VIMRUNTIME/filetype.vim
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-16 23:36:45
Prawdopodobnie najprostszym sposobem na podświetlenie składni nowego pliku, jest ponowne wczytanie go po napisaniu linii shebang. Prosty :w
:e
zapisze plik, przeładuje go i zinterpretuje napisaną właśnie linię shebang, aby zapewnić odpowiednie podświetlenie składni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-24 10:32:22
Jeśli znasz już typ pliku przed otwarciem skryptu lub jeśli tworzysz nowy skrypt bez rozszerzenia, które jest powszechne, możesz przekazać go Vimowi w linii poleceń w następujący sposób:
vim -c 'setfiletype sh' path/to/script
vim -c 'setfiletype python' path/to/script
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-20 18:40:37
Gdy tworzysz nowy plik, w grę wchodzi tylko wykrywanie nazwy pliku; wykrywanie zawartości (#!/bin/bash
) nie ma zastosowania, jeśli wpiszesz go po utworzeniu nowego bufora.
Rozsądną rzeczą jest po prostu zrobić :set ft=bash
za pierwszym razem, a następny kiedy go edytujesz, #!/bin/bash
automatycznie ustawi odpowiedni typ pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 23:00:26