Найти и изменить некоторые кодировки LaTeX в vim, используя регулярные выражения?

Как изменить следующую кодировку LaTeX:

\cite{1,3-7,9} 

в

 \cite{1,3,4,5,6,7,9} 

в vim? Я бы предпочел использовать регулярные выражения.

4 Solutions collect form web for “Найти и изменить некоторые кодировки LaTeX в vim, используя регулярные выражения?”

Вы можете использовать команду substitute vim для выполнения этого:

 :%s/\\cite{1,3-7,9}/\\cite{1,3,4,5,6,7,9}/g 

Это заменит все вхождения \cite{1,3-7,9} \cite{1,3,4,5,6,7,9} .

Чтобы заменить только те вхождения, которые существуют в текущей строке, вы можете использовать:

 :s/\\cite{1,3-7,9}/\\cite{1,3,4,5,6,7,9}/g 

Добавьте c если вы хотите, чтобы vim попросил подтверждения, прежде чем менять какие-либо строки. Например:

 :%s/\\cite{1,3-7,9}/\\cite{1,3,4,5,6,7,9}/gc 

Чтобы расширить любой отдельный экземпляр диапазона формы mn в выражении \cite{...} , вы можете сделать что-то вроде

  perl -pe 's/\\cite{(?:\d+,)*\K(\d+)-(\d+)(?=(?:,\d+)*})/sprintf "%s", join(",", ($1..$2))/e' file.tex 

С моим плагином PatternsOnText вы можете ограничить :substitute команды на соответствие шаблонам ( \cite{...} в вашем случае):

 :%SubstituteInSearch/\\cite{[^}]\+}/\(\d\+\)-\(\d\+\)/\=join(range(submatch(1),submatch(2)), ',')/g 

Регулярное выражение анализирует начальные и конечные числа и преобразует их в диапазон чисел через join() и range() , используя :help sub-replace-expr .

Часто vim поставляется вместе с Perl.

Возможность использования perl (или аналогичного) в Vim может быть применима.

Когда у вас есть +perl , вы можете использовать :perldo + @steeldriver (фактически небольшое изменение):

 :perldo s/\\cite{(?:\d+,)*\K(\d+)-(\d+)(?=(,.*?)?})/sprintf "%s",join(",", $1..$2)/e 
  • VI (который vi => / usr / bin / vim) показывает слишком много цветов в GNU / Linux
  • Как предотвратить `git difftool` от вызова другого` vimdiff`?
  • Остановите vim, вставляя выделение в виде текста!
  • Как сделать символическую ссылку на / usr / bin / vim, но с параметрами запуска?
  • Цветовая схема Vim не применяется
  • VIM комментирует, что я вставляю
  • Как автоматически обновлять Vim на фокусе буфера / окна?
  • Насколько отличается Элвис от Вима?
  • Открытие файлов в архивах от vim
  • Раскомментирование нескольких строк кода, заданных номерами строк, с использованием vi или vim
  • Почему команды не работают вместе в VIM, а только отдельно?
  • Сопоставьте команду оболочки, чтобы выполнить ее в vim
  • Interesting Posts

    Очистить буфер обмена X с помощью cron

    Тройная загрузка, окна 10, ubuntu (требуется перезаписать с помощью linux mint) и kali linux

    Не удается запустить Remarkable, редактор уценки, в Debian GNOME

    Установите последний GTK, не строя себя

    Почему я получаю разные результаты при запуске моего shellscript вручную, когда я запускаю его с помощью cron?

    Создание виртуальной машины Xen на сервере ubuntu

    Как использовать инструменты linux для проверки подлинности сайта

    Отключение линий разделения в vim

    Какие команды вы можете использовать в начале команды sed?

    Bash: Каково использование типа (встроенные Bash)?

    Ярлык клавиатуры для отправки текстовых строк в программу

    rsync с именем странных файлов

    Запуск сценария bash каждый раз, когда файл загружается?

    Создайте символическую ссылку относительно текущего каталога

    Как можно настроить псевдонимы bash для обработки пробелов в именах каталогов?

    Linux и Unix - лучшая ОС в мире.