unix VIM文本宽度无效

p5cysglq  于 2022-11-04  发布在  Unix
关注(0)|答案(7)|浏览(160)

这似乎是个愚蠢的问题,但我在Internet(或VIM帮助)上找不到答案。我在Mac OS X上使用的是VIM 7.2。我所要做的就是将行换行为72个字符,但这样做

:set textwidth=72

没有任何效果。textwidth设置正确(我可以在查询“:set textwidth”时看到),但是在设置textwidth后,现有行和新输入的行都没有换行。如果我开始一个新行,仍然没有换行。打开并关闭文件,没有任何变化。我也尝试过:set wrapmargin=72(textwidth=0),没有任何效果。
我错过了什么?

xghobddn

xghobddn1#

尝试gggqG将新的文本宽度应用于整个缓冲区。

  • gg表示:转到缓冲区的开头
  • gq表示:重新格式化动议中的文本
  • G表示:转到缓冲区的末尾

(It如果格式选项设置正确,则可以正常工作,详情请参见Zyx post)
另一方面,你也可以通过在文件的开头或结尾添加一个modeline来强制现有文本文件的宽度为72个字符。参见:help modeline
vim:tw=72之类的东西应该可以工作。

mbjcgjjk

mbjcgjjk2#

我正在寻找同一个问题的答案,在我在VIM文档中找到解决方案之前,我不得不四处奔波了一段时间。所以,我想我会更新线程,保存其他人的时间。
在我的例子中,问题是默认的ftplugin禁用了textwidth。
仅仅用(:set tw=79 && :set formatoptions+=t)更新你的.vimrc是行不通的,因为fplugins是在vimrc之后得到的。
下面是我遵循的步骤:
1)找出您当前的格式选项(在Vim中)

:set formatoptions?
formatoptions=croql (note no 't')

2)依照vimdocs的建议建立档案类型.vim档案(http://vimdoc.sourceforge.net/htmldoc/filetype.html#ftplugin-overrule)

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设置。

:verbose set formatoptions? 
formatoptions=croqlt
Last set from ~/.vim/after/ftplugin/fortan.vim
iyfamqjs

iyfamqjs3#

什么

:set formatexpr?
:set indentexpr?
:set cindent?
:set filetype?
:set paste?
:filetype

打印。
其中至少有一个(我认为是所有的)将覆盖textwidth的设置。
例如,如果您正在编辑C源文件,则C缩进规则将覆盖textwidth

q8l4jmvw

q8l4jmvw4#

如果您有t,则textwidth将对当前编辑的行产生影响(仅用于非注解),c(仅用于注解)或两者都在formatoptions中(如果此处不存在a,则仅当您达到textwidth设置的边距时,才会自动换行),如果我没有弄错的话,你可以设置这样的formatexprformatprg,这样textwidth就会被忽略。

56lgkhnf

56lgkhnf5#

set formatoptions+=t

This可以帮助您

n3ipq98p

n3ipq98p6#

我有这个完全相同的问题,并发现以下解决了这个问题,对我来说足够好:

autocmd FileType python setlocal textwidth=79 formatoptions+=t

您可以随意将python更改为您选择的文件类型(例如*或逗号分隔列表python,ruby,go,sh,javascript
有关formatoptions的详细信息,请参见:h fo-table

xdnvmnnf

xdnvmnnf7#

我用的是Neovim,也遇到过这个问题。在我的init.vim中将textwidth设置为80后,当我打开文本文件时,该文件的内容不会发生变化。对于现有的文本,我们必须手动使用gggqG对其进行格式化。
当您在一行中键入新字符时,textwidth选项将起作用(如果字符数达到80,您将自动获得换行符)。

相关问题