为什么Vim在连接线时会添加空格?

时间:2009-10-16 16:00:44

标签: vim text-formatting

我想在Vim中打开文本。当我加入句子时,我在句子之间会有一个额外的空格。

为什么?

5 个答案:

答案 0 :(得分:54)

我觉得这是你真正想要的: 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

答案 1 :(得分:30)

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

无格式:

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命令同时应用于多行,也可以与apip结合使用以选择段落,例如vipJ。同样,您仍然会丢失一些信息 - 在换行符之前有多个空格,然后格式化将最终折叠为单个空格。 (您实际上可以使用gJ代替J而无需修改空格即可加入,但在格式化时您已经丢失了它们。

如果你被句子后面的额外空格(以!,?或。结尾的行)所困扰,请关闭连接空间:set nojoinspaces

答案 2 :(得分:6)

This是最终为我工作的答案,以上都没有在我的用例中起作用。

基本上,像其他多个人一样使用gJ,但突出显示所有文件,因此在命令模式下键入 ggVGgJ

答案 3 :(得分:5)

我想加入没有空格的行的简单解决方案是:

:j!

使用!,联接不会插入或删除任何空格。对于整个文件,请使用:%j!

请参阅::help :join

答案 4 :(得分:1)

如果我们处理的线路不以空格结束,我仍然在加入后获得额外的一个空格。通常这是期望的行为。实施例

<div id="facility_general_info">
	<div id="facility_info">
		<h3>Facility Information</h3>
		<div id="facility_data">
			<ul>
				<li><b>Facility Number</b><p>...</p></li>
				<li><b>Facility Name</b><p>...</p></li>
				<li><b>Address</b><p>...</p></li>
				<li><b>City</b><p>...</p></li>
				<li><b>Province</b><p>...</p></li>
				<li><b>Postal Code</b><p>...</p></li>
				<li><b>Roof Area</b><p>...</p></li>
				<li><b>Roof Area Inspected</b><p>...</p></li>
				<li><b>Last Inspected</b><p>...</p></li>
				<li><b>Inspected By</b><p>...</p></li>
			<ul>
		</div>
		<!--facility front image-->
		<div id="facility_image">
			<div id="fac_image_wrapper">
			    <img  src="http://i.imgur.com/rQ5G8sZ.jpg?2" width="250"/>
			</div>
			<br />
		</div>
	</div>
</div>

加入first line without space second line 后,成为

J

虽然在某些情况下,我们不希望应用它,

first line without space second line

我们希望联接成为myInstance->methodA() ->methodB() ,中间没有任何空格!

这里使用帮助器映射

myInstance->methodA()->methodB()

&LT前导&GT;可以使用nmap <leader>jj Jx 检查密钥,默认为密钥:let mapleader我相信。

所以在正常模式下,只需\即可执行连接而无需任何额外空间!