带缩进的vim换行


20

Vim / gvim将这样包装长行:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

有没有办法让Vim像这样包装这些行:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

我希望换行开始于该行开始的缩进一点。(请注意,我说的是换行,而不是textwidth。)

我希望在行的换行中考虑行的缩进,以使代码结构不会被换行隐藏。

Answers:


17

更新:尽管您需要7.4.354或更高版本,但该功能已进入vim 7.4.338


因此,显然这需要对Vim进行补丁Vaclav Smilauer于2007年提供了一个补丁。我更新了该补丁,使其可与Fedora 11中的Vim 7.2.148一起使用。


1
当Fedora向Vim发布更新时,我正在更新补丁。有关最新信息,请参见retracile.net/wiki/VimBreakIndent

奖励指向可以解释如何使其与MacVim一起使用的人。
甜甜圈

补丁在哪里?该网站没有链接到我所看到的任何内容
puk,2012年

@puk:对不起,主要的软件升级已更改了某些链接位置。我已经修复了。
retracile

1
截至今天(2014年6月25日)的breakindent补丁的Vim 7.4的正式组成部分-它是由补丁338和345加入
Heptite

14

在您的.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'


很酷,但不是我真正的意思。您比我原本打算的要多一点,所以我的错在那里。我看看是否可以澄清。
09年

1

可以在您的中设置两个参数来解决您的问题vimrc

要使用相同的缩进来中断行: set breakindent

还有一个用于缩进软包装线的空间: let &showbreak=' '

它将以这种方式工作:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

这不是您要找的完美答案,但是这是我为避免Vim缺少适当缩进而做的事情。

首先,下载Nathanael Kane的缩进指南(可选),因为它可以更好地指示您所处的缩进级别,甚至可以将制表符宽度设置为2个空格!

其次,映射一个组合键以切换自动换行。我将'w'设置为'r'('w'用于保存),如下所示

:noremap <leader>r :set nowrap! <CR>

然后,我总是将自动换行,因为它从美学上来说更令人愉悦,如果需要编辑行,可以快速将其打开。


0

我当前使用的肮脏“解决方法”是在前缀中添加固定但大的缩进。只要固定的缩进量大于包装线的缩进量(大多数情况下就是这种情况),它看起来就不错。

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.