Найти и изменить некоторые кодировки 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 
  • Извлечение полей в файл и сохранение его в другом файле в vim
  • Vimrc, управление картой; к действию
  • Как установить vim в качестве редактора по умолчанию, когда я sudo?
  • Как я могу увеличить каталоги по умолчанию в дереве дерева vim?
  • Почему отображение <esc> приводит к сбою клавиш со стрелками в vim?
  • Установите автоматическое завершение для нового типа файлов
  • Изменение поведения gVim в Red Hat
  • Переключение между разделительными буферами в vim
  • Vim: s заменить первые N <g вхождения на строку
  • Звуковой сигнал при вводе обратной косой черты в обычном режиме cvim
  • Где найти каталог .vim?
  • Interesting Posts

    find утилита не распознает скобки

    В терминале терминологии, как мне изменить его оболочку входа?

    Что означает символ% в Makefile

    Почему curl дает мне html вместо файла?

    запуск сервера с nohup и перенаправление ввода, вывод

    Сценарий Ed работает только в том случае, если набирается медленно

    Vim printoptions не будет принимать два варианта одновременно

    Подавление стандартного вывода в vim-latex-suite

    Винная или виртуальная бокс для Windows для проприетарного программного обеспечения?

    Как использовать / etc / fbtab в OpenBSD для обеспечения безопасности X11?

    чтение заголовка окна экрана, в котором вы находитесь

    Установите initramfs для запроса luks passowrd при запуске на Mint 18?

    Прочитайте строку со значением по умолчанию в zsh

    Linux Fedora: могу ли я сохранить то, что я делаю, чтобы все было восстановлено, когда я снова включился

    Пожалуйста, объясните последовательность загрузки Solaris подробно

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