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

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

\cite{1,3-7,9} 

в

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

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

  • Добавьте последовательные числа с явным и элегантным индексом
  • vim, чтобы открыть файл под курсором в уже открывшемся окне
  • Vim открывается в неправильном эмуляторе терминала
  • Есть ли Vim, как «Окно командной строки» для Bash?
  • Визовый режим Vim - есть ли способ изменить цвет фона только в визуальном режиме?
  • vimdiff - Пользовательское имя файла возможно во время экспорта?
  • Условный поиск и замена на строке в vim?
  • Почему последовательность CR (\ r) вводится в файл .vimrc?
  • 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 на версиях EOL Ubuntu?

    sed или awk: удалить строку, которая начинается с числа и заканчивается на rpm

    Защита данных от битовой гнили

    Назначение нескольких адресов IPv6 для одного интерфейса для веб-сервера https?

    Отобразить физический путь USB-устройства к номеру шины / устройства, возвращенному lsusb

    Клавиатурные привязки от bash до zsh?

    где показать пользовательскую информацию, когда успешно открыть физическую машину или подключить удаленный компьютер или войти в систему в centos 7

    Хотите, чтобы Windows загружалась вместо Grub

    Дублирование значка Opera в Gnome Shell Dash

    Изменение времени изменения файла для доступа к времени в массовом порядке

    Действие на другом дисплее при использовании SSH

    git commit error – невозможно запустить vim: нет такого файла или каталога

    Как найти PID процесса, который владеет пойманным пакетом с libpcap в c?

    Типы файловой системы для зашифрованных разделов

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