Добавление символов в запуске и конце каждой строки в файле

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

41
задан Matt Chan 2 May 2012 в 17:20
поделиться

4 ответа

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

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

проще:

% s /.*/ "&"

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

53
ответ дан 27 November 2019 в 00:12
поделиться

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

cat foo.txt | sed s/^\(.*\)$/"\1"/g
2
ответ дан 27 November 2019 в 00:12
поделиться

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

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

3
ответ дан 27 November 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: