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 auto complete custom list
  • В чем разница между vi и vim?
  • vim: можно открыть зашифрованный файл с помощью cli?
  • Как заменить слова в файле git rebase
  • Можем ли мы исправить уже исправленный шрифт?
  • Заменить все вхождения шаблона с помощью первой согласованной группы
  • Как я могу увеличить каталоги по умолчанию в дереве дерева vim?
  • Цветовое кодирование html цветных секретов в 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 для возврата к тому, что было захвачено.

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