Попробуйте метод rstrip()
(см. документ Python 2 и Python 3 )
>>> 'test string\n'.rstrip()
'test string'
полосы метода Python rstrip()
весь виды запаздывающего пробела по умолчанию, не всего одна новая строка как Perl делает с [1 111] chomp
.
>>> 'test string \n \r\n\n\r \n\n'.rstrip()
'test string'
Для разделения только новых строк:
>>> 'test string \n \r\n\n\r \n\n'.rstrip('\n')
'test string \n \r\n\n\r '
существуют также методы lstrip()
и strip()
:
>>> s = " \n\r\n \n abc def \n\r\n \n "
>>> s.strip()
'abc def'
>>> s.lstrip()
'abc def \n\r\n \n '
>>> s.rstrip()
' \n\r\n \n abc def'
Перейдите к первому foo
, нажмите Ctrl - v , чтобы войти в режим визуального блока, и нажимайте, пока все строки с foo
помечены. Затем нажмите Shift - i , чтобы вставить в начало (блока). Когда вы закончите и нажмите Esc , вставленные символы будут добавлены в каждую строку слева от отмеченного блока.
Чтобы вставить в конце, снова нажмите Ctrl - v , переместитесь вверх / вниз, чтобы отметить все затронутые строки, а затем нажмите End или $ , чтобы расширить выделение до конца строк. Теперь вы можете нажать Shift - a , чтобы добавить в конец всех строк, как раньше с Shift - i .
Визуальный выбор также может быть выполнен с помощью обычных команд перемещения. Итак, чтобы прокомментировать весь блок в C, вы можете перейти к открывающей скобке и ввести Ctrl - v % Shift - i / / Esc .
Чтобы ответить на ваш первый вопрос, приведенный ниже
:%s/foo/bar(&)/g
будет искать foo
и окружать совпавший шаблон bar ()
. / g
сделает это несколько раз в одной строке.
Поскольку вы просто сопоставляете foo
, вы можете сделать простой : s / foo / bar ( foo) / g
. Однако приведенное выше будет работать, если вы решите использовать регулярное выражение, а не простое слово (например, f [az] [az]
). Знак «&» в приведенном выше значении представляет то, что вы нашли.
Для префикса набора строк я использую один из двух разных подходов:
Один из подходов - это выбор блока (упоминается как sth). В общем, вы можете выбрать прямоугольную область с помощью ctrl-V с последующим перемещением курсора. После того, как вы выделили прямоугольник, нажатие shift-I вставит символы в левую часть прямоугольника или shift-A добавит их в правую сторону прямоугольника. Таким образом, вы можете использовать эту технику для создания прямоугольника, включающего крайний левый столбец строк, которые вы хотите префикс, нажмите shift-I , введите префикс, а затем нажмите escape.
Другой подход заключается в использовании подстановки (как упоминал Брайан Агнью). Подстановка Брайана повлияет на весь файл (% в команде означает «все строки»). Чтобы воздействовать только на несколько строк, самый простой способ - нажать shift-V (который включает режим визуальной строки), находясь на первой / последней строке, а затем перейти к последней / первой строке. Затем введите:
:s/^/YOUR PREFIX/
^ - это регулярное выражение (в данном случае начало строки). Набрав это в режиме визуальной линии, вы увидите, что перед s автоматически вставляется '<,'>. Это означает, что диапазон подстановки будет визуальным выбором.
Дополнительный совет: если ваш префикс содержит косые черты, вы можете либо экранировать их с помощью обратной косой черты, либо использовать другой символ пунктуации в качестве разделителя в команде. Например, чтобы добавить комментарии к строкам C ++, я обычно пишу:
:s:^:// :
Для добавления суффикса метод подстановки обычно проще, если все ваши строки не имеют абсолютно одинаковой длины. Просто используйте $ для шаблона вместо ^, и ваша строка будет добавлена вместо префикса.
Если вы хотите добавить префикс и суффикс одновременно, вы можете сделать что-то вроде этого:
:s/.*/PREFIX & SUFFIX/
. * Соответствует вся линия. & В замене возвращает совпадающий текст (всю строку), но теперь к нему будут добавлены ваш префикс и суффикс.
Кстати: при комментировании кода вы, вероятно, захотите раскомментировать его позже. Вы можете использовать visual-block ( ctrl-V ), чтобы выбрать косые черты, а затем нажать d, чтобы удалить их, или вы можете использовать подстановку (возможно, с визуальным выделением строки, сделанным с помощью shift- V ), чтобы удалить начальные косые черты следующим образом:
:s:// ::
Для комментариев в стиле C используйте ответ Брайана с регулярным выражением и сопоставьте в конце строки $
и вставьте прочь.
Еще одна возможность (вероятно, не очень полезная в вашем тестовом примере, но удобная в других ситуациях) - оцепить область, которую вы хотите изменить, метками.
: 'a,' bs / foo / bar (&) /
Мне обычно нравится режим визуального блока, если все видно на экране, и я обычно предпочитаю метки, если начало и конец разделены множеством экранов.