这感觉就像一个愚蠢的问题,但我无法在互联网上找到答案(或在VIM帮助中)。我在Mac OS X上使用的是VIM 7.2。我想做的就是将我的行换行为72个字符,但这样做
:set textwidth=72
无效。正确设置了textwidth(我可以看到当我只查询“:set textwidth”时),但是在设置textwidth之后我输入的现有行和新行都没有被包装。如果我开始换行,仍然不会换行。打开并关闭文件,无需更改。我也尝试过:set wrapmargin = 72(textwidth = 0),没有效果。
我在这里缺少什么?
答案 0 :(得分:16)
尝试gggqG
将新文本宽度应用于整个缓冲区。
gg
表示:转到缓冲区的开头gq
表示:重新格式化动议中包含的文字G
表示:转到缓冲区的末尾(如果格式选项设置正确,将在Zyx帖子中详细说明)
另一方面,您还可以通过在文件的开头或结尾添加modeline
来显示宽度为72个字符的现有文本。见:help modeline
像vim:tw=72
之类的东西应该有用。
答案 1 :(得分:10)
什么是
:set formatexpr?
:set indentexpr?
:set cindent?
:set filetype?
:set paste?
:filetype
打印。
其中至少有一个(我认为所有这些)都会覆盖textwidth
的设置。
例如,如果您正在编辑C源文件,则C缩进规则会覆盖textwidth
。
答案 2 :(得分:8)
我一直在寻找同一个问题的答案,并且在我在VIM文档中找到解决方案之前不得不喋喋不休。所以,我想我会更新线程并节省其他时间。
我的问题是默认的ftplugin是禁用textwidth。
使用(:set tw=79 && :set formatoptions+=t
)更新你的.vimrc是行不通的,因为fplugins来自vimrc之后。
以下是我遵循的步骤:
1)找出你当前的格式选项(在vim内)
:set formatoptions?
formatoptions=croql (note no 't')
2)根据vimdocs(http://vimdoc.sourceforge.net/htmldoc/filetype.html#ftplugin-overrule)的建议创建一个filetype.vim文件
Overrule the settings after loading the global plugin.
You must create a new filetype plugin in a directory from the end of
'runtimepath'. For Unix, for example, you could use this file:
vim ~/.vim/after/ftplugin/fortran.vim
In this file you can change just those settings that you want to change.
3)添加行:set formatoptions+=t
&&该文件中的:set textwidth=79
。
瞧!下次打开文件时,它会将textwidth设置为您想要的字符。
作为调试辅助工具,您可以通过在verbose前添加命令来检查哪个文件覆盖了您的vimrc设置。因此对于例如如果我想查看谁最后更新了formatoptions,我会输入
:verbose set formatoptions?
formatoptions=croqlt
Last set from ~/.vim/after/ftplugin/fortan.vim
答案 3 :(得分:6)
除非有要求,否则Vim不会做任何事情。如果您textwidth
(仅限评论),t
(仅限评论)或c
({1}},formatoptions
对当前已修改的行有效a
在那里不存在,只有当您达到textwidth
设置的边距时,或者如果您使用gq
重新格式化文本,它才会自动装配。如果我没有误会,您可以设置formatexpr
或formatprg
,以便忽略textwidth
。
答案 4 :(得分:2)
set formatoptions+=t
This可以帮助您
答案 5 :(得分:2)
我有同样的问题,发现以下问题很好地解决了我的问题:
autocmd FileType python setlocal textwidth=79 formatoptions+=t
您可以随意更改python
作为您选择的文件类型(例如*
或以逗号分隔的列表python,ruby,go,sh,javascript
)
有关
的详细信息,请参阅:h fo-table
formatoptions
答案 6 :(得分:0)
我正在使用Neovim,并且也遇到了这个问题。在textwidth
中将init.vim
设置为80后,打开文本文件的内容不会改变。对于现有文本,我们必须使用gggqG
手动设置其格式。
在一行中键入新字符时,textwidth
选项将起作用(如果字符数达到80,则会自动换行。)