vim - VIM 每行一个句子:用句点分隔
问题描述
我有一个纯文本,我想将每个句子放在单独的行上。我看到了一些 Perl 的答案,但我只使用 Vim。
解决方案
Perl 的那些答案可能使用了正则表达式,并且将正则表达式语法转换为 Vim 的语法应该相对容易。:help perl-patterns
应该为您提供有关语法差异的线索。
我想提出一个不同的解决方案,它采用递归宏定义和 Vim 的句子动作( :help (
)。一、单次替换:
)hr<CR>
这会跳转到下一个句子 ( )
),然后移回分隔空格 ( h
),并用换行符 ( r<CR>
) 替换它。
要将其变成重复自身的宏(直到某些操作无法再执行并中止),首先清除宏寄存器(例如a
)并开始录制:qaqqa
。然后插入上述动作,并以宏调用结束@q
。结束宏 ( q
) 并调用它 ( @a
)。完整的宏(现在使用 register q
):
qqqqq)hr<CR>@qq@q
这将在空行处停止并在句子中保留换行符;你可能想先:join
所有线路。或者,您也可以调整替换 ( r<CR>
),也许是一个c
hange 命令。由于您没有在问题中提及任何详细要求,因此我将其保留。
推荐阅读
- three.js - 三.js:如何计算多少个屏幕像素代表1个世界坐标单位
- javascript - React Autosuggest 输入的访问值
- javascript - 在两列上传播 D3.js 图例
- azure-functions - AF 绑定到 CosmosDb
- javascript - Instagram API:如何在 Angular 中捕获 access_token 2/4/5
- android - React Native:如何调试由 React Native 引起的异常?
- python-2.7 - Python Turtle 的问题
- spring-boot - SpringBoot Data JPA Specification 不适用于 1.5.10.RELEASE 版本的 IN CLUASE
- hyperledger-fabric - 使用 REST API(示例应用程序)加入对等通道失败,在 nodejs 终端上说 FORBIDDEN
- dictionary - 移除旧地图 - 打开第 3 层