コマンドラインで動くリンク切れチェッカー
ちょっと前 Twitter で教えてもらったのでブログに書いてみる。
gem i rawler
— syui (@syui__) September 16, 2018
pip install linkchecker
とかどうでしょう。
wgetでも出来そうなんですけど、tyruさんの目的には合わないでしょうか?https://t.co/xjJAJsxKy9
— rat (@rattcv) September 16, 2018
最初 <a>
タグを見つけて再帰的に調べてくれるやつが欲しかったので見た感じ linkchecker が最適かと思ったけど、
インストールにちょっとだけ躓いてしまってその間に wget でもできると教えてもらって試したらこれで十分だった。
こんな感じの結果が出る。
wget --spider --recursive --level=inf --no-verbose --execute robots=off localhost:8000 Found 3 broken links. http://localhost:8000/aaa http://localhost:8000/bbb.html http://localhost:8000/js/foo.js
シングルページの場合は puppeteer とか使った方が良いんだろうけど、今回はそういうわけではなかったのでこれで良かった。 wget 便利。
linkchecker と crawler はあんまり調べてないけど、 linkchecker は色々高機能でサイトマップの生成なんかもできたりするっぽい。 crawler は "BFS webcrawler that implements Observable" とのことで recursive でも幅優先で見てくれるのが特徴かも。
Vim の端末ウィンドウから別のウィンドウに移る時にコマンドを実行中にしておく
を書いた後 vimrc を整理していたら書きかけの設定があったのでこれも公開。
autocmd vimrc
の vimrc
は適当に変えてください(分からない人はそのままでもいいです)。
" Enter Terminal-Job mode when leaving terminal window autocmd vimrc TerminalOpen * \ autocmd vimrc WinLeave <buffer> \ if term_getstatus('') =~# '\<normal\>' | \ execute 'normal! GA' | \ endif
これを vimrc に書くと、端末ウィンドウで <C-w>N
で一旦端末ノーマルモードに移って出力を止めた後、
そのまま別のバッファに移動しようとすると端末ジョブモードに戻してコマンドを実行中の状態にします。
すごくニッチですが、個人的には端末ノーマルモードにしたいのはコピペする時や遡って出力を見たい時ぐらいなので、
別ウィンドウに移る時は端末ジョブモードにしておいて欲しいというのがあります。
上記の設定はそれを行ってくれます。
Vim で端末ウィンドウを複製する
Vim で端末ウィンドウを使ってるとスクロールされた出力を見たくなる時があると思います。
ただシェルでコマンド実行中なので、 <C-w>N
すると出力も止まってしまう。なるべくなら出力を止めたくないと思います(たぶん)。
そういう時は以下を vimrc に貼り付ければ <C-w>y
で端末ウィンドウの複製バッファができます。色とかもそのまま。
追記 (9/25) すみません、以下のコードだとやっぱりスクロールされた出力は見れませんでした…直すのでお待ちください…というか誰か直してください…
tnoremap <C-w>y <C-w>:<C-u>call <SID>dup_term_buf()<CR> function! s:dup_term_buf() abort let file = tempname() call term_dumpwrite('', file) call term_dumpload(file) setlocal nolist call delete(file) endfunction
追記
term_dumpload() で一部の色が復元されないと思って現実逃避気味によっしゃ term_scrape() で頑張るぞ!ってやってたコードが単に setlocal nolist すれば出ると知った時の顔
— tyru🍆 (@_tyru_) 2018年9月22日
— tyru🍆 (@_tyru_) 2018年9月22日