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

Путем вторжения в предложения я подразумеваю, что каждое новое предложение должно запуститься с новой строки.

Как повториться )i<CR><Esc> в конец абзаца }? (<CR> = Войдите),

Если я делаю макрос )i<CR><Esc> как "q", я могу выполнить его до конца абзаца?

4
задан 22.05.2011, 00:13

2 ответа

Можно сделать поиск и замену. Я просто выписал это. Это работает, но Вы могли, вероятно, добиться большего успеха.

:%s/\v[ ]*([^\.]*\.)/\1\r/g
2
ответ дан 07.12.2019, 20:44
vap:s/\. /.^M/g
  • vap выбирает Ваш текущий абзац
  • :s/\. /.^M/g замените все периоды, сопровождаемые пространством с периодом, сопровождаемым новой строкой. (Обратите внимание что получить ту литеральную новую строку (^M) в выражении замены необходимо будет ввести <CTRL-V><CR>.)
2
ответ дан 07.12.2019, 20:44

Мое решение, запустите в нормальном режиме и типе:

vip:'<,'>s/\n/ /|'<,'>s/\([.?!]\)\s/\1\r/g

Обратите внимание, что первое' <'>, будет автоматически вставлен на командной строке, когда Вы нажимаете ":" ключ после ввода"vip"в нормальном режиме.

Первая замена присоединяется к абзацу в одну строку, затем "|", символ разграничивает вторую:-команду в той же командной строке, и на этот раз"'<,'>"должен быть введен вручную. Вторая команда замены заменяет период, вопросительный знак или восклицательный знак, сопровождаемый пространством с символом соответствия и новой строкой.

Это не поймает экземпляры, где предложение заканчивается period/excalmation/question и символом кавычки, и т.д. но шаблон может быть расширен, чтобы сделать так.

0
ответ дан 07.12.2019, 20:44

Теги

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