这似乎是个愚蠢的问题,但我在Internet(或VIM帮助)上找不到答案。我在Mac OS X上使用的是VIM 7.2。我所要做的就是将行换行为72个字符,但这样做
:set textwidth=72
没有任何效果。textwidth设置正确(我可以在查询“:set textwidth”时看到),但是在设置textwidth后,现有行和新输入的行都没有换行。如果我开始一个新行,仍然没有换行。打开并关闭文件,没有任何变化。我也尝试过:set wrapmargin=72(textwidth=0),没有任何效果。
我错过了什么?
7条答案
按热度按时间xghobddn1#
尝试
gggqG
将新的文本宽度应用于整个缓冲区。gg
表示:转到缓冲区的开头gq
表示:重新格式化动议中的文本G
表示:转到缓冲区的末尾(It如果格式选项设置正确,则可以正常工作,详情请参见Zyx post)
另一方面,你也可以通过在文件的开头或结尾添加一个
modeline
来强制现有文本文件的宽度为72个字符。参见:help modeline
。vim:tw=72
之类的东西应该可以工作。mbjcgjjk2#
我正在寻找同一个问题的答案,在我在VIM文档中找到解决方案之前,我不得不四处奔波了一段时间。所以,我想我会更新线程,保存其他人的时间。
在我的例子中,问题是默认的ftplugin禁用了textwidth。
仅仅用(
:set tw=79 && :set formatoptions+=t
)更新你的.vimrc是行不通的,因为fplugins是在vimrc之后得到的。下面是我遵循的步骤:
1)找出您当前的格式选项(在Vim中)
2)依照vimdocs的建议建立档案类型.vim档案(http://vimdoc.sourceforge.net/htmldoc/filetype.html#ftplugin-overrule)
3)请在该文件中添加
:set formatoptions+=t
&&:set textwidth=79
行。瞧!下次当你打开文件时,它会将textwidth设置为你想要的字符。
作为一个调试的辅助工具,你可以通过在命令前面加上verbose来检查哪个文件覆盖了你的vimrc设置。
iyfamqjs3#
什么
打印。
其中至少有一个(我认为是所有的)将覆盖
textwidth
的设置。例如,如果您正在编辑C源文件,则C缩进规则将覆盖
textwidth
。q8l4jmvw4#
如果您有
t
,则textwidth
将对当前编辑的行产生影响(仅用于非注解),c
(仅用于注解)或两者都在formatoptions
中(如果此处不存在a
,则仅当您达到textwidth
设置的边距时,才会自动换行),如果我没有弄错的话,你可以设置这样的formatexpr
或formatprg
,这样textwidth
就会被忽略。56lgkhnf5#
This可以帮助您
n3ipq98p6#
我有这个完全相同的问题,并发现以下解决了这个问题,对我来说足够好:
您可以随意将
python
更改为您选择的文件类型(例如*
或逗号分隔列表python,ruby,go,sh,javascript
)有关
formatoptions
的详细信息,请参见:h fo-table
xdnvmnnf7#
我用的是Neovim,也遇到过这个问题。在我的
init.vim
中将textwidth
设置为80后,当我打开文本文件时,该文件的内容不会发生变化。对于现有的文本,我们必须手动使用gggqG
对其进行格式化。当您在一行中键入新字符时,
textwidth
选项将起作用(如果字符数达到80,您将自动获得换行符)。