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

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

\cite{1,3-7,9} 

в

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

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

  • Как я могу перейти к файлам из vim, открывая их на отдельной вкладке?
  • Свернуть линию вертикально, чтобы каждое слово находилось на новой строке
  • Vim, контекстно-зависимое поведение комментариев / неудобств
  • Как установить bash-псевдонимы и переменные из vim?
  • (Vim) Как использовать TAB для отступов во всех типах файлов?
  • Что может заставить vim не сохранять историю команд?
  • Как вызвать редактор vim и вывод канала в bash
  • Выделите дополнительные пробелы и столбцы фиксированной длины в 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 
    Interesting Posts

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

    Безопасное удаление ОЗУ с помощью sdmem при выключении

    Переместите установку linux с помощью btrfs в подчиненном стандарте по умолчанию (subvolid = 0) на другой подвыбор

    ubuntu, как lightdm в arch linux

    Ошибка тестирования DocBook DSSSL

    Linux Mint вешает проверку батареи, не может получить доступ к терминалу

    Есть ли способ сканирования локальной сети с включенной dhcp для просмотра IP-адреса подключенных устройств с компьютера GNU / Linux?

    Как использовать для вывода dpkg -L с номерами строк?

    Изменение файлового менеджера по умолчанию в Arch Linux с E17 до Dolphin

    Cron работает, но crontab -l говорит, что нет рабочих мест

    Проблемы с маршрутизацией FreeBSD и StrongSwan

    Система продолжает сбой

    Настольный Linux на планшете LG V500 android

    «Обновляет» zip-файл с опцией -FS изменяет время модификации файла?

    Инструмент командной строки для отпечатков пальцев и тегов MP3

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