Я пытаюсь заставить Vim выделять не-ASCII символы. Есть ли доступный параметр, шаблон поиска регулярных выражений или плагин для этого?
153
Используя диапазон в []
классе символов в своем поиске, вы должны иметь возможность исключить шестнадцатеричный диапазон символов ASCII, поэтому выделите (при условии, что вы hlsearch
включили) все остальные символы, лежащие вне диапазона ASCII:
/[^\x00-\x7F]
Это даст отрицательное совпадение (через [^]
) для символов между ASCII 0x00
и ASCII 0x7F
(0-127), и, похоже, будет работать в моем простом тесте. Для расширенного ASCII, конечно, расширить диапазон до \xFF
вместо \x7F
использования /[^\x00-\xFF]
.
Вы также можете выразить это в десятичном виде через \d
:
/[^\d0-\d127]
Если вам нужно что-то более конкретное, например, исключение непечатаемых символов, вам необходимо добавить эти диапазоны в класс символов []
.
/[^\d0-\d127]
Да, есть встроенная функция подсветки для любых совпадающих строк. Внутри Vim сделайте:
syn-match
определяет строку, которая совпадает попадают в группу.highlight
определяет цвет, используемый группой. Просто подумайте о подсветке синтаксиса для ваших файлов vimrc.Таким образом, вы можете использовать следующие команды в вашем файле .vimrc:
источник
:
перед командами в вашем vimrc.termbg
не кажется допустимой командой в VIM 7.3, установленной на Ubuntu Server 12.10.termbg
, похоже, не является допустимым параметром в VIM 7.3, установленном на Ubuntu Server 12.10.term
не может иметь цвет фона, в то время как цветной терминалcterm
может.Для других (отныне менее несчастливых) людей, попавших сюда через поисковую систему и не способных выделять символы, не входящие в ASCII, попробуйте это (поместите это в свой .vimrc):
Это дает дополнительное преимущество, заключающееся в том, что не вступает в противоречие с обычными (на основе типа файла [расширение файла]) синтаксическими определениями.
источник
E319: Sorry, the command is not available in this version: au BufReadPost * syntax match nonascii "[^\u0000-\u007F]" Press ENTER or type command to continue
Linux Mint 17,3containedin=ALL
в конце последней строки, что делает егоau BufReadPost * syntax match nonascii "[^\u0000-\u007F]" containedin=ALL
. Я считаю, что отвлечение внимания стоит (когда разрешен юникод), оригинальный ответ здесь не улавливает такие вещи, как не-ascii-код внутриif
оператора ...autocmd BufRead ....
группу в vim, если у вас нет веских причин не ...Это регулярное выражение работает также. Это был первый хит Google для "vim удалить не-ascii персонажей" с briceolion.com, и он
:set hlsearch
выделит:источник
:%s/[^[:alnum:][:punct:][:space:]]//gc
который выдвигает на первый план сначала, затем заменяет.Если вас интересуют также непечатные символы, используйте этот:
/[^\x00-\xff]/
Я использую это в функции:
источник
enc
наfenc
. Я изменил кодировку, потому что моя кодировка по умолчанию (была в 2013 году) latin1. Функция не выделяет непечатаемые символы, если набор символов - латинский. Чтобы увидеть выделение, у вас должен быть ключERROR
в файле цветового синтаксиса. Это мое:hi Error guifg=Black guibg=Orange
Основываясь на других ответах на эту тему и ответе, который я получил здесь, я добавил это к своему
.vimrc
, чтобы я мог контролировать подсветку не-ascii, печатая<C-w>1
. Он также показывает внутренние комментарии, хотя вам нужно будет добавить группу комментариев для каждого синтаксиса файла, который вы будете использовать. То есть, если вы отредактируете файл zsh, вам нужно будет добавитьzshComment
в строкув противном случае он не будет отображать символы, отличные от ascii (вы также можете установить в составеinsin = ALL, если вы хотите, чтобы символы, не входящие в ascii, отображались во всех группах). Чтобы проверить, как комментарий вызывается для файла другого типа, откройте файл нужного типа и введите
:sy
vim, затем выполните поиск по элементам синтаксиса для комментария.источник
Так или иначе ни один из вышеупомянутых ответов не работал для меня.
Так что я использовал
:1,$ s/[^0-9a-zA-Z,-_\.]//g
Он хранит большинство персонажей, которые меня интересуют.
источник
Кто-то уже ответил на вопрос. Однако для других, у которых все еще есть проблемы, здесь есть другое решение, чтобы выделить не-ascii символы в комментариях (или любую синтаксическую группу в этом вопросе). Это не самое лучшее, но это временное исправление.
Можно попробовать:
Это имеет смешанные части из других решений. Вы можете удалить
contained
, но из документации может возникнуть потенциальная проблема повторения самого себя (насколько я понимаю). Чтобы просмотреть другие определенные шаблоны,syn-contains
раздел должен содержать его.Реплицированная проблема из: Установите элемент на более высокий приоритет подсветки на vim
источник