rcmdnk's blog
Last update

Trucos para el terminal de Mac

MacではHyperSwitch というアプリを使ってWindowsのAlt-Tab 的に各アプリのウィンドウも全て分けて選択交換出来る様にしているのですが、 突如iTerm2の上でこれが効かなくなったので仕方なくTerminalに乗り換えました。

iTerm2での問題

問題が起きたのは2週間位前だったと思います(もう結構前ですが)。

iTerm2上でHyperSwitch での切替に割り当てていた-Tabが効かなくなりました。

他のキーに割り当ててみてもやっぱりダメで、HyperSwitchへキー入力が届く前に iTerm2の方が受け取ってしまっている感じです。

これと同じ様な問題で、 KeyCastr でキーを表示させながら入力していく、ということもできなくなりました。

HyperSwitchは常に使っているしKeyCastrも以前

キー入力を表示しながらスクリーンショットGifを撮る

を書いた時にはiTerm2で試していたので使えていたのですが、 何故か突然ダメに。

iTerm2自体は7月に2.0が出た後更新は無いし、 問題が出たアプリも最近更新されてません。 (KeyCastrなんかは数年前から更新されてないわけで。。。)

なのでOS Xの中での何かの更新が関係有るのだとは思いますが、

Apple security updates

丁度17日にOS Xのセキュリティのアップデートが行われてるのでこれかな。。。? (昨日bashのアップデートがあって丁度見たらあったので)

もしかするとなにか他のアプリとの干渉なのかもしれません。 一応KarabinerBetterTouchTool 等、干渉しそうなアプリは止めて試してみましたがやはりダメでした。

逆に、KarabinerBetterTouchTool に関してはiTerm2上でもキーの上書きが有効でしたが。

Macのターミナル.appを使う

仕方ないので元から入ってるターミナル.app、を使ってみることにします。

もともとiTerm2を使っていた最大の理由は

Macでの文字化け対策用のGNU screenのインストール

ここにある文字化けの対処です。 iTerm2には色々な機能がついてはいますが、ウィンドウ分割やら 色々な便利機能は基本的にGNU screenを使っていれば全く必要がないもので、 iTerm2独自の機能という意味では全く使ってないので 文字化けさえなんとかなれば良いわけです。

ということで、久しぶりにターミナルを開いてGNU screenを立ち上げて 見たところ、濁点なんかがある日本語もバッチリ綺麗に表示されました!grinning

ターミナルのアップデートなのかscreenのアップデートなのか分かりませんが、 取り敢えず、最新版のターミナルで、 最新版のscreen+パッチで使えば日本語も殆ど問題なく使えます。 日本語パッチ版は下のFormulaを使ってHomebrewでも入れられます。

GNU screenのUTF8パッチ付きのHomebrew用Formula

ということでネックだった部分が治っていたのでターミナルに移ることに。

ターミナルの設定

環境設定設定で まず、プロファイルはProをデフォルトに。(黒バックに白文字のもの)

各設定は:

  • テキスト
    • フォント: Migu 1M Regular 14 pt.
    • テキスト:
      • テキストをアンチエイリアス処理: チェック
      • ボールドフォントを使用: チェックしない
      • 点滅テキスト使用を許可: チェック
      • ANSIカラーを表示: チェック
      • ボールドテキストに明るい色を使用: チェック
    • カーソル:
      • ブロックを選んで、カーソル色を真っ白に。(デフォルトは灰色)
      • 点滅カーソル: チェック
  • ウィンドウ
    • タイトルで色々表示がウザイので全部チェック外してテキストも消す。
    • 背景カラーとエフェクトで、もともとバックグラウンドは真っ黒。不透明度が85%とかなので100%に。
  • シェル
    • シェルの終了時: ウィンドウを閉じる、に
    • ウィンドウを閉じる前の確認: しない、に
  • キーボード
  • 詳細
    • ターミナルの宣言方法: xterm-256color
    • DeleteキーでControl + Hを送信: チェックしない
      • この設定はKarabinerで-hDeleteにしている設定があり、 それを有効にしているとこの設定が必要(GNU screenで-hをウィンドウ移動に使いたいので)
      • iTerm2の同じ設定があって設定してましたが、Macの他の箇所でも通常は-hDelete(正確にはBackspaceとして扱われ、文字を消せないことは殆どないので取り敢えずKarabinerの設定も外してこの設定も外しておくことに。
        • -hDeleteとして認識させたいアプリがあったらまた考えることに。
    • Control+Vで非ASCII入力をエスケープ: チェックしない
    • 改行を行頭復帰(CR)としてペースト: チェック
    • VT100アプリケーションキーパッドモードを許可: チェックしない
    • 入力時に下端までスクロール: チェック
    • というか、これらはデフォルトでこの値。

ターミナル上でのコピペ

iTerm2ではCopy to clipboard on selectという設定項目があって、 これをチェックするとLinux的な、マウスで選択した瞬間にコピーする機能が使えます。

ターミナル.appにはこの設定が無いので直接この機能は使えません。

1つの方法はxtermを立ち上げてX上の物を使う、と言う方法。 (X上ではデフォルトでCopy to clipboard on selectな動きをします。) xterm等、Xの物の上ではHyperSwitchの機能がきちんと効きました。

ただ、毎回余計に立ち上げるのは結構面倒。 (最初からxtermを立ち上げるスクリプトみたいのを書いとけば良いのかもしれませんが)

次の方法としてSIMBLプラグインを使って直接ターミナル.appに 機能を追加してしまう方法。

Terminal.appで選択時にコピーするSIMBLプラグインを作りました - Hello, world! - s21g

genki/terminalcopyonselect

CopyOnSelectのLion対応 - satoko’s blog - s21g

興味driven: TerminalCopyOnSelectをビルドしても、Lionではエラーになる

これ結構便利そうで使ってみようかと思ったのですが、

osx - Copy-on-select, paste-on-middle-click on Mac OS X? - Super User

ここにあるみたいに BetterTouchTool でやる方が簡単にすぐ出来そうだったので今回はそれでやってみました。

設定はTrackPadsの項目のGlobal設定に

  • Three Finger Double-Tap: c

を新しく加えてただけです。

すでに

  • Three Finger Tap: Middle Click

の設定はあるので、これで

  • 三本指ダブルタップでコピー (どこでも)
  • 三本指タップでペースト (ターミナル/iTermでのみ)

になります。

ペーストの方をMiddle Clickにしてあるのは、 ターミナルやiTerm2上だとこれはペーストになって、 FifrefoxやChromeだとこれはリンクを新しいタブで開くという 機能になるので、それを使いたいからです。

ただ、これを試してた時にFirefoxでもどこでもペーストできたら良いな、と思って、

  • Three Finger Click: v

を追加しました。 これで、

  • 三本指クリックでペースト (どこでも)

も出来る様になります。

コピーするときはダブルタップする分、コレまでよりも一手間かかりますが、 余計な間違いコピーが減るので敢えてこうするほうが良いかな、と思ってTerminalCopyOnSelect の導入を見送っています。

ClipMenuというクリップボードの履歴管理 アプリを使っているので、ちょっとした操作で間違って選択してコピーされると 履歴に余計な物が入るのでよくありません。

また、選択してコピーしたな、と思った後に、トラックパッドをちょっと触って 選択範囲が変わってしまって気づかずペーストしてぜんぜん違うものだった、 的なこともたまにあるので、ダブルタップで明示的にするほうが良いかな、と。

ちょっと最初はなれずに選択しただけでコピーできてなくてイラッとすることもありましたが、 慣れれば大丈夫、なはず。 (WindowsやLinux環境との互換性もあるので、やっぱりダメならTerminalCopyOnSelectも考えよう、と)

ターミナル上(iTerm2でも)ではmulti_clipboardも使えるので、 その中のコマンドでscreen上でのクリップボードを直接OS Xに渡すことも出来るので それを多用する様にすれば基本的にはターミナル上でのマウスやトラックパッドを使った コピペは必要ないかな、と言う点も。

GNU screenでクリップボードの履歴を使えるようにする

日本語の表示の細かい問題

少しだけ気になる点として、日本語を記入している時、 記入中だけ表記が少しズレます。

screen_stray

上の図は画面分割はGNU screenで行っていて 左上の画面でVimを立ち上げています。 Vimの中の青い線は set colorcolumnの線です。(この時はテスト様に30くらいにしてあります。)

見て分かる通り、Vimの中でのこの一定の列にあるべき表記も、 GNU screenでの画面分割線以右の表記もずれています。

画面全体として全角入力中はずれてしまうようです。

ただし、入力を決定するとこれらは元に戻ります。

zenkaku_cursor

ですが、ちょっと気持ち悪い状態として、カーソルの大きさが変えられないみたいで、 全角の上でも半角カーソルになります。 この場合でも、1回右に動かすときちんと次の文字に行きますし、 実用上は問題ないのですが、ちょっと見た目が悪くて たまにどこの上に居るのか視認しにくい点もあります。

まあ、この辺りは許容範囲かな、と。

一方で、

ターミナル上での2バイト文字処理

で出ていた2バイト文字の問題ですが、 ターミナル.appにはiTerm2に在るような

  • Double-Width Characters: Treat ambiguous-width characters as double width

という設定項目は見当たりません。 恐らく単に出来ないだけだと思いますが、最初から設定がないので、 上に書いてあるような問題は起こりません。

また、上の中にあるような3点リーダーなんかも 綺麗に表示されます。 この辺に関してはむしろターミナル.appの方が優れているかもしれません。

追記: 2014/10/02

通常の日本語だけなら殆ど問題なかったですが、 特殊文字が入るような状況(バイナリファイルをVimで開いたり)になるとやはり横に分割してる時に おかしくなります。。。

追記ここまで

その他iTerm2とも共通の注意点など

Macのターミナル.appでのPROMPT_COMMAND

追記: 2015/03/17

Yosemiteになって暫くしたら治りました。

MacでiTerm2上でHyperSwitch等が使えない問題が治っていたのでターミナルからiTerm2へ出戻りした

追記ここまで

Sponsored Links
Sponsored Links

« Bashでループを回すのとgrepで検索する時間の比較 Macでウィルス対策ソフトSophosを入れてみた, Proxyを使ったりする際の注意点 »

}