【ポエム・宗教勧誘】Trackpad・マウス嫌いな人がキーボードで Mac を乗りこなす方法


# 【ポエム・宗教勧誘】 Trackpad・マウス嫌いな人がキーボードで Mac を乗りこなす方法

みなさんこんにちは．あるいはこんばんは．eeic2021 の kakekakemiya と申します．

今回は， **EEIC アドベントカレンダー 2022** の 12/23 分の記事として「Trackpad・マウス嫌いな人がキーボードで Mac を乗りこなす方法」をお送りします．

## マウスと Trackpad って...

私は普段 MacBook を使っているのですが，正直言って Trackpad があまり好きではありません．

あれだけ高精度で直感的なジェスチャーを実現できるのはすごいことなので，愛用している人がいるのは重々理解できるのですが，手先が不器用な私にとっては，ピンチアウトや右クリック，n 本指の使い分けなどは勿論，**そもそも好きなところにエイムを合わせるのが難しいのです！！**

> 僕のマウス操作はスペースシューターくらいブレるので，特に購入当初はドラッグ&ドロップや右クリックを好きなタイミングで発動できずにイライラしていたのを覚えています．

そんな私が，Mac を相棒として乗りこなすためにしているカスタマイズや工夫を今日は書く気力の続く限りご紹介したいと思います．

きっと記事を読み終わるころには，**貴方もキーボード操作にトライしてみたくなっているはず！** それでは行ってみましょう！！

# 【その 1】 ターミナル編

まずは，キホンのキであるターミナルでできることについて話します．

ただ，ターミナルをどうしても好きに慣れない勢がいるのは理解しているので，ここは読み飛ばしたいぜ！って方は，すすっとスクロールして，**【その 2】アプリ編** に飛んでください！

## ターミナルエミュレーターについて

Mac のデフォルトのターミナルエミュレーターである「端末」って，すごくイマイチですよね...
あれのせいで CLI にアレルギーを発症し，Mac のつよつよ GUI に吸われていくユーザーが多いのはよくわかります．

そんな中でも，やはりターミナルがいいよね，という Mac ユーザーは，iTerm を使うのがこれまで普通でした！実際私もかつては iTerm を愛用しておりました...

しかし，今は私は **Warp** というターミナルを使っています！！
iTerm から完全移行しました．

https://www.warp.dev/

Warp は 21 世紀のターミナルと言われている Rust 製のイカしたターミナルエミュレータで，とりあえず騙されたと思って使ってみるのがおすすめです．

Warp のどこがいいかと言うと，

-   ホットキーが使える（ホットキーが設定できることは正直必須 しかも iTerm より挙動が安定している！）
-   軽い
-   UI がいい
-   デフォルト機能が強すぎる
    -   Git の branch 表示はもちろん，status も常に表示されているのが最高（iTerm では自分で設定していた）
    -   デフォルトで神補完
        -   CLI に欠かせない補完機能ですが，Warp のそれは素晴らしいの一言です．
        -   どうやっているか知りませんが，そのディレクトリでよくやる操作を候補の前に出してくれたり，ファイル名を先頭からのマッチングではなくある程度 fuzzy にやってくれます． **すごい．これはガチですごい．他のターミナル使えなくなる．**
-   特殊なプラグイン等を入れなくても，新規タブ，画面分割等をショートカットで素敵にやってくれます．（その間の移動も超簡単にできます）

> 僕はあまり使いませんが，複数行編集で簡易のスクリプトをかけたり，入力や出力を簡単にコピーできたりします．すごいね！

あと，現在この Warp というアプリは Mac でしか使えません！！！！！！！
なんという特別感！Mac を持っているのにこの子を使わないのはもったいないです．

**正直僕が語らなくても使ってみれば素晴らしさがわかると思うので入れてください．**
（iTerm 出身者は最初は補完のリズムが直感と違ってイライラするかもしれませんが，一日もあれば慣れます．というかマジで呆れるほど補完が聞くのですぐにこっちが直感になります．）

:::note info
**Warp の導入**
難易度：ダウンロードするだけなので簡単
おすすめ度：騙されたと思って使ってみて
:::

## アプリの起動

Mac は，アプリの起動が難しいです．

というのも，Windows 等だと，Win + n で，n 番目のお気に入りアプリを開けるので，楽なのですが，Mac は dock 内のアプリでさえキーボードから開くのが難しいです．（ダサい方法なら確かなんとかできるのですが...）

そこで．私は，いつもターミナルからアプリを開いています．
具体的には，私のターミナルでは，

`$ slack` と打てば slack が起動しますし， `$ figma` と打てば figma が起動します．
非常にシンプル！いいね

どうやっているかというと，単に **alias 　を登録しているだけです．**

（~/.zshrc に書いているだけです．Mac alias 設定 とかでググってね！）

```shell
$ alias | grep slack
slack='open /Applications/Slack.app'
```

> これ，雑魚い補完だと出てこないとかあるんですが，Warp 　使うと普通に出してくれるので最高です．

ここで，察しのいい優秀な読者さまはお気づきになっているかもしれないのですが，この alias は open コマンドを叩いているだけなので，アプリである必要がありません！！Web でもファイルでもいけます！

なので僕のターミナルでは，

`$ deepl` と叩けば deepl が　`$ itclms` と叩けば ITC-LMS が開きます． `$ tl` で Twitter のタイムラインを開くことも可能です．

非常に便利ですね！どこにアプリあったっけとか考えず脳死で開けるし，ATP の節約になります．

参考までに，私の登録している alias を貼っておきます．（一部の見られたくないの・皆さんが参考にできないものは消しました．）

```shell
$ alias
buildkeymap='make meishi2:default:avrdude'
cd=cdnvm
cpd3.='cp ~/package/dist/d3.js .'
deepl='open https://www.deepl.com/ja/translator'
ekichika='open https://kakeru-miyazaki.github.io/kakekakemiya/ekichika/index.html'
figma='open /Applications/Figma.app/'
firefox='open /Applications/Firefox.app'
g++='g++-11 -Wall'
gi='gh issue'
github='open https://github.com/'
gitlog='git log --oneline --graph'
gitpulloriginmain='git pull origin main'
gitpulloriginmaster='git pull origin master'
gitpushoriginmain='git push origin main'
gitpushoriginmaster='git push origin master'
gmail='open https://mail.google.com/mail/u/0/#inbox'
goodnotes='open /Applications/GoodNotes.app'
itclms='open https://itc-lms.ecc.u-tokyo.ac.jp/login'
jl=julia
julia=/Applications/Julia-1.7.app/Contents/Resources/julia/bin/julia
l=ls
la='ls -a'
line='open /Applications/Line.app'
ll='ls -la'
notion='open /Applications/Notion.app'
pldeep='perl -pe '\''s/\n/ /'\'
powerpoint='open /Applications/Microsoft\ PowerPoint.app'
pptx='open /Applications/Microsoft\ PowerPoint.app'
py=python3
qiita='open https://qiita.com'
run-help=man
slack='open /Applications/Slack.app'
tl='open https://twitter.com/home\?lang=ja'
ubuntu='docker exec -it ubuntu /bin/bash'
utas='open https://utas.adm.u-tokyo.ac.jp/campusweb/campusportal.do'
vi=nvim
which-command=whence
yahoo='open https://yahoo.co.jp'
```

> open は ubuntu や　 wsl では使えなくて，xdg-open 　や explorer.exe を使うことになる気がするのですが，そのあたりの動作検証はしてないので悪しからず．

:::note info
**ターミナルからのアプリ起動**
難易度：alias 足すだけなので簡単
おすすめ度：非常に便利．必須ではないが使おう！
:::

## もうちょっと応用したいよね

たとえば，何かを検索したいときに，Chrome を開いて，検索するの？ってなりますよね．ここはさっきの open コマンドのノリを応用すればもっとうまくできます．

たとえば， 僕のターミナルだと，Google にて， qiita アドベントカレンダー と検索したい際は，

`$ ch qiita アドベントカレンダー`

とターミナルで入力すれば，

https://www.google.com/search?q=qiita+%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC&oq=qiita+&aqs=chrome.1.69i59j0i512j69i60j69i65j69i60j69i65l2j69i60.2906j0j7&sourceid=chrome&ie=UTF-8

のような画面が出てきます．

このめちゃくちゃ便利な機能は非常にシンプルな実装で実現できます．

あくまでも検索クエリは get リクエストのパラメータにすぎないので，

```shell
function ch(){
    url="https://www.google.com/search?q="
    for query in "${@}" ;
    do
        url=$url${query}+
    done
    open $url
}
```

を ~/.zshrc に加えるだけで OK です．
これのように適切な URL oepn するだけなんですね！

僕は Google 検索と　 Google Scholar での検索を分けたいので，

```shell
function gs(){
    url="https://scholar.google.co.jp/scholar?hl=ja&q="
    for query in "${@}" ;
    do
        url=$url${query}+
    done
    open $url
}
```

のようなものも登録して，Google Scholar での検索もすぐできるようにしています！便利！

:::note info
**ターミナルからの検索**
難易度： 関数なので alias よりちょっとむずいけど，コピペで動くので簡単かも
おすすめ度：非常に便利！普通に楽よね
:::

# 【その 2】 アプリ編

【その 1】 ターミナル編 にて，キーボードのみでアプリを起動することができるようになったと思います．

ここからは，アプリ内でキーボードを使って生活していく方法を書いていきます．

## ブラウザ操作

先ほどうまく開いた Chrome ですが，開いた後キーボードを使わなければならない...となるとあんまり嬉しくないですよね...

そんなあなたにおすすめなのが vimium という Chrome 拡張です．（Firefox にもあります．）

https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb

この拡張機能は，ブラウザも vim ライクに操作したいよねというモチベーションで作られたもので，控えめに言って最高です．こいつがいないと生きていけない．

ただ，デフォルトの設定がよくわからない感じになっているので，以下の記事あたりを見てうまく設定すると，とても直感的にブラウザをキーボードで操作できるようになります．

https://qiita.com/satoshi03/items/9fdfcd0e46e095ec68c1

具体的には，i を押すとページ内のリンクにハッシュ値が生成され，それを入力するとそこに飛べてしまうという神拡張になっております．

当然．ページの上下は j,k で可能で，戻る，進むは h,l でいけます．最高ですね.

ただ，完全にキーボードで Chrome を操作するには， Cmd + L や Cmd + T, Cmd + Shift + T, Cmd + R あたりが使えないとしんどいのよなーと思っていたら，
@tamu_autumn さんがアドカレでたまたま該当記事を書いてくれました！詳しくはこっちを見よう！

https://qiita.com/tamu_autumn/items/3dc075549613ec123d0d

僕がよく使うのは Cmd + L からの　 Shift + Enter とかですかね．この辺りは覚えないといけませんが，とりあえず vimium はいれましょう．

:::note info
**vimium の導入**
難易度： Chrome Extension なので簡単だけど，ちょっと設定がいる．
おすすめ度：非常に便利！逆にこれ使わずにどうやってブラウジングするのか
:::

## エディタ

次はエディタです．ここからはより宗教上の話に近づいてくるのであれですが，あくまでも僕の場合はという体で話を進めさせていただきます．

僕は，小編集には vim を使いますが，基本的にはエディタとして，VSCode + vscode-neovim を使っています．

vscode-neovim は 文字通り vscode で neovim 使おうぜという拡張機能なのですが，VSCode 拡張の vim とは違い，VSCode を vim ライクにしているのではなく，バックグラウンドで neovim を走らせているのでもっさりしていません！軽量です！

このセクションについては，VSCode のショートカットは使えるものが多すぎて語れないのですが，頻繁に利用しているのはあまり普通じゃないかもというところをピックアップして書きます．

そもそも僕は vim において，日本語を書いてから，移動する際に，

1. 日本語を書く
1. 英数入力に切り替える（僕は jj 派なのでここで英数にしますが，3 と逆でもいいです）
1. normal mode に戻る
1. 移動する
1. insert mode に移る
1. 日本語入力に切り替える
1. 日本語を入力する

というのがだるすぎるので，Ctrl + h,j,k,l で移動できるようにしています．

```vim
nnoremap <C-h> <Left>
vnoremap <C-h> <Left>
inoremap <C-h> <Left>
nnoremap <C-j> <Down>
vnoremap <C-j> <Down>
inoremap <C-j> <Down>
nnoremap <C-l> <Right>
vnoremap <C-l> <Right>
inoremap <C-l> <Right>
nnoremap <C-k> <Up>
vnoremap <C-k> <Up>
inoremap <C-k> <Up>
```

こうすることで，

1. 日本語を書く
1. Ctrl + h,j,k,l で移動する
1. 日本語を入力する

でいじれるようになります．（矢印キー押せばいいやんと思った方は多分 vimmer ではありません．）

VSCode でも当然同じノリを可能にしているので，非常に楽です．設定しましょう．

また，VSCode で，**ファイルを開きすぎてよくわからなくなったことはありませんか？**
その際は，Cmd+K を押した後，W を押すと，全て閉じることができます．

ただ，僕は今フォーカスして編集しているファイルについては，Cmd + K を押したあと，Shift + Enter を押すと，ピンを設定できるので，ピンを外さない限り close されてしまうことはないようにできます．

以上を組み合わせると，編集したい大事なファイルにだけ pin を打っておけば，適当にファイルを開いて，いらなくなったら全部閉じ（ピン止めアイテムだけ残る）というのができるようになります．便利ですね．

あと，ファイルを開くときは Cmd + P で開きましょうね！ fzf ほどではないですが，かなり fuzzy に　 search してくれるので素敵です．

:::note info
**エディタ周りの設定**
難易度：そんなに難しくはない？
おすすめ度：好み！！自分の宗教に従おう！
:::

# 【その 3】 ウィンドウ操作

作業中って，一つの画面を一つのアプリがフルスクリーンで占領するより，左右で分割したいときって多いですよね．

たとえば，Chrome を左に開きながら 右側に VSCode を開いたり，はたまた Slack だったりと色々あると思います．

Windows 等であれば， Win + ←↓↑→ で好きな位置に持って来れるのですが，Mac には実はこれに該当するショートカットが（多分）ありません．

そこで，Mac でも同じようなノリを可能にしたアプリが Shiftlt です．

https://github.com/fikovnik/ShiftIt

このアプリは，無料かつ無駄な機能がなくてよくできたアプリなのですが，多分メンテが止まっています．（ここには結構おもろい話があるのですが，ここでは割愛します．）

なので大体アプリがあるといいなあと思いながら，惰性で利用しています．

> ここで BetterTouchTool を勧めてくる方が一定数いますが，丁重にお断りいたします．他宗教なので．

:::note info
**Shftlt の導入**
難易度：簡単
おすすめ度：うまく Window を配置できる方，フルスクリーン派の方はいらないかも
:::


## おわりに


もっと色々書きたいことがあるのですが，残念ながら私の担当日が来てしまいましたので，内容が薄いですが記事を上げさせていただきます！！

（気が向くか要望があれば追記をしようと思います）


最後に私が実際に操作している動画を貼り付けて終わろうと思います．（いやgifにしたら画質荒すぎ．流石に差し替えるかもしれません．）

![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1322113/155f91e6-de07-0b56-91e0-9fc7de6302ab.gif)

一応何をやっているかを書くと，

1. VSCodeでアドカレの下書きを開く
1. Advent の綴りが Advant に間違っているようなので直さなきゃ！
1. 「アドベント 綴り」でGoogle検索する
1. 記事内のAdvantをAdventに一気に置き換える
1. qiita を開く
1. アドカレの記事を開く
1. ローカルの下書きを貼り付ける

という操作をしています！この間一応全くマウスを使っていません笑

どうですか？複雑な操作でもこんなに速く正確にできるなら，キーボード暮らしもいいように思えてきませんか？

ちょっと今回の記事は内容が薄いのであれですが，一人でも面白いと思ってくださる方がいたら光栄です．

さて，いよいよ明日はクリスマスイブ！！@yuka-uswk による「映画好きがおすすめする聖なる夜に観るべき映画」が投稿される予定です！久しぶりに映画観たくなってきました．

それでは皆様良いクリスマスを！最後まで読んでいただきありがとうございました．