it-swarm-ja.com

Sublime Text 2の左側のペイン/列で新しいファイルを強制的に開くにはどうすればよいですか?

Windows7でSublimeText 2を使用していますが、分割編集に2列を使用するように構成しているため(メニュー:[表示]> [レイアウト]> [列:2])、2つのペインがあります。 Total Commander F4EditまたはExplorerのコンテキストメニュー「OpenwithSublime Text 2」で新しいファイルを開くと、新しいファイルが現在アクティブなペインで開かれます。これは、左側のペインがアクティブな場合は問題ありませんが、右側のペインがアクティブな場合は問題ありません。右ペインで開きますが、これは私が望まない動作です。左側のペインで編集するために常に新しいファイルを開くことは可能ですか?もしそうなら、どうすればいいですか?

Czarek。

2
Czarek Tomczak

Sublime Text 2でこれを行うネイティブな方法はありません。必要なのは、左側のウィンドウグループ(グループ0)に切り替えてファイルを開き、(おそらく、質問からは明確ではありませんが)に切り替えて元に戻すことです。右側のウィンドウグループ(group1)。

これは、一連の Sublime Textコマンド で実行できます。具体的には、move_to_group、Prompt_open_file、move_to_groupです。

残念ながら、コマンドやマクロをつなぎ合わせるためのSublimeのネイティブ機能は、ウィンドウコマンドではなく、テキスト操作コマンドでのみ機能します。また、キーバインドは単一のコマンドのみを受け入れます。したがって、2つのオプションがあります

プラグインフリーオプション

Ctrl + Oを押す前に、Ctrl +1と入力するだけです。これは、左側のウィンドウグループに切り替えてファイルを開くための非常に簡単な方法です。その後、必要に応じてCtrl +2を使用して元に戻すことができます。

完全な(より複雑な)ソリューション

Sublimeのフォーラムにあるプラグインコード をインストールして、「複数のコマンドを実行する」コマンドを作成できます。次に、必要なもののキーバインディングを作成できます。デフォルトの開くオプションを上書きするだけでいいと思うので、Ctrl + Oにバインドしましょう

{ "keys": ["ctrl+o"],
    "command": "run_multiple_commands",
    "args": {
         "commands": [
            {"command": "move_to_group", "args": {"group": 0 }, "context": "window"},
            {"command": "Prompt_open_file", "context": "window"},
            {"command": "move_to_group", "args": {"group": 1 }, "context": "window"}
          ]}}

これは、以下に再現されているリンクからプラグインをインストールした後に機能します。これをインストールするには、%APPDATA%\ Sublime Text 2\Packages\Userフォルダーに.pyファイルとしてインストールするだけです。

# run_multiple_commands.py
import sublime, sublime_plugin

# Takes an array of commands (same as those you'd provide to a key binding) with
# an optional context (defaults to view commands) & runs each command in order.
# Valid contexts are 'text', 'window', and 'app' for running a TextCommand,
# WindowCommands, or ApplicationCommand respectively.
class RunMultipleCommandsCommand(sublime_plugin.TextCommand):
  def exec_command(self, command):
    if not 'command' in command:
      raise Exception('No command name provided.')

    args = None
    if 'args' in command:
      args = command['args']

    # default context is the view since it's easiest to get the other contexts
    # from the view
    context = self.view
    if 'context' in command:
      context_name = command['context']
      if context_name == 'window':
        context = context.window()
      Elif context_name == 'app':
        context = sublime
      Elif context_name == 'text':
        pass
      else:
        raise Exception('Invalid command context "'+context_name+'".')

    # skip args if not needed
    if args is None:
      context.run_command(command['command'])
    else:
      context.run_command(command['command'], args)

  def run(self, edit, commands = None):
    if commands is None:
      return # not an error
    for command in commands:
      self.exec_command(command)
2
Ben McCormick