Подсветка синтаксиса VIM выполняется с помощью файла синтаксиса. Войдите в VIM и введите :echo $VIMRUNTIME
. Это сообщит вам каталог VIMRUNTIME
. В этом каталоге есть каталог с именем syntax
. Внутри это определения синтаксиса. Существует файл с именем sh.vim
, который содержит определения для BASH, Kornshell и Bourne shell.
Оглянитесь вокруг линии # 400 файла, вы увидите что-то вроде этого:
" Special ${parameter OPERATOR word} handling: {{{1
" sh ksh bash : ${parameter:-word} word is default value
" sh ksh bash : ${parameter:=word} assign word as default value
" sh ksh bash : ${parameter:?word} display word if parameter is null
" sh ksh bash : ${parameter:+word} use word if parameter is not null, otherwise nothing
" ksh bash : ${parameter#pattern} remove small left pattern
" ksh bash : ${parameter##pattern} remove large left pattern
" ksh bash : ${parameter%pattern} remove small right pattern
" ksh bash : ${parameter%%pattern} remove large right pattern
Он находится в ЭТА раздел, который определяет образцы, и они законными или нет ли. Вам нужно определить область, которая выглядит следующим образом:
if exists("b:is_bash")
Here be dragons
endif
На самом деле, я вижу один дальше вниз по линии № 423 в последней версии файла sh.vim
, так что вы не должны определить свои собственные ,
Теперь все, что вам нужно сделать, это заменить раздел Here be dragons
на что-то, что определяет синтаксис, который вы хотите показать, а не ошибку. Я не знаю достаточно синтаксиса VIM, чтобы рассказать вам. Однако это не выглядит сложным. Сделайте резервную копию старого sh.vim
и получите удовольствие. Верьте или нет, все это задокументировано прямо в VIM. Я изменил файлы синтаксиса для Perl и Python без особых проблем.
вы также можете перейти на https://vim.svn.sourceforge.net/svnroot/vim/vim7/runtime/syntax/ и посмотреть, есть ли новый файл sh.vim
, который может содержать исправление синтаксиса, в котором вы нуждаетесь.
Вы также можете сообщить об этом проблеме VIM project и сообщить им об этой проблеме. Они очень хорошо разбираются в таких вещах, а затем вы можете загрузить последнее исправление на URL-адрес Subversion выше.
Я не думаю, что 'echo $ {mystr ,,}' работает ... Но я вижу вашу проблему. Например, 'echo $ {mystr // A/a}' выделяется как ошибка. –
@Tim работает в bash 4.0 - http://stackoverflow.com/questions/2264428/converting-string-to-lower-case-in-bash-shell-scripting – maverick
А, я только что подтвердил это. Darn new features ... –