Выделите дополнительные пробелы и столбец фиксированной длины в VIM

Можно использовать $ синтаксиса {variable:offset:length} для получения частей переменных как это:

if [[ ${filemsgCICS:0:4} = "&red" || ${filemsgCICSU1:0:4} = "&red" || \
  ${snufmsgCICS:0:4} = "&red" || ${snufmsgCICSU1:0:4} = "&red" ]]; then

Править: Мой комментарий о * не соответствие [[]] был неправильным. Ваш метод должен был работать также, если переменные содержат текст как ожидалось. Таким образом, это - просто альтернативный путь.

2
27.06.2014, 07:50
2 ответа

Проблема в том, что каждая команда :match перекрывает шаблон предыдущей; они не являются кумулятивными! Поэтому существуют варианты :2match и :3match. Используйте один из них:

highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
highlight OverLength ctermbg=red guibg=#525252
2match OverLength /\%81v.\+/

Дополнительные варианты можно создать функцией matchadd() Vimscript.

Notes

  • Начиная с версии 7.3, есть встроенная опция 'colorcolumn', которая включает подсветку столбца(ов).
  • Ваша установка в ~/.vimrc работает только для самого первого окна; т.е. :split создаст окно, в котором не будет этих подсветки. Это можно исправить с помощью autocmds (или с помощью опции 'colorcolumn').
  • Есть более надежные и сложные решения для подсветки трейлинга пробелами, например мой плагин ShowTrailingWhitespace. (На странице плагина есть ссылки на альтернативные плагины.)
5
27.01.2020, 21:52

Возможно, ваша цветовая схема перекрыла вашу конфигурацию. Вы можете добавить эти строки в конце .vimrc, чтобы предотвратить переопределение, или просто добавить эти строки в Ваш .vimrc:

" Highlight trailing white spaces
highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

" Highlight long lines
highlight OverLength ctermbg=green ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
autocmd BufWinEnter * match OverLength /\%81v.\+/
autocmd InsertEnter * match OverLength /\%81v.\+/
autocmd InsertLeave * match OverLength /\%81v.\+/
autocmd BufWinLeave * call clearmatches()
2
27.01.2020, 21:52

Теги

Похожие вопросы