「けものフレンズ」っぽい Vim カラースキーマをかいたよ!

やったー!

machakann/vim-colorscheme-kemonofriends

ここはジャパリパーク!

きのうあのやまからふきだしたんだよ!まだまわりがきらきらしてるでしょ!!

きのうあのやまからふきだしたんだよ!まだまわりがきらきらしてるでしょ!!

あなたサンドスターあんまりすきじゃないけものなんだね

let g:colorscheme_kemonofriends_sandstar_active = 0

vimhelplint のエラー7番を廃止しました

どうやら約一年前くらいになるのですが、 Vim プラグインのヘルプ用の lint を書きました。Vim プラグインを書き、ちゃんとヘルプまで書く人に向けて作られたかなりニッチなツールです。

vim-vimhelplint

vimhelplintの紹介

これを久々に更新、といいますか一つエラーを廃止しました。廃止したのは次のように書かれたオプション名を検出するエラー7です。

('option' ...

クオーテーションの前に ( などの記号がある場合、以前の Vim だと 'iskeyword' オプションの関係で 'option' ではなく ('option' としてタグジャンプしようとして失敗していました。このため、クオーテーションの前に空白を入れるように促していたのですが、どうやら Vim 本体の方に手をいれて問題を解決したらしいです。

「('isident' 参照)」でK →「残念ですが ('isident' にはヘルプがありません」 · Issue #10 · vim-jp/vimdoc-ja-working

これから書かれるヘルプについてはもう考慮しない方がいいと思いますので廃止します。

sandwich.vim に Emmet 的なふるまいを追加しました

先日、 sandwich.vim に HTML 式のタグで囲むレシピを追加しました。これに関して Emmet の省略記法を使えないか、という要望が来たのでちょっとやってみました。 Emmet 的なふるまい、とは言っても実際にサポートしているのは Emmet の機能のごくごく一部で、要するに三つの Attribute operators だけです。

operator 省略記法 展開後
id div#id1 <div id="id1"></div>
class div.class1 <div class="class1"></div>
custom attributes div[attr=value] <div attr="value"></div>

Demo

これだけなのでレキサーとパーサーもあんまり複雑にならず書いてて楽しかった。

Neovim には TextYankPost なるオートコマンドイベントがあるらしい

先日、 vim-highlightedyankpull request をもらいまして、 neovim に便利になったっぽいです。どうやら TextYankPost なるヤンク後に発火するオートコマンドイベントがあるらしく、これを使うことで Neovim ではキーマップする必要がなくなりました。実際これがあると、いろいろとつらい仕組みで実現しているアレコレが必要なくなるのでいいですね。本家 Vim にも入らないかな。

いったいどんな情報網があるのか知らないですけどこのプルリクの後、 Github star が増えてどうやら viml 部門の weekly の Github trends 入りしたみたいで普通にうれしい。あと、単純にプルリクもらうと嬉しいですね。

また Vim のカラースキームかいた

前の に飽きてきたのでまたカラースキームを書いてしまった。もうちょっと褪せた感じというか、彩度の低い感じを考えてたはずが結構カラフルにも見える気がする。User1 ... User9 ってカラースキームファイルで定義した方がいいのかな、とか考えたけど使ったことないから使うまでやめとくことにした。

vim-colorscheme-reki


set background=light

light

set background=dark

dark


sandwich.vim がすこし便利になりました

先日 sandwich.vim にすこし手を入れまして、ちょっとだけ便利になりました。いくつかの新機能をデフォルトで有効にしたのですが、おそらく一番便利なのが関数囲みの追加・削除ができるようになったことだと思います。以前から設定を書けばできていたのですが、やはり面倒ですし設定なしで使えた方がいいですよね。

さて、それがどういったものかというと、例えば saiwf でカーソル下の単語を関数で囲むことができます。 f の入力の後、関数名の入力を求められますので入力して <Enter> を押してください。

arg      -- saiwffunc<Enter> -->     func(arg)

関数名の入力中には <Tab> キーで現在のバッファからの簡単な補完が使えます。また、 <C-f> でコマンドラインウィンドウへ移行すれば通常のインサートモード補完が使え、履歴を使うこともできます。

逆に関数囲みを削除するのは sdf です。

func(arg)       -- sdf -->             arg

sdF も使えます。関数がネストしているとき sdf はカーソル下の関数を削除するのに対し sdF はカーソル位置を囲んでいる関数を消します。

カーソルが 'func2' の上にある場合
func1(func2(arg))  -- sdf -->   func1(arg)
                   -- sdF -->   func2(arg)

というわけでデモです。

Function surroundings demo

他の機能については Wiki をどうぞ。

vim-highlightedyank を書きました

vim-operator-flashy というプラグインがあって、これ非常に便利で生活を彩る素晴らしいアイデアなんですよ。ただ、ユーザー定義オペレータってどうやってもドットリピートの単位を更新してしまうわけです。Vim の cpoptionsy 抜きでもドットリピートされてしまうのがなんとも気持ち悪かったので、オペレータによる解決をあきらめたものを書きました。

vim-highlightedyank

あんまり綺麗でないハックを使っているのでテキストオブジェクトやモーションがコマンドラインに出力したプロンプト等を握りつぶしたり、間違ったキー入力を入れても(偽装)オペレータ待機モードを抜けなかったりするけど、ひとまず実用上問題なさそうな感じがしています。正直、ちゃんと動くかわからないんですけど、しばらく試してみようかと思います。