我想在vim中解开文字。当我加入行时,我会在句子之间获得额外的空间。

这是为什么?

有帮助吗?

解决方案

格式化破坏信息。有许多不同的文本块,一旦格式化就会导致相同的文本。因此,没有先验知识(即撤消)无法扭转操作。

未格式化:

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

其他提示

我感觉这是您真正想要的: GJ

:h gJ:

gJ          Join [count] lines, with a minimum of two lines.
            Don't insert or remove any spaces.  {not in Vi}

如果您从终端复制了一些内容,并且将其粘贴到VIM而不是一行。

我通常以视觉模式使用它。 hilight东西, GJ.

我猜想在没有空格之间加入线路的简单解决方案IS:

:j!

! 联接不会插入或删除任何空间。对于整个文件,请使用 :%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

u003Cleader>可以检查钥匙 :let mapleader, ,默认为键 \ 我相信。

因此,在正常模式下,只是 \jj 在没有任何额外空间的情况下进行加入!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top