Alacrittyの設定について

Alacrittyの設定はコンフィグファイルを編集する以外にないのです。
設定ファイルの保存場所は次の通りです。
$XDG_CONFIG_HOME/alacritty/alacritty.yml
$XDG_CONFIG_HOME/alacritty.yml
$HOME/.config/alacritty/alacritty.yml
$HOME/.alacritty.yml
上から順に探すみたいで、なかった場合には
alacritty.ymlを上記のどこかに勝手に作ってくれます。

Karabinerの設定ファイルのために$HOME/.configがあったので、.configフォルダの中に作ってくれてました。
デフォルトで起動するとこちら

alacrittyを公開しているとこにカラースキームの例がのってて、好きなカラーをコピペしてみる。
さらに、bashと表示されてるけど、なにも使えない状態なので、同じくコンフィグファイルのshellのところを編集しコメントアウトを削除し、同じくフォントを全部GitHub - miiton/Cica: プログラミング用日本語等幅フォント Cica(シカ)にしたらこの通り

bashでログインするときやカラースキームが全然反映されないときは余計なスペースが文頭に入ってないか注意

shell:
  program: /bin/bash
  args:
    - --login

が正解なんだけど

 shell:
   program: /bin/bash
   args:
     - --login

になったら駄目だった。何が違うかと言うと最初に空白が全部一文字づつ入ってる。

ようやく環境が揃いはじめてきた。
Alacrittyはスクロールバーが存在しない。これはtmuxの使用を前提としているからとのこと。
次はtmuxのインスールと設定をやるかー。

なんか新しいことやってみたくないすか?(ターミナルソフトのAlacrittyの導入)

と、再インストールするたびに思う訳で、今回は常に使っているiTerm2から別のものを使ってみることに。
ぐぐってみると幾つかでてくるけど、大半がターミナル.appかiTermばかり。
その中で高速になるAlacrittyの話題が。
日本語関係で問題があるようなのですが、ちょいと試してみたいこともあるので、導入してみることに。

Alacrittyのインストール方針

Alacrittyをインストールするための壁がいくつか

  1. コンパイル可能なバージョンのrustをインストール
  2. コマンドラインからじゃなくて、アプリとして登録
  3. 簡単にしたいからbrewですませたい!

いくつかぐぐって失敗したパターン

アプリまで登録できるbrewソース作ったよってパターン

GitHub - mscharley/homebrew-homebrew

$ brew tap mscharley/homebrew-homebrew
$ brew install --HEAD mscharley/homebrew/alacritty

で進むんですが、rustのコンパイルで失敗

brewでいけたけど、アプリで登録できない

brewで配布しているrustが駄目みたいで(2018/01/16現在)rustはコマンドからインストール
rustup.rs - The Rust toolchain installer←このページに書いてるようにrustのインストール
alacrittyインストール 備忘録 - replicityの日記参考にしたサイト

$ curl https://sh.rustup.rs -sSf | sh
$ source ~/.cargo/env
$brew install --HEAD cema-sp/tap/alacritty

これだと問題なくできるけど、一度ターミナルからalacrittyコマンドで起動しないといけない。

しょうがないから、ソースもってきて全部コマンドでやることにした。

$ curl https://sh.rustup.rs -sSf | sh
$ source ~/.cargo/env
$ git clone https://github.com/jwilm/alacritty.git
$ cd alacritty/
$ cargo build --release
$ make app

これでAlacritty.appが作成された。
作業したのがhome/data/alacrittyって場所なので./alacritty/target/release/osx/Alacritty.app
が最終的にできあがり。これをコピーすればいい。
起動は確かに速かった。
次はコンフィグについて。

Karabiner-Elements

そろそろ定期的にクリーンインストールをしたい病がでてきたので、OSをインストールしなおすことに。
使っているソフトの関係で、まだsierraなんですけどね。

今までkeyhacにずっとお世話になっていたのですが、Karabiner-Elementsが大分バージョンアップしていたので、戻すことにしました。

インストール

brew caskを使って

brew cask install Karabiner-Elements

以上で終了。

設定

いくつかの設定ファイルも公開されていますが……

  1. SandSで入力を行う。
  2. 「かな」「英数」をCTRLのようなモディファイヤキーとして使用する。

の2点を実現したいので、自分でjsonファイルを作成します。
作ったのはこちら。

"title": "SandS"
"rules": [
{
	"manipulators": [
	{
		"description": "Change spacebar to left_shift. (Post spacebar if pressed alone)",
			"from": {
				"key_code": "spacebar",
				"modifiers": {
					"optional": [
						"any"
					]
				}
			},
			"to": [
			{
				"key_code": "left_shift"
			}
			],
			"to_if_alone": [
			{
				"key_code": "spacebar"
			}
			],
			"type": "basic"
	}
	]
}
]

でもって、「英数」キーを押しながらhjklで上下左右にカーソルを動かすvimライクな設定はこちら

{
	"title": "Eisu to Modifier",
	"rules": [
		{
			"description": "Change EISU to Modifier",
			"manipulators": [
				{
					"type": "basic",
					"from": { 
						"key_code": "h",
						"modifiers":{
							"optional": [
								"any"
							]
						}
					},
					"to": [
						{ 
							"key_code": "left_arrow"
						}
					],
					"conditions": [
						{ 
							"type": "variable_if", 
							"name": "eisuu", 
							"value": 1
						}
					]
				},
				{
					"type": "basic",
					"from": { 
						"key_code": "j",
						"modifiers":{
							"optional": [
								"any"
							]
						}
					},
					"to": [
						{ 
							"key_code": "down_arrow"
						}
					],
					"conditions": [
						{ 
							"type": "variable_if", 
							"name": "eisuu", 
							"value": 1
						}
					]
				},
				{
					"type": "basic",
					"from": { 
						"key_code": "k",
						"modifiers":{
							"optional": [
								"any"
							]
						}
					},
					"to": [
						{ 
							"key_code": "up_arrow"
						}
					],
					"conditions": [
						{ 
							"type": "variable_if", 
							"name": "eisuu", 
							"value": 1
						}
					]
				},
				{
					"type": "basic",
					"from": { 
						"key_code": "l",
						"modifiers":{
							"optional": [
								"any"
							]
						}
					},
					"to": [
						{ 
							"key_code": "light_arrow"
						}
					],
					"conditions": [
						{ 
							"type": "variable_if", 
							"name": "eisuu", 
							"value": 1
						}
					]
				},
				{
					"type": "basic",
					"from": {
						"key_code": "japanese_eisuu"
					},
					"to": [
						{
							"set_variable": {
								"name": "eisuu",
								"value": 1
							}
						}
					],
					"to_after_key_up": [
						{
							"set_variable": {
								"name": "eisuu",
								"value": 0
							}
						}
					]
				}
			]
		}
	]
}

これを
/Users/[ユーザー名]/.config/karabiner/assets/complex_modifications
に保存しておけば、設定ファイルのComplex_modificationsに表示されるから、適用すればOK
大元のkarabiner.jsonを直接編集しなくていいから注意。
それとjsonファイルは文法間違いがあると表示されないから注意。
最初の行のtitleの最後に「,」を忘れただけで、表示されないから間違いを見付けるのが大変だった。

macのiTerm2とAquaSKKを使う場合

まあ、解決策はいくつも出てる訳ですが、自分用として。

問題点

  1. iTermというか、ターミナルソフトではCTRL+Jで改行コードと同じようになってる
  2. でもって、日本語入力にSKKを使うとASCIIからかなに切り替え時にCTRL+Jを入力が必要
  3. その結果、日本語に切り替えようとすると、改行コードが送られてしまうという困った状態に。

これまでの解決策

いくらAquaSKK使いがマイナーといっても、この組み合わせを使う人はたくさんいる訳で
基本はここ http://mzp.hatenablog.com/entry/2015/03/15/213219
流れは次の通り。

  1. まずはCTRL+J以外でもひらがなに切り替えられるようにする。
  2. 次にCTRL+Jを入力したら違うキーコードを送るようにする。

個人的な問題点

マイナーなものを選ぶ人って、その中でもさらにマイナーなことやったりするから……

  1. 入力はAquaSKKのみに専念して、英語入力すら設定しないようにしてる。つまり「かな」キーは日本語入力への変更なんぞには使ってない。ひらがな入力切り替えはCTRL+Jしか使ってなかった。参考は http://kiririmode.hatenablog.jp/entry/20150114/1421161200
  2. SierraだとKarabinerがまだ使えないよねってこと。

個人的な解決策

対応はkeyhacを使うことにして、keyhacとaquaskkの両方に設定を加えました。

(修正前)
SKK_JMODE		ctrl::j
(修正後)
SKK_JMODE		ctrl::j||keycode::0x68

ちなみに最初はこれをマネしたところ、切り替えたときに「0」が一緒に入力されたのでそれを回避したかった。

  • 次はkeyhac。keyhacのconfig.pyにこんな風に加えた。
    keymap_terminal = keymap.defineWindowKeymap( app_name="com.googlecode.iterm2" ) # iterm2だけのローカル設定
    keymap_terminal["Ctrl-J"] = "104" # CTRL-Jを入力するとかなを送信。104はかなキーの仮想キーコード

こうすることで、iterm上でCTRL-Jを入力すると、かなキーが送られるのでASCIIからかなモードに変換されるだけ。余分なキーも送信されない。

USBでvimとpython持ち運び

これまでは、macwindowsでも同じ環境ができるようにとgitでコンフィグを管理して、macとwinで場合分けしてvimrcを作成していたけど、windowsをメインで使う職場でネット環境が思いっ切り制限された……

セキュリティ上しょーがないとはいえ、USBメモリがおめこぼしされているだけでも良しとしないといけないかな。

そこで環境をがっつり変えることにした。

前提

  • 職場でgithubを使えないと思え
  • Admin権限は無し
  • USBは使える
  • USBメモリで環境を持ち運ぶ
  • ちなみにWindows7の32bit環境
  • プログラムは運ぶけど、データは運ばない。

やったこと

  • vimはKaoriya版でzipで取得

https://www.kaoriya.net/blog/2016/04/09/

  • PythonはAnacondaの簡易版minikondaを使用

https://conda.io/miniconda.html

どちらも32bit版を使用

一つフォルダを作って、下記のようにファイルを配置した

vims(一番上のフォルダ。名前はなんでもいい)
|
|-vim
|-miniconda
|-home
| |-start_vim.bat
| |-vimfiles
| |-vimtemp

今回のメインであるhomeに配置したバッチファイル

内容は下記の通り

@echo off

REM %~d0で実行ファイルの存在するドライブに移動
%~d0
REM %~dp0で実行ファイルの存在するフォルダに移動
cd %~dp0

REM 環境変数の設定
set HOME=%~dp0
pushd %~dp0..
set PYTHONHOME=%CD%\miniconda
set PYTHONPATH=%PYTHONHOME%\libs
set LOCALBIN=%CD%\bin
cd %CD%\vim
set VIM=%CD%
path=%VIM%;%PYTHONHOME%;%PYTHONHOME%\Scripts;%PYTHONPATH%;%LOCALBIN%;%PATH%

start gvim.exe

環境変数でHOMEを設定することで、vimだけがUSBメモリに作成したHOMEフォルダを使用する。
(他のWindowsのソフトは通常のユーザー名のフォルダを使用)
PYTHONHOMEとPYTHONPATHはdllとlibファイルの場所を指定するために必要。
system32にdllがないので、PATHも追加しておく。
この状態でvimを起動して

echo has('python3')

1を返す

py3 import sys; print(sys.version)

でminicondaの3.5.2と応答があった

PYTHONPATHをPYTHON_PATHとしたりするとpy3の実行時にvimが落ちて動かないので注意。
単純な違いだけに、原因を見つけるのに時間がかかった。

vimのパッケージ管理はvim8のものにした。
予めダウンロードしといてフォルダにコピーすればいい。
使いたいのは
\home\vimfiles\pack\mypack\start
プラグインをフォルダごと放り込んでおいた。
mypackは好きな名前でOK。
遅延実行はstartをoptにすればいい。
大量に入れてないので、これでいまのところは問題ない。
このやり方でいっとき運用してみる。

macOS Sierra でのキー入れ替え

長年使ってくると、効率良く使いたいって欲望が出てくるのは普通のこと。
そのために、キーボードを入れ替えるのは良くある。
さらに、配置やCTRL、コマンドキーに変わるものを導入するのも自然な流れ。

という訳で、これまではKarabinerを使ってたんですが、Sierraでは使えないとうまさかの事態!
Karabiner-Element ってのが代わりに出てますが、開発中でキーの入れ替えしかできない。
「⌘英かな」という別のソフトも出てますが、これも入れ替えに対応していて、ユーザー定義のモディファイヤーはまだ。

探してみたら、まさかのkeyhacが対応しているとは!
元はWindowsで有名なコマンドラインランチャー「CraftLaunch」(Alfredみたいなもの)を開発した人で、その人が作ったキー入れ替えソフトが「keyhac」。
管理者権限も不要で使えたので、限定されたときは使ってたんですが、ドライバをインストールするタイプにくらべると遅かったので、あまり使ってませんでした。
それが、mac版いれてみたら、かなり快適!

入力にAquaSKK使ってる人に多いSandS(Space and Shift)も簡単に設定できました。

インストール

ダウンロードやマニュアルは↓から。インストールまでは簡単じゃないかと。
https://sites.google.com/site/craftware/keyhac-ja

インストール後にまずやること。

設定には親切に色々な機能が盛り込まれてます。
右シフトが削除になってたり。
自分が理解できるために、がっつり削除しましょう。

import sys
import os
import datetime
import subprocess

from keyhac import *

これで、真っ新。

SandSにする。

以下を追記するだけ。

def configure(keymap):
    keymap_global = keymap.defineWindowKeymap()
    keymap.replaceKey("Space", "RShift")
    keymap_global["Ctrl-RShift"] = "Ctrl-Space"
    keymap_global["O-RShift"] = "Space"

これは以下の設定をしています。
3行目:スペースキーと右シフトキーを入れ替える
4行目:CTRLキーと右シフトキーを押す(上の行で入れ替えてるので、押すキーはCTRLキーとスペースキー)と、CTRL+Spaceを送る。これはAlfredでのホットキーをCTRL+Spaceにしているので、その対応。
5行目:右シフトキーを押したときに、他に何もキーを押さなかったらSpaceを押した状態にする。これが「ワンショットモディファイヤー」と呼ばれる機能になります。RShiftの前にある「O-」がこいつはワンショットモディフィヤーですよということ。

この内容にすると右シフトキー単独で入力した場合もSpaceが押された状態になるのでそれだけは注意を。

でもって、保存したら、keyhacのアイコンから「設定のリロード」を選べばOK
これでSandSが使えるようになりました。しかも反応速度はまったく問題がない!

次はSKK使いには不要な「英数」と「かな」の活用について

アプリの設定

  • Alfredの設定
    • CTRL+SPACEが日本語入力の入力ソースの変更に割り当てられているため、環境設定→キーボードからショートカットの中にある「入力ソース」のショートカットを解除する。
    • 設定にてHotkeyをCTRL-SPACEに変更
    • Appearanceの左下にあるOptionsからHide hat on Alfred WindowとHide menu bar iconにチェック

ログインして、1Passwordのファイルを取得

  • 1Passwordの設定
    • ファイルはDropboxを指定
    • 1Passwordのライセンスファイルは1Passwordに添付。うまくいかなかったら、Dropboxにある。
    • Alfred3 PowerPackのライセンスも1Passwordに入れてたので有効化
  • BatteryMonitor
    • Preferenceから Login時起動(Open at Login)
    • アイコンは隠す(Hide Icon)
    • 残り時間のみ表示(Show Battery Time)
    • システム環境設定の省エネルギーからメニューバーにバッテリーの状況を表示のチェックを外す

iCloudの設定以外に特になし