3

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

Как повторить )i<CR><Esc> до конца абзаца }? (<CR> = Enter)

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

4 ответа4

2
vap:s/\. /.^M/g
  • vap выбирает ваш текущий абзац
  • :s/\. /.^M/g заменить все периоды, за которыми следует пробел, с точкой, за которой следует новая строка. (Обратите внимание: чтобы получить этот буквальный символ новой строки (^M) в выражении замены, вам нужно будет набрать <CTRL-V><CR> .)
2

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

:%s/\v[ ]*([^\.]*\.)/\1\r/g
0

Мое решение, запустите в обычном режиме и введите:

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

Обратите внимание, что первые «<,»> будут автоматически вставлены в командную строку при нажатии клавиши «:» после ввода « vip » в обычном режиме.

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

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

0

Я обнаружил, что есть очень простой способ сделать это с помощью vim-macros .

  • Сначала в normal mode нажмите q , затем любую клавишу, предположим, что клавиша a . Таким образом, вы увидите что-то внизу как recording @a .
  • Теперь следуйте последовательности клавиш как 0)i<cr><esc>q Теперь ваш макрос записан. Это сломает параграф в . ,
  • Теперь повторите этот макрос столько раз, сколько раз нажмите N@a в обычном режиме, где N - любое число.

Примечание: Вы можете выбрать любой алфавитно-цифровой символ для хранения вашего макроса, кроме a , этот макрос разбивает строку на . Вы можете выбрать любой столбец, просто заменить . любым N по вашему выбору.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .