Regex соответствует началу и концу строки в Vim (цитата вокруг всей строки)

Для исходного файла с строками вроде этого примера:

1 12 123 1234 12345 

Требуемое состояние файла

 '1' '12' '123' '1234' '12345' 

Я делал это с двумя командами :%s/^/'/g и :%s/$/'/g , которые я хотел бы получить в одном. Однако, когда я пытаюсь

 :%s/[$^]/'/g 

Я получаю ошибку

 E486: Pattern not found: [$^] 

Я знаю, что ведущее ^ в скобках означает исключение, поэтому я полагал, что поставить $ first будет означать совпадение как с началом, так и с концом строк, чего, очевидно, не происходит.

Как я могу сопоставить начало и конец строк в vim?

  • Почему Vim отступал код неправильно?
  • Установить переменную среды для диспетчера файлов Ranger
  • Vim printoptions не будет принимать два варианта одновременно
  • Как я могу выйти из режима только для чтения в Vim?
  • Auto indent C ++ 11 лямбда-функций Vim
  • Как вызвать редактор vim и вывод канала в bash
  • Почему отображение <esc> приводит к сбою клавиш со стрелками в vim?
  • Vim: вставка строк по строкам
  • 4 Solutions collect form web for “Regex соответствует началу и концу строки в Vim (цитата вокруг всей строки)”

    ^ и $ не содержат эти значения (начало или конец строки) внутри [ ] , которое используется для выбора группы символов. Внутри [ ] большинство операторов регулярных выражений теряют смысл (и некоторые символы приобретают особый смысл или имеют другое значение). Ведущий ^ в [] означает, что группа отрицается – соответствует всем, кроме этих символов. Таким образом, [^$] соответствует любому символу, кроме $ . (И [$^] соответствует только символам ^ и $ .)

    Если вы хотите совместить начало или конец строки, используйте /^\|$/ , где | is ( или требуется (необходимо экранировать в режиме регулярного выражения Vim по умолчанию).

    Так:

     :%s/^\|$/'/g 

    Необходим g так как ^ и $ – два независимых совпадения, а s по умолчанию действует только на первое совпадение в строке.

    Как насчет:

     :%s/.*/'&'/ 

    Msgstr "Заменить ноль или более символов теми символами, которым предшествует и преследуется одна кавычка".

    С командой norm[al] и A чтобы добавить элемент управления, I должен добавить элемент управления, который мы делаем командой :exe[cute] для выполнения второй прединдовой «нормы», поскольку по умолчанию :norm[al] команда :norm[al] не может следовать другой команде as in :help :normal документация.

    поэтому команда будет следующей:

     :exe "%norm A'" |%norm I' 

    Обратите внимание, что % здесь выполняет изменения во всех строках.

    Вам не обязательно соответствовать начало и конец строки, если вы можете просто жадно соответствовать всему:

     :%s/\(.*\)/'\1'/ 

    Главное знать, чтобы избежать скобок, чтобы создать «группу захвата», а затем использовать \1 для возврата к тому, что было захвачено.

    Interesting Posts

    значок уведомления-демон

    Какой URL-адрес следует использовать для списка воспроизведения репозитория Fedora EPEL в конфигурации кикстарта?

    Toshiba Drive Sleeping – SDPARM

    Возможно ли, чтобы отчет о более значительном количестве дисков использовался, чем точка монтирования?

    Как настроить два или более IPv6-адреса на одной сетевой плате в FreeBSD?

    Устранение неполадок SSH на сервере Ubuntu

    Запуск Deamon с участием GPIO на Pi

    Obmenu не запускается: говорит, что мне не хватает модуля GTK

    В чем причина того, что функция lseek возвращает дескрипторы файлов как длинные целые числа?

    Возможно ли сохранить текст в нано с одним нажатием клавиши

    Что означает ** ___________ в / etc / shadow?

    Вложенный «awk» в цикле «while», проанализируйте два файла по строкам и сравните значения столбцов

    Обновлять обновления apt-get каждый раз

    Как использовать командную строку для изменения громкости?

    Из-за сломанного монитора мне нужно настроить только правую половину экрана

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