Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Sublime Textの検索窓に日本語を入力する方法

Sublime Textの検索窓に日本語を入力するとEnterを押すなり文字が消えてしまうのですが、無理やり解決する方法を見つけました。ググってもこちらのバグレポートしか見つからなかったので報告です。

わたしの環境はMac OS XのSublime Text 3 (Build 3059)ですが、この解決方法はSublime Text 2 (Build 2220)にも対応しています。Windowsの場合は不明です。

ステップ1: Sublime Text 3の場合のみ: Default (OSX).sublime-keymapを編集可能にする

このステップはSublime Text 3の場合のみ必要です。Sublime Text 2の場合はステップ2に行って下さい。

PreferencesからKey Bindings - Defaultを開き、表示されたDefault (OSX).sublime-keymapの内容を全部コピーします。

⌘+Nで新しくファイルを開き、先ほどコピーした内容をペーストし、⌘+Sで保存します。

保存ダイアログが出たら、シフトキーを押しながら⌘+Gと入力し、ボックスに~/Library/Application Support/Sublime Text 3/Packages/と入力します。

このPackagesフォルダーの中に新しくDefaultフォルダーを作成します。

そのDefaultフォルダーの中にDefault (OSX).sublime-keymapとして保存します。

ステップ2: 該当箇所をコメントアウト

Sublime Text 2の場合は、PreferencesからKey Bindings - Defaultを開きます。

Sublime Text 3の場合は、さきほど保存したDefault (OSX).sublime-keymapを開きます。

そしてFind panel key bindingsと書かれている行を探します。

// Find panel key bindings
{ "keys": ["enter"], "command": "find_next", "context":
 [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
},

その下3行の始めに//と入力してコメントアウトします。

// Find panel key bindings
// { "keys": ["enter"], "command": "find_next", "context":
//  [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
// },

その下のReplace panel key bindingsIncremental find panel key bindingsの下3行それぞれも同様にコメントアウトします。

// Replace panel key bindings
// { "keys": ["enter"], "command": "find_next", "context":
//  [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
// },
// Incremental find panel key bindings
// { "keys": ["enter"], "command": "hide_panel", "context":
//  [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
// },

この状態でファイルを保存すると日本語で検索できるようになります。

この方法の欠点として、次の検索結果をEnterで表示することができなくなります。代わりに⌘+Gを使うようにしましょう。

注意事項: 複数ファイルを検索しようとすると失敗します

Shiftキーを押しながら⌘+Fを押すと現在開いているフォルダーやファイル内から文字列を検索するパネルが出るのですが、ここでは先ほどの解決方法が機能しません。

パネル名はfind_in_filesなのですが、Default (OSX).sublime-keymap内にはこのパネルを表示させるキーバインディングしかありません。find_in_filespanel_visibleのときのenterキーの挙動を適当なcommandに上書きしてみようと試みたものの、失敗に終わってしまいました。Sublime Text自体に挙動が組み込まれているようですね。

日本語で複数ファイルを検索するときは、

  1. ⌘+Fで検索したい日本語をあらかじめ入力
  2. 入力できたら、Shiftキーを押しながら⌘+Fで複数ファイル検索に切り替える
  3. Enterキーを押す

とするしかないようです。#1すら不可能だった時に比べればマシかと思います。

おまけ: Tabキーでかな漢字変換の変換候補を選べるようにする

かな漢字変換の際にTabキーで変換候補を選ぶことができない問題も同じように解決することができます。(参考URL)

先ほどのファイル(Default (OSX).sublime-keymap)で、"keys": ["tab"], "command": "insert_best_completion"と検索します。見つからない場合はinsert_best_completionと検索してみてください。

そして下記の行を次のようにコメントアウトして保存します。

// { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
// { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
//  "context":
//  [
//    { "key": "setting.tab_completion", "operator": "equal", "operand": true }
//  ]
// },

これでTabキーで次候補を選べます。ただし、Tabキーが使えるのはあくまで「次候補を選ぶとき」なので、一度目の変換はスペース(もしくは変換)キーを押さないといけませんのでご注意を。

Tabキーでコード補完ができなくなるので、Ctrl+Spaceなどを使わないといけないのが欠点です。

おまけ: この記事の英語訳

ありがとうございました!

@chibicode Sublime Text の解決方法本当にありがとうございました!!僕のブログに英語でちょっと訳しました http://t.co/XlCjucBOwb

— Keitaroh Kobayashi (@keichan34) February 7, 2014

おまけ: Gifアニメーションの作成方法

Gifアニメーションの作り方ですが、わたしはScreenFlowで撮ったmp4ファイルをGif Breweryでgifファイルに変換しています。

この記事で使ったGif Breweryの設定は以下のとおりですが、完全に適当です。カラーパレットは動画ごとに変えることが多いです。ファイルサイズが大きくなってしまったら、ImageOptimを使えば1割ほど節約できます。

@caprice-j

情報の投稿ありがとうございます。同じ問題でずっと悩んでいましたが解決しました。
show_overlayで表示されたエリア上で日本語を入力する方法はあるのでしょうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment