📏

`cmdheight=0`がrevertされたのでRulerで頑張ってみた

2023/01/31に公開

Vimのcmdheight=0はrevertされてしまいました
でも一度味わってしまったあの感覚を諦めきれなくてプラグインを作ってみました。
という前回の記事の1ヶ月前にこんなプラグインを作ってみていました。

https://github.com/utubo/vim-exruler

導入するとこうなります。

cmdlineの代わりにstatuslineを隠して、情報はrulerに表示する戦略です!
わーい!すっきり(?)

Install

vim9script
  ⋮
dein#add('utubo/vim-exruler')
  ⋮
# g:exruler = {}
# NERD FONTSを使ってるなら以下を設定するとかっこよく(?)なります
# g:exruler.head = "\ue0bc"
# g:exruler.tail = "\ue0be"
# g:exruler.sep = "\ue0bc"
# g:exruler.sub = ["\ue0b9", "\ue0bb"]
# シンプルにしたいのなら…
# g:exruler.format = "%<%=%l:%-2c"
# g:exruler.width = 15
# (デバッグ用)以下を指定するとVimEnter時に起動しなくなります。
# g:exruler.at_start = 0

カスタマイズ

表示形式

  • &rulerformatと同じように表示内容を設定できます。
    g:cmdline.format = '%t%=%{&fenc} %{&ff} %l:%c'
    
  • モード表記はg:cmdline.modeでカスタマイズできます。
    g:cmdline.mode.n = 'N' # ノーマル
    
  • 区切り線も変更できます。
    # NERD FONTSが使えるならこんな感じ
    g:exruler.head = "\ue0bc"
    g:exruler.tail = "\ue0be"
    g:exruler.sep = "\ue0bc"
    g:exruler.sub = ["\ue0b9", "\ue0bb"]
    

ベースとなるルーラーと各モード表記の色の2色だけですが、hilightコマンドで設定できます。(ハイライトグループについてはREADME.mdを見てください)
また、特に設定しなくてもcolorschemeからそれっぽい色を拾ってくるようにしています。

vim-cmdheight0とくらべて

vim-cmdheight0は疑似statuslineによってcmdlineを隠すプラグインです。
https://zenn.dev/utubo/articles/508ed595ce228c

利点

&rulerformatをかっこよさげに設定しているだけで、vim-cmdheight0のように無理やり表示しているわけではないので安定しています。
チラついたり急に表示されなくなったりしません!

欠点

echoできる範囲が狭い!
画面の半分がルーラーになるのでちょっと長めの文字列をechoするとすぐ改行表示→入力街になります

終わりに

冒頭にあるように、このプラグインは自分用に作ったもののお裾分けです。
作ったもののやはりecho範囲が狭いのとルーラーの表示もなくしたいという思いから、今は私はvim-cmdheight0のZENモードを作って使ってます。

GitHubで編集を提案

Discussion