Humanity

Edit the world by your favorite way

カーソル下のコンパイルエラーを popup するだけの Vim プラグインを作った

github.com

なにこれ

quickfix, location list のカーソル下の情報を popup するだけの Vim プラグインを作りました。 例えば入れるだけで

  • :make したり
  • (ALE とか quickfix / location list を勝手に update してくれるプラグインが入っている場合は) :w する

だけで、コンパイルエラーがあった行にカーソルを持っていくとエラーの内容を表示できます。

スクリーンショット

f:id:tyru:20190606000437g:plain

注意

  • 最新版 Vim の popup 機能を使ってるので、Vim 8.1.1462 以降じゃないと動きません。
    • Windows ならこことかで nightly build がダウンロードできます。
  • Vim の popup はまだ試験的な機能なのでこれも試験的なプラグインです。
    • API が変わっていつの間にか動かなくなるかもしれないので、もし使ってくれる場合は、動かなくなったら報告くれると嬉しいです。

YouTube 動画ページからサムネイル画像の URL に飛ぶ Chrome 拡張・ブックマークレット

YouTube の動画を見ていてふとコメント欄に「サムネwwwww」の様なコメントを見つけてサムネを見返したいと思った事はありませんか?

僕は思ったのですぐさまブックマークレットを作り、暇だったのでやっつけで Chrome 拡張も作り、アイコン等の素材探しやスクリーンショットに使う動画を漁っていたらいつの間にか日が変わっていたので公開します。

最近はすぐ Chrome 拡張が作られる風潮ですが、僕はあまり無駄な拡張は入れたくないので最初古の技術(ブックマークレット)で作り、 Chrome 拡張作ってみたら案外便利だったので掌をツルリと返し今は Chrome 拡張の方を使っています。*1

Chrome 拡張版

現在見ている動画のサムネをポップアップで表示します。 どんな感じか見たいと思うので、リンク先にスクリーンショットも置いておきました。

chrome.google.com

github.com

ブックマークレット:ポップアップ版(※少なくとも Chrome ではブロックされてしまうので許可が必要です)

javascript:(_=>{location.search.replace(/v=([^&?=]+)/,(_,id)=>window.open('https://i.ytimg.com/vi/'+id+'/maxresdefault.jpg','popup','width=1280,height=720'))})()

ブックマークレット:画像をタブで開く版

javascript:(_=>{location.search.replace(/v=([^&?=]+)/,(_,id)=>window.open('https://i.ytimg.com/vi/'+id+'/maxresdefault.jpg'))})()

補足:YouTube のサムネイル画像の URL

ちなみに上記ブックマークレットmaxresdefault.jpg の部分を変える事でサイズの変更が可能です。

  • default.jpg (120 x 90)
  • mqdefault.jpg (320 x 180)
  • hqdefault.jpg (480 x 360)
  • sddefault.jpg (640 x 480)
  • maxresdefault.jpg (1280 x 720)

Chrome 拡張の方でもこの画像を直接表示しています。

*1:そしてまたその内使っていない事に気付いてアンインストールする気がします

Vim で無名バッファを復元する方法

TL;DR

  1. スワップファイルを残したディレクトリに :cd して、
  2. :new 等で)無名バッファを開き、
  3. :recover を実行する。

説明

デフォルトだと Vim はそのファイルを開いた時点に復元するかどうかのダイアログを表示すると思います。 というか自分はスワップファイルから復元したい場合は常にその方法で復元していました。

recover - Vim日本語ドキュメント

:rec[over] [file]       スワップファイルから[file]を回復するよう試みる。もし
                        [file]が与えられていない場合は、現在のバッファの名前が
                        用いられる。現在のバッファの内容は失われる。このコマン
                        ドはバッファが修正を加えられている場合に失敗する。

:rec[over]! [file]      ":recover" と同じだが、現在のバッファに対するどんな変
                        更も失われる。

ご覧の通り :recover はファイル名を指定する事でそのファイルをスワップから復元できます。 しかし無名バッファの場合は [file] が渡せないので、無名バッファを開いた状態で :recover と引数無しで呼ぶ事で無名バッファの復元を行えます。

(どうでもいい)経緯

自分は今まで無名バッファの場合もスワップファイルが作られるのを知りながらなぜかいつも諦めたりしていました(まぁ無名バッファに書く内容なんて大した事ないメモ書きが多い事もありますが)。 ただ今回失われるのも惜しいって事で初めて調べた結果、冒頭の方法が分かりました(初めて)。 習慣とか思考停止怖い。

おまけ: :retab! でインデントをタブやスペースに変換したりできる

これまで自分は :retab はタブからスペースへの変換にしか使えないと思い込んでいましたが、 :retab!! を付ければ、'expandtab' オプションがオンであればスペース、オフであればタブに変換されます。

普通に知ってるよって人も多いでしょうが、思い込みって怖いですね(わざわざタブへの変換用に :Unretab とかいうコマンドを自作していた思い出)。