ほげにっき

hogedigoの日記

(macOS) (Karabiner-Elements) vi以外でもhjklキーでカーソル移動する

明けましておめでとうございます。 本年も宜しくお願い申し上げますm( )m

早速ですが、私はかれこれ20年くらいのvi使いです。
vimmerと言わないのはvim以外のviクローンを使っていた期間が長いからです)

ご存知の通りviではカーソル移動はhjklで行います。
慣れるとホームポジションのままカーソル移動できるのはとても快適です。

でもvi以外のアプリを使っているときは通常カーソルキーで移動せざるを得ません(マウスとかトラックパッドは一旦おいときますw)。
viのカーソル移動が指に染み付いている人はわざわざカーソルキーまで指を移動させるのが苦痛ですよね?(苦痛でない人には本記事は全く役に立ちません🙇‍♂️)

本記事ではKarabiner-Elementsという神ツールを利用してhjklキーでカーソル移動できるようにする方法を紹介します。

免責事項

この設定で酷使した為かは不明ですが、前に使っていたMacBook ProのJキートップがバカになりましたw

お亡くなりになったJキートップ

MacBookPro (15-inch, 2017)でキーボードに問題があったバージョンなので、そのせいもあるかとは思いますが・・

本記事紹介のツールや設定のご利用は利用者ご自身の判断と責任で行うようお願いいたします。🙇‍♂️🙇‍♂️🙇‍♂️

環境

※ 以前Sierra 〜 Mojave でも動作していました。

Karabiner-Elementsインストール

Macキーバインドをかなり自由に変更できるツールです。
↓よりダウンロード&インストールします。

pqrs.org

右command+hjklをカーソルに

タイトルでは「hjklキーで」と書いてしまいましたが実際には同時に押す修飾キーが必要です。スミマセン。
修飾キーなしだと通常のhjklタイプと区別つかないので・・・。

どの修飾キーを使うかは好みになりますが、私は右commandキーを割り当てています。
optionやfn、Shiftキーだとカーソルとの組み合わせ移動に不都合が生じたり、controlキーだとショートカットに不都合があって最終的に右commandに落ち着いたのですが、詳しい経緯は失念しました。他の修飾キーにしたい人はいろいろ試してみて下さい。

右commandキー+jjklをカーソルに割り当てるルールはKarabiner-ElementsにExamplesとしてデフォルトで用意されています。

メニューバーのKarabiner-Elementsから、「Preferences」を開きます。
「Complex modifications」→「Rules」を開き、「Add Rule」ボタンをクリックします。

f:id:digo:20200109170100p:plain
ルールの追加

「Change right_command+hjkl to arrow keys」の「Enable」ボタンをクリックします。

f:id:digo:20200109170700j:plain
Ruleの選択

これで、右command+hjklでカーソル移動できる様になりました!!\(^o^)/

「かな」キーを右commandに

実はまだ不満があります。

右commandですが、ホームポジションから親指で押すにはちょっと窮屈なのですよね。

そこで、ちょうど右手親指のところにある「かな」キーを利用します。

f:id:digo:20200109172104j:plain
かなキー万歳!

「かな」キーと他のキーを同時に押した場合は「かな」キーを右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」ボタンをクリックします。

f:id:digo:20200109175230j:plain
ルールの追加

これで「かな」+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)」というボタンがあります。

f:id:digo:20200110043710j:plain
Import more rules

これをクリックするとインターネットからいろいろな設定済ルールをダウンロードできます。

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を使います。

kenie33-jansi.blogspot.com

$ unzip JANSI-MacOSX10.4.zip
$ cp JANSI-MacOSX10.4/JANSI.* ~/Library/Keyboard\ Layouts/

入力ソースにJANSIを指定

ついでにバックスラッシュと円マークの送信も入れ替えておく。

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
    • 設定ファイル.config/karabiner にコピー
      • 下記設定有効になっていることを確認
        • CapsLockを左Cmdキーに変更
        • かな単体で押したときに、かなキーを送信する。他のKeyと併用された場合は右Cmdを送信する。
        • ESC or ^[ でIMEをOFFに(vim用)
        • 右コマンド(及びかなキー)+ hjkl でカーソルキーの役割 *1
  • Evernote
  • Sourcetree
  • Google Drive File Stream
  • Dropbox
  • Office 365

Go

VimのGo開発プラグインに後述するvim-lsp, vim-lsp-setting使おうと思ったけど先にGoが入ってないとちゃんと動かなかったのでインストール。

現時点の最新Go1.13.5。 最近goenvを卒業しようかな〜と考えているのだけど、他にどんな方法でバージョン切替しているのかよく知らないのでとりあえず公式インストーラを使う。

golang.org

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を試してみる。

qiita.com

Goをインストールする前だとGoファイル開いてもサジェスト動かないので注意。

に追従してvim-goimportsも入れる。

辞書.app の英和/和英が表示されない

下記参考に修正

qiita.com

先にハマって解決してさらに共有までしてくれているの、とても有難い。

ひとまず終了\(^o^)/

色々忘れてそうだけど気付いたら追記していく。

ここまでやってから↓の記事を見つけた。

budougumi0617.github.io

すごい参考になる!作業前に読みたかった!!(^ω^;;

(追記)M1 MackBook Pro移行作業

↓を参考にhomebrew環境を分けた https://masakimisawa.com/m1mac-create-local-environment/

  • Go1.11やNode.js 10.24のインストールに手間取った為。  

*1:これのせいで旧MBPのJキートップが壊れたのだが(^^;;

静岡IT勉強会 個人的2019ふりかえりと2020抱負

( 静岡 Advent Calendar 2019 - Qiita 12/23 の記事となります。) 


2019年に静岡で参加してきたIT系勉強会の振り返りと、2020年の抱負を書きます!

 

2019ふりかえり 

Python Boot Camp in 静岡県静岡市

pyconjp.connpass.com

 

Python Boot Campが静岡で開催されるとのことで参加してきました。

実はPythonを初めて仕事で書いたのは2000年くらいで途中TracというPythonで書かれたBTSのPluginを書いたりとそこそこ経験はあったのですが、ここ数年殆ど触れておらず言語仕様も忘れていたので改めて勉強してきました。

最近のPythonの盛り上がりはすごいですね!もっと書きたくなりました(^^)

Shizuoka.go Vol.13

shizuoka-go.connpass.com

 

共同主催&発表。

久々の開催になりましたが、結構参加者が来てくれました(^^)

主催者以外の方の発表も増えて、ようやくGoが静岡でも広がり始めたのかな?と感じました。

自分はGoの静的解析についての発表を行いました。

 

Shizuoka.go Vol.14 

shizuoka-go.connpass.com

共同主催&発表。

人数はやや少なかったですが何人か初めて参加してくださいました。

初めての人にもできるだけオープンな勉強会にしたいですね。

自分はGo言語の並行処理について発表しました。

 

Shizuoka.js#5

connpass.com

参加。

さすがJavaScript。Goよりも人気ですね(^ω^;

ここ数年ずっとサーバーサイド開発ばかりしていてめっきりJS書く機会が減ってしまいましたが、最近Firebaseに興味が出てきたこともあり参加しました。

内容はものすごく面白かったです!少し専門外のイベントに参加すると知らないことがたくさん出てきてすごく刺激になりますね。若いプログラマ(高校生!)が参加されていることにもびっくりしました。静岡の未来明るいですね(^^)
懇親会で教えてもらったSvelteを最近少し触っています。

 

Shizuoka.go Vol.15

shizuoka-go.connpass.com

共同主催&発表。
一週前のShizuoka.jsで、告知をさせてもらったおかげか、いつもより多く参加者が集まりました。

初参加者も結構いたので、Goのテスト周りの基本的なことを発表しました。

あと、Shizuoka.jsと重複で参加されている人が結構いたのでGopherJS(Go→JSコンパイラ)のLTもしました。

 

2020抱負

2020年もShizuoka.goも引き続きやっていきますが、何か新しい勉強を始めたいと考えています。

現在個人的に特に興味を持っているのがFirebaseとKubernetesになります。

2020年はそれぞれ定期的な勉強会を開催していきたいと考えています。

いつも「やるやる詐欺」で終わってしまうクセがあるので、意を決してイベントを登録しました!!

 

connpass.com

 

connpass.com

 

「意を決して」とか言った割に3月開催と随分先の予定になってしまいました(^_^;;

(1、2月にプライベートで予定が集中しているのです🙇)

もし少しでも興味あれば年明けくらいから募集開始するので参加登録お願い致します! 

来年はがんばるぞq(^o^)p

 

期限を指定しておやすみモードをONにする方法(iOS13 ショートカット機能)

数年振りの個人ブログ更新となります。(^_^;;

(ここ数年はTwitterツイートの自動記録のみで、それも一年前から停止してました)

 

動機

 会議のときとか映画館とかマナーモードにすると思うのですが、その後どうしても解除するのを忘れてしまう癖があります。自分はいつもスマホジーンズのポケットに入れているのですが鈍感なのかバイブに気づかず呼び出しをずっと無視してしまったりしてしまいます。

 

 「1時間とか2時間指定してマナーモードに出来たらいいのに」と思って上のツイートをしたところ、いろいろ助言を頂きました。

 

考察

 まず、どうやらマナーモードをコントロールする機能はなさそう。アプリのプログラムからも制御することは出来なさそうということが分かりました。

 

 次にTwitter上で「おやすみモードでスケジュール指定すれば? 」という助言を頂きました。なるほどおやすみモードのことが頭から抜け落ちていたけどそれでも良さそう(^o^)

 

 コントロールセンターの月アイコンを長押しするとスケジュールが入力できるとのこと(知らなかった^^;)で、やってみます。

f:id:digo:20191202095920p:plain

 「1時間」と「この場所を出発するまで」だけでもかなりのケースをカバーできそう!(^o^)

 

  惜しむらくは「2時間」「3時間」くらいの指定が欲しいところです。。「スケジュール」で細かな開始・終了時刻を設定することは出来るもののこれはおやすみモードの大元の設定を変更することになるので、設定を元に戻すことを忘れると今度は意図しないタイミングで勝手におやすみモードになってしまったり、夜おやすみモードになってなかったりする弊害が生じそうです。(´・ω・`)

iOS13 ショートカット機能

 同じくTwitterで「iOSの新しいショートカット機能使ってできるかも」という助言も頂きました。そして弊社メンバーにも相談したところ「やってみたら出来ました!」との報告が。\(^o^)/

 

 フィードバックも兼ねて手順を記しておきます(各位ありがとうございました)

m(_ _)m

 

 「ショートカット」アイコンをタップします。

f:id:digo:20191202171033p:plain

 

次に「ショートカットを作成」をタップします。

f:id:digo:20191202171300p:plain

 

「アクションを追加」をタップします。

f:id:digo:20191202171424p:plain

 

「スクリプティ」をタップします。

f:id:digo:20191202170224j:plain

 

「入力を要求」をタップします。

f:id:digo:20191202170241j:plain

 

 「質問」をタップして「終了時間」を入力します。

f:id:digo:20191202170247j:plain

 

「入力の種類」をタップして「時間」を選択します。

下のプラスアイコンをタップします。

f:id:digo:20191203051144j:plain

 

「おやすみモードを選択」をタップします。

f:id:digo:20191202170339j:plain

 

「オフ」のところをタップして「時間」を選択します。

f:id:digo:20191202170346j:plain

 

時間詳細部分をタップして「指定入力」を選択します。

f:id:digo:20191202170358j:plain

f:id:digo:20191202170403j:plain

 

ショートカット名を自由に入力します。

ここでは「おやすみタイマー」と入力しました。

ここに書かれている通りSiriで音声のみでショートカット起動&終了時間入力することも出来て便利です(^o^)

f:id:digo:20191203052028j:plain

 

これでショートカット作成は完了です\(^o^)/

f:id:digo:20191203052711j:plain

 

下の手順でホーム画面にアイコン追加します。

右上の「・・・」アイコンをタップします。

f:id:digo:20191203052056j:plain

 

「ホーム画面に追加」をタップします。

f:id:digo:20191203052105j:plain

 

これでホームにアイコンが追加されました。ウィジェットからも起動が出来ます。

 

まとめ

ショートカットとても便利です!

いろいろ出来そうなのでもうすこし遊んでみようと思います(^^)

2018年09月01日のツイート

2018年08月31日のツイート

2018年08月30日のツイート