Vim и LaTeX. Как скрыть "\ ref {name}" как "[имя]" в Vim с помощью скрытого синтаксиса - PullRequest
1 голос
/ 21 марта 2019

Рассмотрим следующий текст как часть файла LaTeX .tex:

This is some latex file, with a citation \ref{citationName} which is great

Я хотел бы использовать функцию скрытия синтаксиса Vim, чтобы превратить эту строку в:

This is some latex file, with a citation [citationName] which is great

Следующее выражение регулярного выражения поиска и замены превратит первую строку во вторую: :s/\v\\ref\{(\w+)}/[\1]/

Однако это однократная замена текста, и я хотел бы использовать функцию скрытия синтаксиса vim, например:

  • Если курсор находится на строке, содержащей \ref{name}, в исходном тексте отображается
  • Если курсор НЕ находится на строке, содержащей \ref{name}, то такой текст заменяется (скрывается) на [name]

Я прочитал :help conceal и :help syntax, но мне совершенно не удалось решить эту проблему.

Вопрос

Как я могу использовать функцию маскировки Vim, чтобы получить поведение, указанное выше?

Попытка 1 : Я уверен, что я не смогу использовать регулярное выражение, определенное выше, как есть. Однако я могу разбить проблему на две части:

  • Скрыть строку \ref{ (регулярное выражение: \\ref\{) с символом [
  • Скрыть строку }, которой предшествует \ref{ (необычное регулярное выражение: \v(\\ref\{(w+))@<=}) с символом ]

Имея оба регулярных выражения, которые найдут текст, который я хочу скрыть, и символы, с которыми я хочу их скрыть, как я могу их на самом деле скрыть?

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете заменить \ref{name} на [name], поместив в ваш .vimrc следующее:

au VimEnter * syntax region Statement start='\\ref{' end='}' transparent contains=myStart,myEnd
au VimEnter * syntax match myStart '\\ref{\ze\w\+' contained conceal cchar=[
au VimEnter * syntax match myEnd '\(\\ref{\w\+\)\@<=\zs}' contained conceal cchar=]

au VimEnter * hi! link Conceal Statement
au VimEnter * set conceallevel=2

Edit: Как @ D.BenKnoble упомянул, это не самый красивый / самый умный способ сделать это. Возможно, вы захотите взглянуть на Latex-Suite или автокоманды, относящиеся к типу файла .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...