假设我的.vimrc具有以下配置:
set textwidth=10
在文件中,我键入以下内容:
This is a
sentence
word wraps
just fine
at 10
chars.
当我输入这句话时,VIM 将实时自动换行,并阻止我传递我设置的标记。但是,我发现自己遇到的一个常见问题是添加更多内容。我忘记了上一段中的一个词,"句子那个词换行"。
所以我回去添加它。
This is a
a sentence that, suddenly, doesn't
word wrap
just fine
at 10
chars.
如果我现在想解决这个问题(让所有行都低于我设置的 10 个字符限制),我必须找到 10 个字符的位置,点击 RETURN(向下移动额外的内容),然后在下一行找到 10 个字符的位置,点击 RETURN,依此类推。
这个场景在我的程序和代码中的函数序言中出现了很多(我通常使用 73 个字符行的限制),因为我发现自己以后必须添加更多解释或内容。
有没有一种快速/简单的方法来解决这个问题?
也:
我在我的.vimrc
中有一个这个来突出显示文本宽度的违规者:
" highlight anything past the 73 character limit
augroup vimrc_autocmds
autocmd Filetype cpp autocmd BufEnter * highlight OverLength ctermbg=darkgrey guibg=#592929
autocmd Filetype cpp autocmd BufEnter * match OverLength /%73v.*/
augroup END
也许这里我也可以添加一些东西?
gq
命令重新格式化受影响的行。通常,gqap
(格式化段落)可以,如果没有,请使用视觉模式或动作。
您还可以在使用 :set formatoptions+=a
打字时使 Vim 不断重新格式化,但这对我来说效果不佳。
:help fo-table
报告的 Vim 手动输入:
l Long lines are not broken in insert mode: When a line was longer than
'textwidth' when the insert command started, Vim does not
automatically format it.
由于您在评论中说formatoptions
包含字母 l
,您应该使用以下命令关闭此选项:
:set formatoptions-=l
要修复现有行,正如 Ingo 已经建议的那样,您可以使用 gq
命令,该命令将遵循textwidth
设置。