VIM Одно предложение в строке: разделено точками - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть простой текст, который я хотел бы поместить каждое предложение в отдельной строке.Я вижу некоторые ответы для Perl, но я использую исключительно Vim.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

В этих ответах для Perl, вероятно, использовались регулярные выражения , и преобразование синтаксиса регулярного выражения в Vim должно быть относительно простым.:help perl-patterns должен дать вам подсказки о том, как различается синтаксис.

Я хотел бы предложить другое решение, которое использует рекурсивное макроопределение и Vim's предложения движения (:help ().Во-первых, одна замена:

)hr<CR>

Это переходит к следующему предложению ()), затем возвращается к разделительному пробелу (h) и заменяет его новой строкой (r<CR>).).

Чтобы превратить это в макрос, который повторяется (до тех пор, пока какое-либо действие больше не может быть выполнено и оно прерывается), сначала очистите регистр макроса (например, a) и начните запись: qaqqa.Затем вставьте указанное выше действие и завершите вызовом макроса @q.Завершите макрос (q) и вызовите его (@a).Полный макрос (теперь используется регистр q):

qqqqq)hr<CR>@qq@q

Это остановится на пустых строках и сохранит разрывы строк внутри предложения;вы можете сначала :join все строки.Кроме того, вы также можете настроить замену (r<CR>), возможно, на команду c hange.Поскольку вы не упомянули в своем вопросе подробных требований, я оставлю это на этом.

0 голосов
/ 25 сентября 2018

Я не думаю, что вопрос слишком неясен.Я видел другие вопросы, которые были неясны с ответами ... так что ... позвольте мне попробовать?

Если предложения, которые вы хотите разделить, находятся в одной строке, а "точки" существуют только для разделения строки, то вы можете попробоватьследующая команда, чтобы разделить их:

:%s/\./.\r/g
     ^ ^ (change the dots by the character you want if needed)

Это будет искать глобально в буфере для ., подставит его себе (хмм) и добавит возврат строки (\r).

Тогда вам, возможно, придется удалить отступ с :%le, чтобы отформатировать строки слева.

ps: предложение Rkta (из комментария) %s/\([\.!\?]\)/\1\r/gc, кажется, тоже работает нормально (а может, и лучше?).Комментарий Amadam также актуален.

Добро пожаловать в stackoverflow.прочитайте страницу stackoverflow.com / tour , которая может помочь вашему квесту;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...