我一直想知道Vim是否有智能换行的功能,这样它就可以保持与它缩进的行相同的缩进。我在一些其他的文本编辑器上注意到了这一点,比如电子文本编辑器,发现它帮助我更容易地理解我所看到的内容。
例如与其说
<p>
<a href="http://www.example.com">
This is a bogus link, used to demonstrate
an example
</a>
</p>
它将显示为
<p>
<a href="somelink">
This is a bogus link, used to demonstrate
an example
</a>
</p>
8条答案
按热度按时间hwazgwia1#
有一个补丁可以解决这个问题,但是它已经存在了 * 年 * 了,而且上次我检查的时候并没有完全应用它。请参见http://groups.google.com/group/vim_dev/web/vim-patches中的“正确缩进换行”条目--我真的希望这个能出现在主线中。
更新:该链接似乎已bitrotted. Here is a more up to date version of the patch。
更新2:它已经是merged上游(截至7. 4. 345),所以现在你只需要
:set breakindent
。kmynzznz2#
我认为不可能有完全相同的缩进,但您仍然可以通过设置“showbreak”选项来获得更好的视图。
示例:
真实的的代码看起来比上面的示例代码要好,因为Vim对'〉〉〉'使用了不同的颜色。
qgelzfjb3#
更新:2014年6月,一个patch to support a
breakindent
option被合并到Vim(版本7.4.346或更高版本,以获得最佳支持)。你也可以试试
:set nowrap
,它允许vim通过向右滚动来显示较长的行,这对于检查文档的整体结构可能很有用,但是对于实际编辑来说可能不太方便。与您所寻找的内容相近的其他选项是
linebreak
和showbreak
。使用showbreak
,您可以修改换行行左边距显示的内容,但遗憾的是,它不允许根据当前上下文进行可变缩进。9bfwbjaz4#
我所知道的唯一方法是使用一个回车符(Cfreak提到的),并将
textwidth
选项与各种缩进选项结合起来。如果缩进配置正确(我相信默认情况下是html语法,否则请参见autoindent
和smartindent
选项),您可以:如果您对
formatoptions
设置有任何自定义设置,最好简单地执行以下操作:它的作用:
请注意,这与软包络不同:它会在源文件和屏幕上换行(当然,除非你不保存它!)。还有其他一些设置可以添加到
formatoptions
中,当你键入时,这些设置会自动格式化:详情请参见:help fo-table
。如需详细信息,请参阅:
czfnxgou5#
我想你还是要用退货的
6tqwzwtp6#
如果您的HTML格式足够好,通过xmllint运行它可能会有所帮助:
j8yoct9x7#
A宏解决方案:
编辑:
操作
gq{motion}
自动格式化为变量“textwidth”设置的任何值。这比使用我的宏的80lBi^M
更容易/更好。如果启用了自动缩进
然后在行尾输入回车,下一行将缩进相同的缩进量。如果愿意,可以使用此方法在换行中硬输入。下面的宏利用此方法自动缩进文本:
将寄存器Z设置为:
并将寄存器X设置为:
那就做
以激活宏。几秒钟后,您的文本将全部以80个字符或更少的正确缩进行显示。
说明:
以下是宏的剖析:
第1部分(宏z):
第2部分(宏x):
警告:
9rygscc18#
这个特性已经被implemented on June 25, 2014作为补丁7.4.338。随后有几个补丁完善了这个特性,最后一个是7.4.354,所以这是你想要的版本。
下面摘录自vim帮助:
与此相关的还有
showbreak
设置,它将使用您指定的字符作为偏移量的后缀。配置示例
行为说明
如果不指定
sbr
选项,则任何showbreak
字符都将追加到缩进中。从上面的示例中删除sbr
将导致4个字符的有效缩进;使用这些设置,如果只想使用showbreak
而不需要额外缩进,请指定shift:0
。您也可以给予负位移,其效果相当于将
showbreak
字符和换行文字拖曳回任何可用的缩排空间。当指定
min
值时,如果终端宽度较窄,则移动量将被压缩,但showbreak
字符始终保留。