インデント付きのvim行の折り返し


20

Vim / gvimは、次のように長い行をラップします。

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

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

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

折り返された行は、その行の開始位置のインデントを少し過ぎて開始する必要があります。(明確にするために、テキスト幅ではなくラップについて説明しています。)

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

回答:


17

更新:この機能は、vim 7.4.338に導入されましたが、7.4.354以降が必要です


したがって、明らかにこれにはVimへのパッチが必要です。2007年にVaclav Smilauerによるパッチがあります。Fedora11の Vim 7.2.148で動作するようにパッチ更新しました。しかし、それは仕事をしているようです。


1
FedoraがVimのアップデートをリリースすると、パッチをアップデートします。最新情報については、retracile.net / wiki / VimBreakIndentを参照してください。
retracile

ボーナスは、これをMacVimで動作させる方法を説明できる人を指します。
ドーナツ

パッチはどこにありますか?そのサイトは、私が見ることができますいずれにもリンクしていない
PUK

@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'


非常にクールですが、私が意図したものではありません。あなたは私が意図したよりも文字通り少しそれを取ったので、そこに私のせいです。明確にできるかどうかを確認します。
retracile 2009年

1

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

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

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

次のように機能します。

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

0

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

最初に、ナタナエルケインのインデントガイド(オプション)をダウンロードします。これは、タブ幅を2スペースのみに設定できるポイントまで、現在のインデントレベルをより適切に示しています。

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

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

それから、ワードラップは常に見た目が美しいので、常に折り返します。行を編集する必要がある場合は、すぐにオンにします。


0

私が現在使用しているファウル「回避策」は、接頭辞に固定された大きなインデントを付けることです。この固定インデントがラップされた行のインデントよりも大きい限り、見栄えがよくなります。これはほとんどの場合です。

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.