web-dev-qa-db-ja.com

インデント付きのvimラインラップ

Vim/gvimは次のように長い行を折り返します:

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

代わりに、Vimにこれらの行を次のようにラップさせる方法はありますか?

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

折り返した行を、その行が始まった場所のインデントを少し超えて開始するようにします。 (明確にするために、私はテキスト幅ではなくラップについて話している。)

コード構造が折り返されている行によって隠されないように、その行の折り返しで行のインデントを考慮したいと思います。

21
retracile

UPDATE:この機能 vim 7.4.338に搭載されていますが、7.4.354以降が必要です


どうやら これにはVimへのパッチが必要ですVaclav Smilauerによるパッチ 2007年にさかのぼります。I パッチを更新 Fedora11のVim7.2.148で動作します。しかし、それは機能しているようです。

18
retracile

あなたの.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'_)

14
Chris Johnsen

あなたの質問に対する解決策はあなたのvimrcに2つのパラメータを設定することで達成することができます:

同じインデントで行を分割するには:set breakindent

そして、ソフトラップされた行をインデントするための1つのスペース:let &showbreak=' '

これは次のように機能します。

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

私が現在使用している不正な「回避策」は、プレフィックスに固定されているが大きなインデントを付けることです。この固定インデントが折り返し行のインデントよりも大きい限り、見栄えがよくなります。これはほとんどの場合に当てはまります。

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
0
Aaron Thoma

あなたが探している完璧な答えではありませんが、vimの適切なインデントの欠如を回避するために私が行うことは次のとおりです。

まず、Nathanael Kaneの インデントガイド (オプション)をダウンロードします。タブ幅を2スペースに設定できる場合でも、現在のインデントレベルがわかりやすく表示されます。

次に、キーの組み合わせをマップしてワードラップを切り替えます。私は「ラップ」(「w」は保存用)を「r」に設定しています。

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

次に、Wordを常に見栄えよくするため、折り返します。行を編集する必要がある場合は、すぐにオンに切り替えます。

0
puk