lualine.nvim

今回はステータスラインを変えてみます😉

A blazing fast and easy to configure Neovim statusline written in Lua.

Lua で書かれた、高速で設定しやすい Neovim ステータスラインです。

lualine is a statusline plugin written for neovim . It’s primarily written in lua . It’s goal is to provide a easy to customize and fast statusline. The idea is we will try our best to provide sane defaults also a way to overwrite that default . Best kind of customize is the one where you have the power to customize but not the need.

lualine は neovim 用に書かれたステータスライン・プラグインです。主に lua で書かれています。 その目的は、カスタマイズが容易で高速なステータスラインを提供することです。 私たちはデフォルト設定を上書きする方法も提供するために最善を尽くします。 最高のカスタマイズとは、カスタマイズできるパワーを持ちつつも、必要とされないものです。

Requirements

neovim >= 0.5

nvim-web-devicons | Only if you want filetype icons.

Requirements

neovim 0.5 以上はもう大丈夫ですよね😌 nvim-web-deviconsについて、少し補足します。

Nvim-web-devicons

A lua fork of vim-devicons. This plugin provides the same icons as well as colors for each icon.

vim-devicons の lua フォークです。このプラグインは、同じアイコンを提供するだけでなく、各アイコンの色も提供します。

Requirements

A patched font

これはもうRequirementsのミルフィーユですね、そだねー。

もぐもぐしながら整理してみましょう😋

つまり、lualine.nvimで (ファイルタイプアイコンを使いたかったら) nvim-web-deviconsが必要で、 nvim-web-deviconsにはpatched font (Nerd Fonts)が必要ってことですね❗…🤔❓

nvim-web-deviconsのインストール自体はpackerに任せちゃえばいいので、またあとで❗

A patched font (NerdFonts)

本来なら「なんかめんどくさそうだな〜」となるところですが…、

なんと❗️WezTermはNerd Fontを持っていて、しかも既に有効になっています❗️

Note

これ、3.2. Shell Prompt: Starshipからコピーしてきた文言です。 だって…、同じなんだもの…🥹

(こっちではNerd Fonts、あっちではNerd Fontなので、ちょっと表記にブレがあるけど。)

WezTerm以外のターミナルを使用している場合は、そのターミナルでNerd Fontsを使用するように設定する必要があります。

例えばFirgeというNerd Fontsを含んだフォントセットがあって、これも既に紹介済みです。

例として、わたしが普段お世話になっているフォントを紹介します。

Note

WezTermとWezTerm以外で分けるのもだいぶ暴論ですね😅

wiki

冒頭の紹介文はlualine.nvim の wiki にあるものです。他にも色々と書いてくれているので、覗いてみると良いです😉

Welcome to the lualine.nvim wiki!

install

これ、やっぱパラメータが多いので手順を踏んでいきましょう。

lualine.nvimがオフィシャルに示しているコードからは少し外れますが、以下のようにしてみてください。

extensions/lualine.lua

Default configurationで動かします。

require('lualine').setup {}

extensions/init.lua

  use {
    'nvim-lualine/lualine.nvim',
    config = function() require 'extensions.lualine' end,
    requires = { 'nvim-tree/nvim-web-devicons' },
  }

Note

オフィシャルには

requires = { 'kyazdani42/nvim-web-devicons' },

として説明されているのですが、

https://github.com/kyazdani42/nvim-web-devicons

…に行こうとすると、

https://github.com/nvim-tree/nvim-web-devicons

…に飛ばされますよね。

なので、packerへの指定も、最初からこちらの URL を使用してます。

Tip

「今更だけど、なんでhttps://github.com/は無くてもいいの❓」については、 :h packer-configurationの中で説明されているdefault_url_formatが効いてるからです😆

optについてはまた今度にしましょ❓ 満を持して🦁 また改めて登場してもらうことにします❗

ってことで、いつも通り:PackerSyncしちゃいましょう😉

lualine-install

lualine.nvimと一緒にnvim-web-deviconsもインストールされましたね❗

:h packer-plugin-dependencies

Plugins may specify dependencies via the `requires` key in their specification table.
This key can be a string or a list (table).

プラグインは、その仕様テーブルの `requires` キーで依存関係を指定することができます。このキーは文字列かリスト(テーブル)です。

If `ensure_dependencies` is true, the plugins specified in `requires` will be installed.

`ensure_dependencies` が true の場合、 `requires` で指定されたプラグインがインストールされます。

:h packer-configuration

ensure_dependencies = true, -- Should packer install plugin dependencies?

                               packer はプラグインの依存関係をインストールするべき?

Neovimパッケージは依存関係をデータとして持ち合わせていないことは 15.1. Packerで触れたんですが、 「これrequires(必要なもの) なんだよねー🤔」と教えてあげると、 packerは「ん❓そうなんれすね❓😆」と言って、一切疑わずにインストールしてくれます。

Note

ウソ🤪はつかないであげてください。信頼関係で成り立っています❗

To Be Continued…

“Best kind of customize is the one where you have the power to customize but not the need.”

(最高のカスタマイズとは、カスタマイズできるパワーを持ちつつも、必要とされないものです。)

lualine-default

「カスタマイズは必要ない」と言う言葉の通り、もうこれで完成としてもいいんですが…、例えばこれ、左下。

二重に表示されてて絶対気になるやつ…😣

showmode

…でも、これだけじゃない。

この先は、これまでとは違ってかなりプラグインを連携して使っていきたいので、 今まで通りに一個ずつ進めていこうとすると膨大な作業量に圧倒されてしまって…。

このページだって、半分くらいはlualine以外への言及になっちゃってますよね。

「やることが多すぎる。それは間違いない。」

Everybody had a hard year

みんな大変な年だった

ちょっともう…、本当に…、気が遠くなってしまって…。

CoralPink のてには

たたかえる ちからが ない❗

… … … …

Scandal
Now you've left me

All the world’s gonna know

君は 僕を置いて行った

これで 世界中が知ることになるだろう

Hey, scandal
They're gonna turn our lives

Into a freak show

このスキャンダルで

僕らの人生は 奴らに見世物にされてしまう

They'll see the heartache

They’ll see the love break

奴らは 苦痛を目にしたいんだろう

砕ける愛を目にしたいんだろう

They'll hear me pleading

縋る声を聞きたいんだろう

We'll say

僕らは言ってる

for God sakes

いい加減にしろ

Over and over and over again

何度も!何度も!何度も!

Scandal
Now you've left me

There’s no healing the wounds

君は 僕を置いて行ってしまった

その傷は決して癒えない

Hey, scandal
And all the world

Can make us out to be fools

このスキャンダルで

世間は僕らを 愚か者扱いするのだろう

Here come the bad news

Open the flood gates

さあ 悪い知らせが押し寄せてくる

堰を切ったように 有る事無い事流される

They'll leave us bleeding

奴らは 僕らを血まみれにしたまま 置き去りにしていく

we say,

僕らは叫ぶ

“You cheapskates!”

“さもしい 奴らめ!”

Over and over and over again

何度でも!何度でも!何度でも!

So let them know when they stare

It’s just a private affair

ギトギト見てくる連中に 言っておく

これは 僕らのプライベートだ

They'll have us hung in the air

それでも 奴らは晒し上げて 嘲笑う

And tell me what do they care

僕らのことを気にかけているとでも? 答えろよ

It's only a life to be

Twisted and broken

もうちっぽけな灯火だ

好き勝手に 捻じ曲げ 打ち砕かれる

They'll see the heartache

They’ll see our love break, yeah

奴らは 苦痛を目にしたいんだろう

愛が砕けるのを目にしたいんだろう、なあ

They'll hear me pleading

縋る声を聞きたいんだろう

I’ll say

僕は言うんだ

for God sakes

もうウンザリだ

Over and over and over and over again, yeah

何時も! 何時も! 何時も何時も!

Yes, you're breaking my heart again

また、私の心を傷つけているのよ

Yes, you're breaking my heart again

そう、また僕の心を傷つけている

Today: the headlines

Tomorrow, hard times

今日のヘッドライン

明日は厳しい

And no-one ever really knows

The truth from the lies

誰一人として

虚実の中から 真実を見極められるわけがない

And in the end, the story

Deeper must hide

そんな状況では、

事実なんて 闇の中に沈められてしまう

Deeper and deeper and deeper inside!

深い、深い、深い暗闇へ!

CoralPink は

めのまえが まっくらに なった

Hey, CaP…, you read me…?

キャップ…、聞こえるか…?

Everybody had a wet dream

みんな熱い夢を見た

…It’s nvim Trainer. Can you hear me…?

…nvimトレーナー だ。聞こえるか…?

Everybody had a good time

みんな嬉しい瞬間があった

On your left.

左から失礼。

:h showmode

'showmode' 'smd'    boolean (default: on)
                    global

	If in Insert, Replace or Visual mode put a message on the last line.
	The |hl-ModeMsg| highlight group determines the highlighting.
	The option has no effect when 'cmdheight' is zero.

    挿入、置換、ビジュアルモードの場合、最終行にメッセージを表示する。
    ハイライトは |hl-ModeMsg| highlight グループによって決定される。
    'cmdheight' が 0 の場合、このオプションは何の効果もない。

extensions/lualine.lua

require('lualine').setup {}

-- ここに追記してみろ。
vim.api.nvim_set_option('showmode', false)
show-mode-false

lualine.nvimのカスタマイズについては、仲間をふやして次の街で❗😉

Everybody saw the sunshine

みんな陽の光を浴びた

Assemble

NVIM TRAINER IS BACK!!

nvimトレーナーは帰ってきた!!