なんか書いていこうぜー .com

Let's write something good

最近追加した Vim のプラグイン

2021-10-17
  • Share on Facebook
  • Tweet
  • Add to Pocket

普通にテキスト書けるくらいのプラグインのみ残して削除していたのだが、最近もうちょっと効率化したいという意欲が高まったので、効率化されそうと思ったプラグインをいくつか導入したので記録として残しておく。

導入したプラグイン

詳細は後で書くとして、導入したものは以下のとおり。

ctrlp.vim, vim-quickhl

vim-quickhl はカーソル下のワードをハイライトしてくれるプラグインだ。通常の検索と違い、複数のワードをそれぞれハイライトしてくれる。

検索でハイライトされるのはいいのであるが、カーソルが移動されると元いた位置に戻ってこないといけないので、カーソルを移動させずにどこで使われているかを確認するために導入してみた。

CtrlP は正確に言えば以前から導入していたが、私の設定が悪く、ファイルの多いプロジェクトだと検索が重くてほぼ使っていなかった。

CtrlP に出戻りした にある ctrlp-matchfuzzy の部分を見て ctrlp-matchfuzzy を導入し、Vim の CtrlP が動かなくなっていたので設定を見直した の .gitignore に指定したファイルを一覧から除外する にあった検索対象となるファイルを絞る設定を導入したことでかなり高速化したので、今は常用している。

indentLine, tagbar

indentLine はインデントを特定の文字列でガイドしてくれるプラグイン。 README にある文字列を指定すると、マルチバイト文字でズレることもあるので、| のみ指定している。

tagbar は ctags を利用して、class やメソッドのアウトラインを表示、ガイドしてくれるプラグイン。~/.ctags に設定を書かない状態だと、RSpec のファイルをアウトライン表示してくれないので、 https://gist.github.com/diegotoral/ce58679a2d80ecc1419767c773ec808a を参考に書き込んで ctags を生成と describe, context, it が表示されるようになった。

RSpec のアウトラインは表示されるものの、並び順はコードの順番とは異なるのでこれが解決できればもっといいな、という感じだが、定義には随分楽に飛べるようになった。

vim-test

特にコマンドの設定等しなくてもテストが実行できるプラグイン。vim でテストが記述されているファイルを開き、README にある呼び出しショートカットキーを設定して実行すればテストが実行されるので、今回書いているもので一番便利に使わせてもらっている。

今は vimterminal でテストが実行されるように設定しており、実行時に開かれるバッファ内で結果を確認したり、デバッグしたりしている。

ale, vim-lsp-ale

vim-lsp と asyncomplete で補完をしている。この LSP が動作する状態で ale を導入すると、LSP のチェックのみがバッファ上に表示されて ale の警告が表示されなかったため、制御するために vim-lsp-ale を導入した。

VIMのaleでのrubocopを軽快に の設定を参考に以下のようなテキトーな設定を書いて、bundle exec rubocop されるようにした。

let g:ale_fix_on_save = 1
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_enter = 0
let g:ale_lint_on_text_change = 0

let g:ale_set_quickfix = 1
let g:ale_set_loclist = 0
let g:ale_open_list = 1
let g:alg_keep_list_window_open = 0
let g:ale_list_window_size = 10

let g:ale_sign_column_always = 1
let g:ale_sign_error = '=='
let g:ale_sign_warning = '--'

" LSPのチェックでなく、RuboCop を使う
let g:ale_linters = {
    \   'ruby': ['rubocop'],
    \ }

function! s:set_ale_ruby_rubocop_executable()
  let b:ale_ruby_rubocop_executable = 'bundle'
endfunction

augroup my_ale_ruby_rubocop_setting
  au!
  au FileType ruby :call s:set_ale_ruby_rubocop_executable()
augroup END

あまり実行回数が増えないように save 時にのみ実行する、警告が出た箇所に出る記号を gitgutter のものとわかりやすく区別する等の設定を入れている。

さいごに

最近追加した Vim プラグインの記録を書いた。特に vim-test と ale が非常に便利で、これらがないと効率がガタ落ちするくらいに馴染んでいる。

ちょこちょこプラグイン探したり、設定見直したりしているので、大きな変更があればまた記録しよう。

Kanazawa.rb meetup#108 に参加した

2021-08-28
  • Share on Facebook
  • Tweet
  • Add to Pocket

Kanazawa.rb の 108 回目の meetup 「祝9周年 LT大会 - オンライン」 に参加してきた。

イベント内容

毎年、この月は LT 大会になっており、参加者がそれぞれ LT をする。聴くだけの参加も OK だと思われるが、スライドなしの LT 、2 つ以上 LT、プログラムやソフトウェア開発関係ないネタでの LT ありと、フリースタイルな感じになっている。

私の発表

先月のつづき として、最近お仕事の開発環境が Mac になったので、Mac 用に開発環境を整えた話で一本、懇親会用にと思っていたが時間があったので、本編時間内でデスク周りの新しい道具についてほぼ画像だけで LT した。

.zshrc や .tmux.conf の環境特有の設定を分岐して、ファイルをわけないように記述したことについて話した。環境ごとにわけてもいいのだが、あっちの環境にはあるけどこっちにはないというのをなるべくなくしたい、どうせ設定ファイルいじるならやってしまおうとなって分岐を足している。

その他

軽いノリであることと、テーマを絞っていないため、幅広い話を聴くことができた。たまに開発関係でない話や、急に王道の開発ネタが入ってきてなかなかおもしろかった。

RSpec の軽めの話があったので、気になった。今のメインストリームはそうなんだな、と思いつつ、その気持ちもわかるんだけど、自分の中で整理がついていないので、終始心乱れたまま話を聴いてしまった。

次回はもくもく会だったような気がするので、もくもくするネタを考えておかないとな。

Kanazawa.rb meetup#107 に参加した

2021-07-18
  • Share on Facebook
  • Tweet
  • Add to Pocket

Kanazawa.rb の 107 回目の meetup 「開発環境&shell(CLI)芸晒す会 - オンライン」 に参加してきた。

イベント内容

個々人の開発している環境(空間、機器、ツール)や、PC 内での開発環境、使っているものや自作のスクリプト等について、自慢する回で、形式としては、参加者が持ち寄った発表を発表時間を申告して発表する形式で行われた。

私の発表

普段私は Desktop Linux 使っているが、そういう人は多分いても少ないだろうということで、より一般的な dotfiles の管理をメインに、メモの運用について話した。

daily-memo.sh は便利に使っていて、検索が愛用の ag コマンドなので、高速なことが気に入っている。また、何も考えずにコマンド打てばファイルができて同日なら重複したファイルができないので、何も考えなくてよいのがよい。

Obsidian は専用アプリがあり、vim キーバインドに対応していたので試したが、思ったより手になじまなかったのと、ドキュメント同士のリンクをしなかったのでこれである必要はないかな……となって元に戻った。 また、Slack での times 運用はお金払わないと履歴が古いものから消えていくのと、ちょっとしたテキストの塊を入力しようとしたときにテキストエリアは領域が狭くなってしまうことがあるので辞めたのであった。

その他

今回は本編だけでなく、終わった後のオンライン飲み会でも LT 発表が 2 本あり、なかなか趣味に振り切ったもので楽しかった。

また、とんとさんと kzrb.org と meetup.kzrb.org の修正をあの場でできたのがよかった。時間を共有しつつ作業すると反映までが早いので、スピード感を感じられていいね。

SUZURI のアイテムを表示している URL がこちらの期待と違う動きをしていたので、こちら側では回避するようなコードに修正しつつ、問い合わせをしておいた。「誰も消防車を呼んでいないのである」 にならないようにね。

次回は 9 周年記念 LT 大会になる予定なので、LT のネタを仕込まねば。

キーボードのキー数を減らした

2021-07-15
  • Share on Facebook
  • Tweet
  • Add to Pocket

以前は Zinc を使っていたが、もう少しキー数を減らせるかも? と思って探していたところ、私が使えそうなキーボードである REVIUNG41 をみつけたので、今はこれを使っている。

なぜキー数を減らしたいのか?

手の移動距離を減らせそうであることと、小さいほうがキーボードを移動させるときに便利であることが理由である。小さいと必然的にキー数が減るのだ。

ただ条件があり、Linux の i3wm のメタキー、ショートカットキーを使いこなせる程度のキー数、キー配置が必要なのだ。この条件をクリアしつつ、キー数が少ないものを選ぶ必要があった。

REVIUNG41 にした決め手は?

分割キーボードっぽい配置であること、アルファベットキーの外側に一列キーがあること、キー間が狭いことがある。

分割キーボードっぽい配置であること

今はすっかり分割キーボード派である。完全な一体型には戻れる気がしないが、REVIUNG シリーズはエルゴノミックキーボードみたいになっており、末広がりな配置になっていて分割キーボードに近い配置になっているため、違和感が少ない。

また、これまでは raw staggered 派だったのであるが、この末広がり状に配置されていることにより苦手な column staggered タイプでも違和感少なくタイピングができている。

そのままではキーボード上部に配置されているキーとの距離が遠いため、上部の底に足をつけて高くしてキーとの距離を短くしている。これがあるとないとでは、E や R、I への指の届き方が違うので、角度はキーが見えるかどうかだけの差しかない、とか言う説は私の中では却下されている。

アルファベットキーの外側に一列キーがあること

Tab キーや Del キーがある列がないと、個人的に違和感がありすぎて慣れない。これは以前チャレンジしたが克服できなかった。

REVIUNG41 はその外側の列のキーが 3 行しかないが、Zinc で使っていたキーマッピングを少し変える程度でなんとかなりそうだったので、採用している。

キー間が狭いこと

Zinc の配置に慣れた身体だと、Ergotonic49 を使ってみるとキー間がちょっと空きすぎて違和感があったため、よりキー間が詰まっているものを探した。

元々がノート PC を使っていたこともあり、変にキー間が空いているよりは詰まっていたほうが違和感が少なく、このほうが馴染む。

どんなキーマップで使っているのか

今は以下の配置にしている。ほとんど Zinc を使っていたときと変わっていない。

BASE の Tab キーが Shift、MO(LO) + Tab でタブにしているのを、Zinc を使っていたときと同じように逆にしようかどうかで悩んでいる。

BASE
 ,-----------------------------------------.             ,-----------------------------------------.
 | Shift|   Q  |   W  |   E  |   R  |   T  |             |   Y  |   U  |   I  |   O  |   P  | Bksp |
 |------+------+------+------+------+------|             |------+------+------+------+------+------|
 |CTL_ESC|  A  |   S  |   D  |   F  |   G  |             |   H  |   J  |   K  |   L  |   ;  |  '   |
 |------+------+------+------+------+------|             |------+------+------+------+------+------|
 | ALT  |   Z  |   X  |   C  |   V  |   B  |             |   N  |   M  |   ,  |   .  |   /  |Enter |
 |------+------+------+------+------+------|-------------|------+------+------+------+------+------|
                             | WIN  |MO(RA)|   Space     |MO(LO)|Shift |
                             '-------------'-------------'-------------'
 ※ CTL_ESC は QMK でいう、LCTL_T(KC_ESC)


LOWER
 ,-----------------------------------------.             ,-----------------------------------------.
 | Tab  |   !  |   @  |   #  |   $  |   %  |             |PageUP| Home |  UP  | End  | ESC  | Del  |
 ,-----------------------------------------.             |------+------+------+------+------+------|
 |CTL_ESC|  &  |   ^  |   (  |   )  |  _   |             |PageDN| LEFT | DOWN | RIGHT|      | PSCR |
 |------+------+------+------+------+------|             |------+------+------+------+------+------|
 | ALT  |   \  |   +  |   *  |   /  |  =   |             |  [   |  ]   |  (   |   )  |   -  |Enter |
 |------+------+------+------+------+------|-------------|------+------+------+------+------+------|
                             | WIN  |MO(RA)|   Space     |MO(LO)|Shift |
                             '-------------'-------------'-------------'
RAISE
 ,-----------------------------------------.             ,-----------------------------------------.
 | Tab  |   1  |   2  |   3  |   4  |   5  |             |  F1  |  F2  |  F3  |  F4  |  F5  | Del  |
 |------+------+------+------+------+------|             |------+------+------+------+------+------|
 |CTL_ESC|  6  |   7  |   8  |   9  |   0  |             |  F6  |  F7  |  F8  |  F9  |  F10 | F11  |
 |------+------+------+------+------+------|             |------+------+------+------+------+------|
 | ALT  | RESET|      |      |  `   |   -  |             |  F12 |CTRL-Q|      |      | RESET|Enter |
 |------+------+------+------+------+------|-------------|------+------+------+------+------+------|
                             | WIN  |MO(RA)|   Space     |MO(LO)|Shift |
                             '-------------'-------------'-------------'
 ※ CTRL-Q は私の環境では tmux の prefix で、MO(RA) + CTRL-Q と MO(RA) + q(つまり 1) で
    指定の数字のウインドウに移動しやすくしている

さいごに

REVIUNG41、なかなかよく、前に使っていた Zinc との違和感も少なく移行できた。指の移動も少なくいい感じである。

キーのマッピングは変えるかもしれないが、しばらくはこの形でいきそう。

Blue Yeti Nanoを使う際に気をつけたい点

2021-02-17
  • Share on Facebook
  • Tweet
  • Add to Pocket

説明書にも書かれていなかった気がしたので、ここに記しておく。

Blue Yeti Nano とは

https://www.bluemic.com/ja-jp/products/yeti-nano/ これです。

私はこれを主に Linux 機に接続して使用しています。

背面にある パターンセレクタ について

パターンセレクタは、指向性の変更のために使うボタンである。正面からの音を中心に拾うのか、全体から音を拾うのか切り替えることができる。

このボタンが指向性の切り替えのためだけにあると思っていたのであるが、ヘッドフォン出力からの音の ON/OFF を切り替える機能もある みたいだ。 長押しすると、正面のボタンが LED がちらちら光ってヘッドフォン出力からの音を拾ったり、ミュートさせたりというのができる。

ヘッドフォン出力からの音が聞こえない場合、「Yeti Nano Linux」などのワードでググると、alsamixer コマンドで「再生」の音量を調整することで聞こえるようになるよ、とのコメントを見るが、パターンセレクタボタンの長押しはハードウェアミュートになるっぽく、alsamixer で見た数値は十分に聞こえるものであっても全く何も聞こえてこないので注意が必要だ。

そういうときは、パターンセレクタを長押ししてみよう。

まとめ

Blue Yeti Nano を使っていて、ヘッドフォン出力から音が聞こえなくなった!と思ったら、パターンセレクトボタンを長押ししてみよう。

それでも聞こえないなら、alsamixer の Yeti Nano の設定を確認し、再生の音量を調整してみよう。