Vimの ソフトラップ 機能(:set wrap
)を使用して、実際のウィンドウ幅に関係なく、80文字でコードをラップしたい。
私はまだこれを行う方法を見つけることができませんでした-すべてのソフトラッピングはウィンドウの幅に関連付けられているようです
textwidth
とwrapmargin
はどちらもハードラッピング用です(ファイルに改行文字を挿入します):vertical resize 80
(おそらく:set breakat=
を使用して任意の文字のブレークを許可)を使用して、一種の作品(少しハック的ですが)を使用しますが、:set number
は、行番号が可変長の列(ファイルの長さによる)を占めるため、これらは80の一部です。Vimでこれを行う方法はありますか? 他の情報源によると、有望に見えない 。
今のところ、私の近似では、デフォルトの検索として/^.\{80}\zs.\+
を使用するだけなので、少なくとも強調表示されます。 :syntax
項目を追加することを考えましたが、他の構文項目と重なると壊れてしまい、その考えを捨てました。
これを試して:
_set columns=80
autocmd VimResized * if (&columns > 80) | set columns=80 | endif
set wrap
set linebreak
set showbreak=+++
_
always 80列が必要な場合は、if (&columns > 80) |
を削除できます。
ソフトラップの解決策はありませんが、列のマークに関しては、Vim 7.3(2010-08-15リリース):set colorcolumn=80
は列80を強調表示します。色は構文ファイルによって異なります。
やってみました 'linebreak'
?
*'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
'linebreak' 'lbr' boolean (default off)
local to window
{not in Vi}
{not available when compiled without the |+linebreak|
feature}
If on Vim will wrap long lines at a character in 'breakat' rather
than at the last character that fits on the screen. Unlike
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
it only affects the way the file is displayed, not its contents. The
value of 'showbreak' is used to put in front of wrapped lines.
This option is not used when the 'wrap' option is off or 'list' is on.
Note that <Tab> characters after an <EOL> are mostly not displayed
with the right amount of white space.
それを行う良い方法はありません。 @eborischの回答を変更すると、その場しのぎのsetlocal softwrap
をautocmd
でハックできます。バッファに入るたびにサイズを変更し、ローカル変数softwrap
が設定されているときに特定の長さにサイズを変更すると、目的の動作が得られます。
80列にソフトラップする場合、.vimrc
に次のように記述できます。
augroup softwrap
autocmd VimResized * if (exists('b:softwrap') && &columns > 80) | set columns=80 | endif
autocmd BufEnter * set columns=999
augroup END
特定のバッファーのモードをオンにするには、次のコマンドを使用します。
let b:softwrap=1
set columns=80