425

Vim で 80 列の表示を行う方法は正しくないようです: set columns=80. 時々私もset textwidthそうですが、別の方法でラインオーバーフローを見て予測できるようになりたいですset columns

これには、いくつかの不幸な副作用があります。

  1. set number行番号の順序が異なるファイル間で分割することを恐れることはできません。つまり、< 100 行のファイルと >= 100 行のファイルset columnsでは、追加の桁表示に余分な列が使用されるため、2 つの異なる値が必要になります。
  2. また、ウィンドウを縦に分割する代わりに、新しい (g)Vim セッションを開始します。これは、ペインを開いたり閉じたりするたびにvsplit強制されるため、新しいセッションを開始する手間が減るためです。set columns

set numbers縦に分割したい場合など、80文字表示をどう扱うか?

4

15 に答える 15

784

set colorcolumn=80vim 7.3以降、 (set cc=80略して)を使用できます。

以前のバージョンはこれをサポートしていないため、.vimrc代わりに次を使用します。

if exists('+colorcolumn')
  set colorcolumn=80
else
  au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif

オプションのオンライン ドキュメントcolorcolumnも参照してください。

于 2010-09-22T00:55:01.030 に答える
592

これを .vimrc に設定しました:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

これにより、80 列の制限を超えるテキストの背景が微妙な赤で強調表示されます (とにかく、GUI モードでは微妙ですが、ターミナル モードではそれほどではありません)。

于 2008-10-25T05:51:11.577 に答える
58

より短い方法:

match ErrorMsg '\%>80v.\+'
于 2009-07-13T01:01:40.967 に答える
30

サイモン・ハワードの答えは素晴らしいです。ただし、/\%81v.\+/列 81 を超えるタブを強調表示できません。そこで、 VIM wikiで見つけたものと上記の HS の色の選択に基づいて、少し調整しました。

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/

そして今、VIM は列 80 を超えるものを強調表示します。

于 2010-07-22T04:31:55.960 に答える
18

ここに画像の説明を入力

ミニマルで過度ではないアプローチ。長すぎる行の 79 番目の文字のみが強調表示されます。それはいくつかの一般的な問題を克服します: 新しいウィンドウで動作し、オーバーフローした単語が適切に強調表示されます。

augroup collumnLimit
  autocmd!
  autocmd BufEnter,WinEnter,FileType scala,java
        \ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey
  let collumnLimit = 79 " feel free to customize
  let pattern =
        \ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
  autocmd BufEnter,WinEnter,FileType scala,java
        \ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END

注:FileType scala,javaこれは、これを Scala および Java ソース ファイルに限定していることに注意してください。おそらくこれをカスタマイズしたいと思うでしょう。省略した場合は、すべてのファイル タイプで機能します。

于 2014-01-28T13:16:13.437 に答える
15

指定された境界の外に出る最初の文字だけをマークする良い方法:

highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr

ダミアン・コンウェイのトークより

于 2014-11-01T01:23:36.847 に答える
14

線を引いて 80 の制限を確認することもできます。

let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")

結果:

ここに画像の説明を入力

于 2015-05-15T17:14:08.153 に答える
7

新しいバージョンの vim:set numberwidth=xでは、行番号表示の幅を設定する値を使用できます。折り畳みなどはあまり使わないのでよくわかりませんが。ただし、細い縦線を引くことは、コンソール アプリケーションの能力を超えています。GVim ではこれが許可されている可能性があります (私は使用していないため、コメントできません)。

于 2008-10-24T23:31:17.973 に答える
5

残念ながら、解決策のセットに制約を課してしまったのではないでしょうか。

を使用すると、行制限が近づいているのを簡単に確認できないことを除い:set textwidth=80て、あなたが言及したすべての問題が修正されます。場合は、ステータス バーの x、y 位置表示を有効にします。これを使用して、現在の列を確認できます。:set ruler

それはさておき、あなたに何を伝えたらよいかわかりません。必要があるからといって、数列、折り列、分割を失うのは残念です:set columns=80

于 2008-10-24T22:39:59.233 に答える
5

これを試すことができます:

au BufWinEnter * if &textwidth > 8
\ | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1)
\ | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.\+', &textwidth), -1)
\ | endif

これにより、すべてのバッファーに 2 つのハイライトが設定されます。1 つは、設定されているものの前の 8 列の文字用で、&textwidthもう 1 つはその列を超える文字用です。そうすれば、ある程度の期待が持てます。もちろん、多少の予測が必要な場合は、別の幅を使用するように微調整できます (これらの列の構文強調表示が失われるという形で代償を払います)。

于 2008-10-25T05:39:41.087 に答える
3

:help の列を見ると、実際に混乱させられているわけではありません。

コンソールでは、通常、コンソールの設定によって決定されます (つまり、自動的に検出されます)。GUI では、gvim ウィンドウの幅を決定します (およびそれによって決定されます)。

したがって、通常は、コンソールとウィンドウ マネージャーに、コメント アウトしてジョブを実行させるだけです。set columns

「ラインオーバーフローを見て予測する」とはどういう意味かわかりません。EOL をおよそ 80 桁目に挿入したい場合は、 または のいずれset textwidthかを使用しますset wrapmargin。ソフトラップだけが必要な場合 (つまり、行はラップされますが、実際の EOL はありません)、 and で遊んでset linebreakくださいset showbreak

于 2010-09-28T03:56:40.013 に答える
2

これは左のフィールドから外れていますが、行番号をオンにしている場合、現在の分割のサイズを 80 文字に変更するための素敵な小さなマップです。

" make window 80 + some for numbers wide  
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr> 
于 2012-12-29T13:21:05.063 に答える
1

これを試して、実際のテキストが 80 文字になるようにウィンドウ サイズを設定できます。ただし、これはまだ垂直分割では機能しません。

let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)

これには、相対番号に vim 7+、7.3 が必要です。

于 2010-12-13T17:38:26.233 に答える
0

set colorcolumn を使用して列の行を設定する

set autoindent                                                                  
set smartindent                                                                 
set nowrap                                                                      
set hlsearch                                                                    
set tabstop=4                                                                   
set shiftwidth=4                                                                
syntax on                                                                       
set colorcolumn=80
于 2021-12-21T08:56:27.547 に答える