Добавление символов в начале и конце каждой строки в файле - PullRequest
41 голосов
/ 10 июля 2010

Каков наилучший способ добавить несколько символов в начале и конце каждой строки? Это можно сделать с помощью Vim или другим способом?

Ответы [ 4 ]

65 голосов
/ 10 июля 2010

В vim вы можете выполнить

:%s/^\(.*\)$/"\1"/
  • s/regex/replace/ - это команда vim для поиска и замены.
  • % позволяет применять ее во всем файле
  • ^ и $ обозначают начало и конец строки соответственно.
  • (.*) фиксирует все промежуточное.( и ) необходимо экранировать в регулярных выражениях vim.
  • \1 помещает захваченный контент между двумя кавычками.
53 голосов
/ 11 июля 2010

проще:

%s/.*/"&"

Объяснение: По умолчанию шаблон интерпретируется как максимально возможное совпадение, поэтому .* интерпретируется как целая строка, без необходимости^ и $.И хотя \( ... \) может быть полезно при выборе части шаблона, он не нужен для всего шаблона, который представлен в замещении &.И последний / в поиске или замене не нужен, если не следует что-то еще;хотя оставить его можно считать ленью.(Если это так, я ленивый.)

3 голосов
/ 15 июля 2010

Два ответа на вопрос %s идеальны, и я ожидаю, что вы научитесь любить %s и часто его использовать. Но если вам захочется часто окружать другие блоки текста, вы должны сами проверить плагин round.vim , который позволит вам делать то, что вы просили, с помощью следующих четырех нажатий клавиш: yss" И есть много других полезных встроенных целей окружения. Например, чтобы окружить текущее слово двойными кавычками: csw", а изменить окружающие одинарные кавычки на двойные кавычки: cs'".

round.vim - один из моих любимых плагинов vim, и я использую его ежедневно.

2 голосов
/ 10 июля 2010

лучше использовать утилиту sed (особенно если вам нужно написать скрипт)

cat foo.txt | sed s/^\(.*\)$/"\1"/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...