gvimのウィンドウ幅を80カラムのテキストに加えて、行番号を表示するために必要なものに設定するにはどうすればよいですか


9

私はgvimを

set number

.vimrcでは、すべての行の前に行番号とスペースを表示しています。

ドキュメントの行数が10未満の場合は2列、10行を超える場合は3列というようになります。

入れたら

set lines=40 columns=80

では.gvimrc、78列のコードと、行番号とペースを表す2列、または77 + 3などが表示されます。

ウィンドウ幅を80列+行番号を表示するために必要な列数に設定します。

動的である必要はありませんが、特定のファイルの行数を読み取って設定できるようにしたいと思いますcolumns。(もちろん、動的なソリューションは本当に素晴らしいですが、必須ではありません)

回答:


9

〜/ .vimrcでこれを試してください:

au BufRead * let &numberwidth = float2nr(log10(line("$"))) + 2
          \| let &columns = &numberwidth + 80

バッファーをロードする(つまり、ファイルを開く)たびに、最大の行番号を表示するために必要な列の数が決定され、それに応じて 'numberwidth'オプションを設定し、 'columns'をその数+ 80に設定します。 。


ありがとう!ファイルを開くときにうまく機能します。タブを切り替えるときにもこれを実現する方法はありますか?前もって感謝します。
Elton Carvalho

1
Vimのautocommandイベントはにリストされてい:help autocommand-eventsます。それらの中にはがTabEnterあるので、上記の例で置き換えBufReadてみて、BufRead,TabEnter希望する動作が得られるかどうかを確認できます。私はそのイベントの例を自分でテストしていません。
garyjohn

@garyjohnに感謝します。TabEnterは期待どおりに動作しました。多分後で私はそれらのautocommand-eventsで遊ぶでしょう。彼らはとても便利です!
Elton Carvalho、2011

1
@david_nash:'numberwidth'ファイルの行数に応じて対数的にのみ増加するため、水平方向のスペースを'number'有効にする余裕があれば、制限することについて心配する必要はないと思います。
garyjohn 2018

1
@JonathanHartley:三項演算子(:help expr1)またはif / endif(例:)でこれを制御するのは簡単:help options-in-terminalです。問題は、変更'number'されたときに&columns を変更することです。OptionSet自動コマンドイベントを使用することを考えましたが、:help OptionSetこのイベントの処理中にオプションをリセットすることは悪い考えです。
garyjohn、2018

2

私が使う

set lines=24 columns=84

私の$ HOME / .gvimrcにあります。私はめったに(たとえあったとしても)999行より長いファイルを持っているので、それは私にとってはうまくいきます。


それが私がやっていたことですが、1行で81文字になることを防ぐことができるので、正確に80カラムのテキストを保持するのは良いことです。
Elton Carvalho、2011

2

たとえば、numberwidthを5に設定してから、列を85(80 + 5)に設定します。これは、0行から100万行までのファイルに適しています。

ここにあなたが(デフォルト)〜/ .vimrcファイルに入れなければならないかもしれないものがあります

set numberwidth=5  "Good for files upto a million lines
set columns=85
set nu

行番号がデフォルトの '%d'形式ではなく '%5d'(5は上記の数値幅)でフォーマットされているのがわかります。行番号の前に少し不動産が無駄になりますが、一貫性は維持されます。


スーパーユーザーへようこそ。非常に古い質問に対する回答を投稿したことに注意してください。これには何の問題もありませんが、応答がない場合があることに注意してください。
CharlieRB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.