Sublime Textで、サイドバーに現在のファイルを表示し、フォルダー構造内を移動したい場合があります。
これは、コマンドreveal_in_side_bar
とfocus_side_bar
を使用して実現できますが、2つの別々のキーの組み合わせにバインドする必要があるため、理想的には1つだけ(私は怠け者)。
複数のコマンドを単一のキーの組み合わせにバインドする方法はありますか?例えばこのようなもの:
{
"keys": ["alt+shift+l"],
"commands": ["reveal_in_side_bar", "focus_side_bar"]
},
@ artem-ivanykと@d_railの回答に基づく
1)ツール→新しいプラグイン
import sublime, sublime_plugin
class RevealInSideBarAndFocusCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command("reveal_in_side_bar")
self.window.run_command("focus_side_bar")
RevealInSideBarAndFocus.pyとして保存
2)Sublime Text 2→Preferences→Key Bindings — User
それをショートカットにバインドします。
{ "keys": ["alt+shift+l"], "command": "reveal_in_side_bar_and_focus" }
@Artem Ivanykの回答を更新しています。 Sublimeの変更点はわかりませんが、その解決策はうまくいきませんでしたが、これでうまくいきました。
import sublime, sublime_plugin
class RevealInSideBarAndFocusCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command("reveal_in_side_bar")
self.window.run_command("focus_side_bar")
。
{ "keys": ["ctrl+shift+8"], "command": "reveal_in_side_bar_and_focus" }
ところで、私はビルド2220を使用しています
質問は1年前のものですが、これはまだ答えを探している人々を助けるかもしれません。
最近、Chain of command
と呼ばれる新しいパッケージがjisaacksによって開発されました。これは、複数のコマンドを一度にチェーンするという、ユーザーが要求したものを正確に実行するという主要なタスクを持っています。
パッケージはここにあります: https://github.com/jisaacks/ChainOfCommand
作業の例を以下に示します。
現在のファイルを複製するためのキーバインディングが必要だとしましょう。このキーバインディングを設定できます:
{
"keys": ["super+shift+option+d"],
"command": "chain",
"args": {
"commands": [
["select_all"],
["copy"],
["new_file"],
["paste"],
["save"]
]
}
}
これにより、すべてのテキストが選択され、コピーされ、新しいファイルが作成され、テキストが貼り付けられて、ファイルの保存ダイアログが開きます。
ソース: https://sublime.wbond.net/packages/Chain%20of%20Command 。
同様の問題に遭遇しました。マクロを記録しようとしたとき、 "保存する" コマンド、コンソールは私に投げました 「不明なマクロコマンドの保存」 メッセージ。基本的なプラグインで私の方法を回避しました。
1) ツール→新しいプラグイン
_import sublime, sublime_plugin
class MyChainedActionsCommand():
def run(self):
self.view.run_command("reveal_in_side_bar")
self.view.run_command("focus_side_bar")
_
クラス名にはキャメル大文字表記を使用する必要があります。 ST2は、„ Command“サフィックスを削除してコマンド名のこのクラスを公開し、残りは小文字のアンダースコア表記に変換されます。つまりこの例では、MyChainedActionsCommand
をsublimeのコンソール入力で実行できます:view.run_command("my_chained_actions")
2) Sublime Text 2→Preferences→Key Bindings — User
それをショートカットにバインドします。
_{ "keys": ["alt+shift+l"], "command": "my_chained_actions" }
_
コンマに注意してください。
this Gist を見てください。
私は長い間これを実装しようとしていて、これを偶然見つけました。
提供されている「ドキュメント」を必ずお読みください。 「コンテキスト」キーを渡していないことに気づくまで、私はこの作業を続けようとしました。
これを行うマクロを作成できます。 Sublime Textの場合、マクロは基本的にチェーンされたコマンドです。次に、そのマクロのキーバインドを作成します。 Tools > Record Macro
を使用してマクロを作成し、コマンドを実行することができます(マクロはキーストロークも記録するため、メニューバーからのコマンドを使用して競合を引き起こさないようにする必要があります)。次にStop Recording
、次にSave Macro
。マクロを保存した後、マクロをSublime Textで開いて、必要なものだけが記録されていることを確認できます。
Artem Ivanyk の返信に基づいて、引数で動作するChainedActionsのバージョンを次に示します。 actions
とargs
の2つの引数を取ります。どちらもリストであり、リスト内の各コマンドは対応する引数を指定して実行されます。この明らかに愚かな例は、2つのスニペットを挿入します:view.run_command("chained_actions", {"actions":["insert_snippet","insert_snippet"],"args":[{"contents": "
($ 0) "}、{"コンテンツ ":" 1($ 0) "}]})`
import sublime
import sublime_plugin
class ChainedActionsCommand(sublime_plugin.TextCommand):
def run(self, edit, actions, args):
for i, action in enumerate(actions):
self.view.run_command(action, args[i])
同じコマンドを使用しようとしましたが、ファイルのフォルダーが既に展開されているとき、崇高にフォーカスサイドバーの上部に移動し、開いているファイルが表示されるというバグが発生しました。この動作を改善するために、私が期待どおりに動作することを保証する新しいプラグインを作成しました。これは https://github.com/miguelgraz/FocusFileOnSidebar です。
Sublime text3 build-3083を使用しています。「サイドバーで表示する」だけで問題が解決され、自動的にフォーカスが移動します。
Preferences-> Key Bindings-Userの下に次のステートメントを追加して、「サイドバーで表示」のカスタムキーボードショートカットを追加しました。
[
{ "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}
]
imageファイルタイプのオプション-[サイドバーで表示]がありませんでした。コンテキストメニューがマウスの右クリックで表示されないためです。この状況では、カスタムキーボードショートカットが便利です。