Skip to content

Latest commit

 

History

History
192 lines (148 loc) · 10.3 KB

File metadata and controls

192 lines (148 loc) · 10.3 KB

MacVimSwitch

このプロジェクトのコードは macism の部分を除き、すべて AI が生成しています。作者本人は Swift が書けません。

中文 | English | 日本語 | 한국어

MacVimSwitch は Vim ユーザーや中国語・日本語・韓国語などの入力ソースを頻繁に切り替えるユーザーのために設計された macOS 向け入力ソース自動切り替えツールです。Esc キーでノーマルモードに戻ったときに入力ソースが依然として CJK のまま残ってしまう気まずさを防ぎます。

特長

  • 一度インストールするだけで、複数の Vim 対応アプリにおける中英切り替え問題をまとめて解決できます。設定がとても簡単なのが他のソリューションとの大きな差です。
  • Esc キーを押すと自動的に ABC 英語入力ソースへ切り替えます。対象のアプリを複数指定することもできます(例:VSCode、Terminal、Obsidian、Cursor、Xcode)。
  • Shift キーで ABC 英語入力ソースと中国語・日本語・韓国語・ベトナム語などの入力ソースを切り替えます。
    • 任意の CJKV 入力ソースに対応しています(例:搜狗、訊飛、WeChat、Google 日本語入力、韓国語の 2-Set など)。
    • 事前に入力ソース側の「Shift で中英を切り替える」などの設定を無効にしておくと衝突を避けられます。
  • Shift キーを使いたくない場合は、macOS 標準の機能として CapsLock の短押しで入力ソース切り替え、長押しで大文字固定ができます。
  • 推奨:アプリごとに既定の入力ソースを設定できる inputsource.pro のようなツールと併用するとさらに快適です。たとえばブラウザではデフォルトを中国語、Vim では英語に設定できます。
  • 紹介動画:https://www.bilibili.com/video/BV1DRwTeKEcx/
Image

既知の問題

1. 挿入モードで元の入力ソースに戻らない

ノーマルモードから挿入モードに戻ると、以前の入力ソースに自動復帰できず、デフォルトで英語になります。issue を参照してください。

筆者の運用例としては、Shift を一度押して中国語などに戻しています。慣れてしまえば負担にはなりませんし、コードを書くときは挿入モードでも英語のままというケースが多いものです。

2. アップデート後にアクセシビリティ権限を再付与する必要がある

問題: 新しいバージョンをダウンロードしたあと、アクセシビリティ権限を再度付与する必要があります。

原因: アプリは Apple Developer 証明書ではなく自己署名を使用しているため、ビルドごとに署名 ID が異なります。macOS は別アプリとして認識するので再認可が必要です。

解決方法:

  1. システム設定 → プライバシーとセキュリティ → アクセシビリティ を開く
  2. 古い MacVimSwitch の項目を削除する(- ボタンをクリック)
  3. 新しいバージョンの MacVimSwitch を追加する(+ ボタンをクリックしアプリを選択)
  4. トグルが有効になっていることを確認する
  5. MacVimSwitch を再起動する

今後の予定: もし誰かが Apple Developer アカウント(年間 99 ドル)を支援してくれれば、正式な証明書で署名できるのでアップデート時の再認可が不要になります 😄

インストール方法

手動インストール

GitHub Releases からダウンロードして手動でインストールします。

Homebrew

brew tap Jackiexiao/tap
brew install --cask macvimswitch

使い方

  1. 初回起動:

    • アプリを解凍して MacVimSwitch を開く
    • 表示に従ってアクセシビリティ権限を付与する
    • システム設定 → セキュリティとプライバシー → プライバシー → アクセシビリティ を開く
    • MacVimSwitch を追加して有効にする
    • アプリを再起動する(メニューバーにアイコンが表示されます)
  2. 初期設定のポイント:

    • 入力ソース側の「Shift で英語と中国語を切り替える」等のオプションを無効にして衝突を避ける
    • ステータスメニューから好みの CJK 入力ソースを選択する
    • macOS の「前の入力ソースを選択」キーボードショートカットを有効にする(初期状態では有効)。「設定 → キーボード → ショートカット → 入力ソース」にあります。
    • ショートカットの内容は任意で構いません。macism がその内容を読み取り、必要に応じてエミュレーションでトリガーします。とにかくショートカットが有効化されていることが重要です。
  3. メニューバー項目:

    • メニューバーのキーボードアイコンをクリックすると以下が可能です。
      • 使い方の確認
      • 好みの CJK 入力ソースを選択
      • Shift キー切り替え機能のオン/オフ
      • Esc キーによる切り替えを有効にするアプリを選択(複数選択可。デフォルトでは Terminal、VSCode、MacVim、Windsurf、Obsidian、Warp で有効)
      • ログイン時に自動起動するかどうかの切り替え
      • アプリの終了

MacVimSwitch の利点

MacVimSwitch は他の入力ソース切り替えソリューションと比較して以下の強みがあります。

  1. 高い互換性

    • VSCode、Terminal、Obsidian、Cursor、Windsurf、Warp など、あらゆるアプリで動作します。
    • アプリごとに個別の設定は不要です。
    • エディタごとに追加のプラグインを入れる必要もありません。
  2. かんたんな設定

    • 対象アプリを限定することができます。
    • 好みの CJK 入力ソース(搜狗、訊飛、WeChat、Google 日本語入力など)を簡単に指定できます。
  3. その他のソリューションとの比較

  • この記事 では多くの Vim 用 CJK 入力切り替えツールがまとめられていますが、多くは追加設定が必要で、すべてのアプリで使えないのが課題です。
  • smartim は Mac の Vim(プラグイン対応版)で動作しますが、複数のアプリでは使えません。
  • imselect はコマンドラインで入力ソースを切り替えます。複数アプリで使うにはそれぞれに追加設定が必要で、遅延が大きい場合があります。
  • vim-xkbswitch は Vim プラグインで、複数アプリで使うにはやはり追加設定が必要です。
  • Karabiner:ショートカットをカスタマイズできますが、遅延や設定の難しさがあります。

開発者向けガイド

リリース手順

  1. GitHub リポジトリを作成
# 1. github.com/jackiexiao/macvimswitch に新しいリポジトリを作成
# 2. リポジトリをクローンして初期化
git clone https://github.com/jackiexiao/macvimswitch.git
cd macvimswitch
  1. リリースファイルを準備
# 必要なファイルを追加
git add macvimswitch.swift README.md README_CN.md LICENSE
git commit -m "Initial commit"
git push origin main
  1. リリースを作成
# バージョンにタグを付ける
git tag -a v1.0.0
git push origin v1.0.0

GitHub Actions ワークフローが自動で以下を実行します:

  • アプリをビルド
  • アプリケーションパッケージ(.app)とソースコード(.tar.gz)を含むリリースを作成
  • Homebrew Formula 更新用の SHA256 を計算して表示
  1. Homebrew Tap を作成
# 1. (未作成の場合)github.com/jackiexiao/homebrew-tap を作成
# 2. リポジトリをクローン
git clone https://github.com/jackiexiao/homebrew-tap.git
cd homebrew-tap

# 3. GitHub Release で公開された SHA256 を使用して macvimswitch.rb を更新
# 4. Formula をコミットしてプッシュ
git add macvimswitch.rb
git commit -m "MacVimSwitch formula を v1.0.0 に更新"
git push origin main

ローカル開発

ローカルでビルドとテストを行うには:

./build.sh
pkill -f MacVimSwitch
# 手動テスト方法1:
./dist/MacVimSwitch.app/Contents/MacOS/MacVimSwitch

# 手動テスト方法2:
# dist/MacVimSwitch.app をダブルクリックで開く場合は以下を実行
# 1回目の起動で以前の権限を削除
open dist/MacVimSwitch.app
# 2回目の起動で権限を付与
open dist/MacVimSwitch.app
# 3回目の起動で通常通り動作
open dist/MacVimSwitch.app

リリース用ビルド:

./build.sh --create-dmg
tccutil reset All com.jackiexiao.macvimswitch # 権限をリセット
# open MacVimSwitch.dmg

git push --tag v1.0.0 を実行すると GitHub Actions ワークフローが自動的にビルドを行います。

macOS で GitHub Actions ワークフローをローカルでデバッグしたい場合は次を利用できます:

brew install act
act -l
act push -e .github/workflows/push.event.json --container-architecture linux/amd64

コントリビュート

  1. このリポジトリを Fork する
  2. フィーチャーブランチを作成する (git checkout -b feature/amazing-feature)
  3. 変更をコミットする (git commit -m '素晴らしい機能を追加')
  4. ブランチをプッシュする (git push origin feature/amazing-feature)
  5. Pull Request を作成する

ライセンス

本プロジェクトは MIT ライセンスで提供されています。詳しくは LICENSE をご覧ください。

謝辞

  • 入力ソース切り替えソリューションを提供してくれた macism