(macOS) (Karabiner-Elements) vi以外でもhjklキーでカーソル移動する
明けましておめでとうございます。 本年も宜しくお願い申し上げますm( )m
早速ですが、私はかれこれ20年くらいのvi使いです。
(vimmerと言わないのはvim以外のviクローンを使っていた期間が長いからです)
ご存知の通りviではカーソル移動はhjklで行います。
慣れるとホームポジションのままカーソル移動できるのはとても快適です。
でもvi以外のアプリを使っているときは通常カーソルキーで移動せざるを得ません(マウスとかトラックパッドは一旦おいときますw)。
viのカーソル移動が指に染み付いている人はわざわざカーソルキーまで指を移動させるのが苦痛ですよね?(苦痛でない人には本記事は全く役に立ちません🙇♂️)
本記事ではKarabiner-Elementsという神ツールを利用してhjklキーでカーソル移動できるようにする方法を紹介します。
免責事項
この設定で酷使した為かは不明ですが、前に使っていたMacBook ProのJキートップがバカになりましたw
MacBookPro (15-inch, 2017)でキーボードに問題があったバージョンなので、そのせいもあるかとは思いますが・・
本記事紹介のツールや設定のご利用は利用者ご自身の判断と責任で行うようお願いいたします。🙇♂️🙇♂️🙇♂️
環境
- MacBook Pro(16inch, 2019)
- macOS Catalina(10.15.2)
※ 以前Sierra 〜 Mojave でも動作していました。
Karabiner-Elementsインストール
Macのキーバインドをかなり自由に変更できるツールです。
↓よりダウンロード&インストールします。
右command+hjklをカーソルに
タイトルでは「hjklキーで」と書いてしまいましたが実際には同時に押す修飾キーが必要です。スミマセン。
修飾キーなしだと通常のhjklタイプと区別つかないので・・・。
どの修飾キーを使うかは好みになりますが、私は右commandキーを割り当てています。
optionやfn、Shiftキーだとカーソルとの組み合わせ移動に不都合が生じたり、controlキーだとショートカットに不都合があって最終的に右commandに落ち着いたのですが、詳しい経緯は失念しました。他の修飾キーにしたい人はいろいろ試してみて下さい。
右commandキー+jjklをカーソルに割り当てるルールはKarabiner-ElementsにExamplesとしてデフォルトで用意されています。
メニューバーのKarabiner-Elementsから、「Preferences」を開きます。
「Complex modifications」→「Rules」を開き、「Add Rule」ボタンをクリックします。
「Change right_command+hjkl to arrow keys」の「Enable」ボタンをクリックします。
これで、右command+hjklでカーソル移動できる様になりました!!\(^o^)/
「かな」キーを右commandに
実はまだ不満があります。
右commandですが、ホームポジションから親指で押すにはちょっと窮屈なのですよね。
そこで、ちょうど右手親指のところにある「かな」キーを利用します。
「かな」キーと他のキーを同時に押した場合は「かな」キーを右commandとして扱う様に設定します。さらに「かな」キー単独の場合は通常通り「かな」として動作する様にします。
下記ファイルをダウンロードして ~/.config/karabiner/assets/complex_modifications/
ディレクトリにコピーします。
https://github.com/hogedigo/dotfiles/blob/master/.config/karabiner/assets/complex_modifications/kana_rightcmd.json
前項の同様の手順でルール追加画面を開き、「かなを単体で押したときに、かなキーを送信する。他のkeyと併用された場合はright_commandを送信する」の「Enable」ボタンをクリックします。
これで「かな」+hjklでカーソル移動できる様になりました!\(^o^)/ 左command、option、shift、controlとの併用もOKです!
自分はUSキー配列派ですが、この「かな」キーが欲しいが為にキーボードは必ずJISを購入して、US配列にバインドして使用しています。
US配列バインドもKarabiner-Elementsでできるみたいですが、自分は別の方法を利用しています。
詳しくは前の記事に書きました。
TODO
カーソル移動しかけて「かな」キーだけ押して中断した場合に、かな変換がかかってしまうのが唯一の不満として残っています。
頻度は多くないのでそれほどストレスないですが、今後の課題としたいと思います。
捕捉
Karabiner-Elementsルール追加画面に「Import more rules from the internet (open a web browser)」というボタンがあります。
これをクリックするとインターネットからいろいろな設定済ルールをダウンロードできます。
Emulation Modeの「Vi Mode (rev 5)」や「Vi Style Arrows」に、hjklをカーソルとして使うルールがいくつか見られます。本記事設定ではしっくりこなかった方はこれらを試してみるのもよいかと思います。
MacBook Pro(16-inch) 引越しメモ
MacBook Proの「J」のキートップがバカになってしまってGenius Barで直してもらいましたがその後再発。キーボード丸ごと交換も可能だけど2週間くらい預けないといけないとのことで、ついに新しいMacBook Pro(16-inch)を購入してしまいました。
今後また環境セットアップする時用に移行作業メモを残しておきます。
あくまで個人的備忘メモで、オレの考えた最強の環境・・・とかではありません。悪しからず。
基本
トラックパッド設定
キーリピートの間隔を短く
defaults write -g InitialKeyRepeat -int 10 defaults write -g KeyRepeat -int 1
参考: Macのキーリピートの速さの限界を超えたいとき - Qiita
再ログインが必要。
タッチバーをカスタマイズ
スリープを右端に置く
zshrc
Catalinaからzshになったので.bash_profile を.zshrcに移植。 現在不要な設定は削除
TODO: あとでzshrcもdotfilesにあげる
キーボード配列をUSに
USキーボード派ですが「英数」「かな」キーが欲しい為MacBook ProはいつもJIS配列を購入しています。 JIS配列キーボードをUSキーボードとして使うためにJANSIを使います。
$ unzip JANSI-MacOSX10.4.zip $ cp JANSI-MacOSX10.4/JANSI.* ~/Library/Keyboard\ Layouts/
ついでにバックスラッシュと円マークの送信も入れ替えておく。
Macにおけるバックスラッシュ(\)の入力方法 - Qiita
設定
アプリ&コマンドインストール
- Homebrew
- Alfred
- Chrome
- ユーザー設定
- iTerm2
- Preferences→Profiles→Terminal→Scrollback lines を100,000行に変更
- Clipy
- 記憶する履歴の数:50項目
- インライン表示する項目の数:10項目
- ショートカット(メイン):Shift+Ctrl+C
- ショートカット(履歴):Shift+Ctrl+Z
- ショートカット(メイン):Shift+Ctrl+A
- Snippets設定ファイルインポート
- Snippetsショートカット(misc):Shift+Ctrl+X
- BetterTouchTool
- ライセンスファイルロード
- トラックパッドの速度:8
- ウィンドウスナップと移動
- 修飾キーの移動とサイズ変更
- カーソルしたのウィンドウ
- ウィンドウの移動:Shift+Ctrl+Cmd
- ウィンドウのサイズ変更:Shift+Ctrl+Opt
- 修飾キーの移動とサイズ変更
- Karabiner-Elements
- Evernote
- Sourcetree
- Google Drive File Stream
- Dropbox
- Office 365
Go
VimのGo開発プラグインに後述するvim-lsp, vim-lsp-setting使おうと思ったけど先にGoが入ってないとちゃんと動かなかったのでインストール。
現時点の最新Go1.13.5。 最近goenvを卒業しようかな〜と考えているのだけど、他にどんな方法でバージョン切替しているのかよく知らないのでとりあえず公式インストーラを使う。
PATH設定
.zshrcにPATH追加
export PATH="$HOME/go/bin:$PATH"
goimports
goimports command - golang.org/x/tools/cmd/goimports - Go Packages
Vim
Vim本体
初期設定で 8.1.1312
と結構新し目のVimが入っていたが、brewの最新が8.2になっていたのでそちらを入れる。
$ brew install vim
インストールした直後PATH通ってるはずなのに8.2が起動しない。 →ターミナル起動し直したら通った(zshのキャッシュか何か?)
vim-lsp
ずっとvim-go使ってたけど、ちょうど↓な記事があったのでvim-lsp-settingsを試してみる。
Goをインストールする前だとGoファイル開いてもサジェスト動かないので注意。
最終的に vim-go も gopher.vim も外した。
— mattn (@mattn_jp) December 20, 2019
* vim 同梱の syntax/go.vim
* vim-lsp
* vim-goimports (さっき作った)
という構成に落ち着いた。https://t.co/3ESHK9LRs7
に追従してvim-goimportsも入れる。
辞書.app の英和/和英が表示されない
下記参考に修正
先にハマって解決してさらに共有までしてくれているの、とても有難い。
ひとまず終了\(^o^)/
色々忘れてそうだけど気付いたら追記していく。
ここまでやってから↓の記事を見つけた。
すごい参考になる!作業前に読みたかった!!(^ω^;;
(追記)M1 MackBook Pro移行作業
↓を参考にhomebrew環境を分けた https://masakimisawa.com/m1mac-create-local-environment/
- Go1.11やNode.js 10.24のインストールに手間取った為。
静岡IT勉強会 個人的2019ふりかえりと2020抱負
( 静岡 Advent Calendar 2019 - Qiita 12/23 の記事となります。)
2019年に静岡で参加してきたIT系勉強会の振り返りと、2020年の抱負を書きます!
2019ふりかえり
Python Boot Campが静岡で開催されるとのことで参加してきました。
実はPythonを初めて仕事で書いたのは2000年くらいで途中TracというPythonで書かれたBTSのPluginを書いたりとそこそこ経験はあったのですが、ここ数年殆ど触れておらず言語仕様も忘れていたので改めて勉強してきました。
最近のPythonの盛り上がりはすごいですね!もっと書きたくなりました(^^)
Shizuoka.go Vol.13
共同主催&発表。
久々の開催になりましたが、結構参加者が来てくれました(^^)
主催者以外の方の発表も増えて、ようやくGoが静岡でも広がり始めたのかな?と感じました。
自分はGoの静的解析についての発表を行いました。
Shizuoka.go Vol.14
共同主催&発表。
人数はやや少なかったですが何人か初めて参加してくださいました。
初めての人にもできるだけオープンな勉強会にしたいですね。
自分はGo言語の並行処理について発表しました。
Shizuoka.js#5
参加。
さすがJavaScript。Goよりも人気ですね(^ω^;
ここ数年ずっとサーバーサイド開発ばかりしていてめっきりJS書く機会が減ってしまいましたが、最近Firebaseに興味が出てきたこともあり参加しました。
内容はものすごく面白かったです!少し専門外のイベントに参加すると知らないことがたくさん出てきてすごく刺激になりますね。若いプログラマ(高校生!)が参加されていることにもびっくりしました。静岡の未来明るいですね(^^)
懇親会で教えてもらったSvelteを最近少し触っています。
Shizuoka.go Vol.15
共同主催&発表。
一週前のShizuoka.jsで、告知をさせてもらったおかげか、いつもより多く参加者が集まりました。
初参加者も結構いたので、Goのテスト周りの基本的なことを発表しました。
あと、Shizuoka.jsと重複で参加されている人が結構いたのでGopherJS(Go→JSコンパイラ)のLTもしました。
2020抱負
2020年もShizuoka.goも引き続きやっていきますが、何か新しい勉強を始めたいと考えています。
現在個人的に特に興味を持っているのがFirebaseとKubernetesになります。
2020年はそれぞれ定期的な勉強会を開催していきたいと考えています。
いつも「やるやる詐欺」で終わってしまうクセがあるので、意を決してイベントを登録しました!!
「意を決して」とか言った割に3月開催と随分先の予定になってしまいました(^_^;;
(1、2月にプライベートで予定が集中しているのです🙇)
もし少しでも興味あれば年明けくらいから募集開始するので参加登録お願い致します!
来年はがんばるぞq(^o^)p
期限を指定しておやすみモードをONにする方法(iOS13 ショートカット機能)
数年振りの個人ブログ更新となります。(^_^;;
(ここ数年はTwitterツイートの自動記録のみで、それも一年前から停止してました)
動機
iPhone、時間指定して一時的にマナーモードにする機能が欲しい。
— Ikeda Daigo (@hogedigo) 2019年11月26日
バイブに気付きにくい&マナーモード解除を忘れがちなので。
会議のときとか映画館とかマナーモードにすると思うのですが、その後どうしても解除するのを忘れてしまう癖があります。自分はいつもスマホをジーンズのポケットに入れているのですが鈍感なのかバイブに気づかず呼び出しをずっと無視してしまったりしてしまいます。
「1時間とか2時間指定してマナーモードに出来たらいいのに」と思って上のツイートをしたところ、いろいろ助言を頂きました。
考察
まず、どうやらマナーモードをコントロールする機能はなさそう。アプリのプログラムからも制御することは出来なさそうということが分かりました。
次にTwitter上で「おやすみモードでスケジュール指定すれば? 」という助言を頂きました。なるほどおやすみモードのことが頭から抜け落ちていたけどそれでも良さそう(^o^)
コントロールセンターの月アイコンを長押しするとスケジュールが入力できるとのこと(知らなかった^^;)で、やってみます。
「1時間」と「この場所を出発するまで」だけでもかなりのケースをカバーできそう!(^o^)
惜しむらくは「2時間」「3時間」くらいの指定が欲しいところです。。「スケジュール」で細かな開始・終了時刻を設定することは出来るもののこれはおやすみモードの大元の設定を変更することになるので、設定を元に戻すことを忘れると今度は意図しないタイミングで勝手におやすみモードになってしまったり、夜おやすみモードになってなかったりする弊害が生じそうです。(´・ω・`)
iOS13 ショートカット機能
同じくTwitterで「iOSの新しいショートカット機能使ってできるかも」という助言も頂きました。そして弊社メンバーにも相談したところ「やってみたら出来ました!」との報告が。\(^o^)/
フィードバックも兼ねて手順を記しておきます(各位ありがとうございました)
m(_ _)m
「ショートカット」アイコンをタップします。
次に「ショートカットを作成」をタップします。
「アクションを追加」をタップします。
「スクリプティ」をタップします。
「入力を要求」をタップします。
「質問」をタップして「終了時間」を入力します。
「入力の種類」をタップして「時間」を選択します。
下のプラスアイコンをタップします。
「おやすみモードを選択」をタップします。
「オフ」のところをタップして「時間」を選択します。
時間詳細部分をタップして「指定入力」を選択します。
ショートカット名を自由に入力します。
ここでは「おやすみタイマー」と入力しました。
ここに書かれている通りSiriで音声のみでショートカット起動&終了時間入力することも出来て便利です(^o^)
これでショートカット作成は完了です\(^o^)/
下の手順でホーム画面にアイコン追加します。
右上の「・・・」アイコンをタップします。
「ホーム画面に追加」をタップします。
これでホームにアイコンが追加されました。ウィジェットからも起動が出来ます。
まとめ
ショートカットとても便利です!
いろいろ出来そうなのでもうすこし遊んでみようと思います(^^)