vim 缩进换行

vim 缩进换行

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=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 

相关内容