Vim/gvim 将像这样换行:
000000000000000000000000000000000000|
00000000000000 |
11111111111111111111111111111111|
111111111111111111 |
22222222222222222222222222222222|
222222222222222222 |
3333333333333333333333333333|
3333333333333333333333 |
有没有办法让 Vim 显示这些像这样换行的行?:
000000000000000000000000000000000000|
00000000000000 |
11111111111111111111111111111111|
111111111111111111 |
22222222222222222222222222222222|
222222222222222222 |
3333333333333333333333333333|
3333333333333333333333 |
我希望换行的行开始位置比行开始处的缩进位置稍远一点。(需要说明的是,我说的是换行,即软换行,而不是文本宽度。)
我希望在换行时考虑行的缩进,以便代码结构不会被换行所隐藏。
答案1
更新:此功能使用的是 vim 7.4.338,不过你需要 7.4.354 或更高版本。
显然这需要 Vim 补丁。有一个由 Vaclav Smilauer 制作的补丁从 2007 年开始。我更新了补丁与 Fedora 11 中的 Vim 7.2.148 配合使用。但它似乎确实能完成工作。
答案2
在你的 .vimrc 中:
set wrap " soft-wrap lines
" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=-----> " prefix for soft-wrapped lines (no actual line break character)
"set linebreak " soft-wrap lines only at certain characters (see :help breakat)
" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\ " line up soft-wrap prefix with the line numbers
"set cpoptions+=n " start soft-wrap lines (and any prefix) in the line-number area
或者直接输入:set showbreak=----->
任意会话。
作为参考,我的研究线索(Vim 6.2)::help 'wrap'
-> :help 'linebreak'
->(:help 'showbreak'
-> :help 'cpoptions'
,:help 'breakat'
)
答案3
可以通过设置两个参数来解决您的问题vimrc
:
要使用相同的缩进来断开行:
set breakindent
还有一个空格用于缩进软换行行:
let &showbreak=' '
它将以这种方式工作:
111111111111111|
11111111111111|
11111 |
222222222222222|
222222222222 |
333333333333333|
33333 |
答案4
我目前使用的“解决方法”是,在前缀中使用固定但较大的缩进。只要这个固定缩进大于换行的缩进(大多数情况下都是这样的),它看起来就不错。
" 'showbreak' : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\