我想在 Vim 中展开文本。当我加入行时,我会在句子之间获得额外的空间。
这是为什么?
我有一种感觉,这是你真正想要的:gJ
来自:h gJ
:
gJ Join [count] lines, with a minimum of two lines.
Don't insert or remove any spaces. {not in Vi}
如果您从终端复制了某些内容并将其作为一个大矩形块而不是单行粘贴到 vim 中,这将很方便。
我通常在可视模式下使用它。突出东西,gJ.
格式化会破坏信息。有许多不同的文本块,一旦格式化就会产生相同的文本块。因此,没有先验知识(即撤消)就无法逆转操作。
未格式化:
Unformatted text could start out as either all one line, or several, yet look the same when formatted.
Unformatted text could start out as either all one line, or several,
yet look the same when formatted.
格式化:
Unformatted text could start out as
either all one line, or several,
yet look the same when formatted.
如果你希望你的段落都在一行上,或者如果你对一些手动摆弄没问题,你可以使用J
将行重新连接在一起。您可以使用可视模式J
一次将命令应用于多行,可能与段落结合使用ap
或ip
选择段落,例如vipJ
. 同样,您仍然会丢失一些信息 - 格式化之前的换行符处的多个空格最终会折叠为单个空格。(您实际上可以通过使用而不修改空格来加入gJ
,J
但格式化时您已经丢失了它们)
如果您对句子后面的多余空格(以 !、? 或 . 结尾的行)感到困扰,请关闭连接空格:set nojoinspaces
我想加入没有空格的线条的简单解决方案是:
:j!
与!
join 不插入或删除任何空格。对于整个文件,使用:%j!
.
见::help :join
。
这是最终对我有用的答案,以上都不适用于我的用例。
本质上,像其他人所说的那样使用 gJ,但突出显示所有文件,所以在命令模式下键入ggVGgJ.
如果我们处理的行没有以空格结尾,我在加入后仍然得到了额外的一个空格。通常这是期望的行为。例子
first line without space
second line
加入后J
成为
first line without space second line
虽然在某些情况下,我们不希望应用它,
myInstance->methodA()
->methodB()
我们希望连接变得myInstance->methodA()->methodB()
没有任何空间!
这是我使用的助手映射
nmap <leader>jj Jx
<leader> 键可以检查,我相信 :let mapleader
默认为键。\
所以在普通模式下,只是\jj
为了执行加入而没有任何额外的空间!