3

Sublime Text 2 の「expand_selection」キーマップを編集して、現在の行のみを選択し、その後の改行は選択しないようにする方法を知っている人はいますか?

デフォルトのキーマップは次のとおりです。

{ "keys": ["ctrl+l"], "command": "expand_selection", "args": {"to": "line"} }

問題は、行を選択して新しいコードに置き換え始めると、その行に続く行が現在の行まで移動することです。

「args」セクションの「line」を別のものに置き換えたと思いますが、これはどこにも文書化されていないようです。

4

3 に答える 3

4

次の行を選択せず​​に現在の行を選択する例/ドキュメントも見つかりませんでした。幸いなことに、これを行うコマンドを作成できます。

  1. ファイルを作成しますUser/my_utilities.py。私がランダムに開発したすべての ST コマンドをここに貼り付けます。
  2. これを貼り付けます:

    import sublime, sublime_plugin
    
    class MyExpandSelectionToLine(sublime_plugin.TextCommand):
        def run(self, edit):
            regions = []
            for s in self.view.sel():
                line = self.view.line(sublime.Region(s.begin(), s.end()))
                if line.end() == s.end():
                    # we're at the end of a line, so select the next line
                    line = self.view.line(sublime.Region(s.end(), s.end() + 1))
                regions.append(line)
            for r in regions:
                self.view.sel().add(r)
    
  3. User .sublime-keymap ファイルに、これを追加します。

    `{ "keys": ["super+l"], "command": "my_expand_selection_to_line" }`
    

Windowsの場合は["ctrl+l"]、代わりに["super+l"]

これは、記述したばかりの新しいコマンドを実行する行を選択するためのデフォルトのコマンド バインディングをオーバーライドします。

于 2012-08-13T16:13:49.480 に答える
3

Matt の解決策はうまく機能します。別のオプションとして、マクロを記録して に割り当てることもできctrl+lます。これには、最初のコード文字のみを選択するという追加の利点があるため、新しい行は置換する行と同じレベルでインデントされます。

マクロは次のとおりです。

[
    {
        "args":
        {
            "extend": false,
            "to": "bol"
        },
        "command": "move_to"
    },
    {
        "args":
        {
            "extend": true,
            "to": "eol"
        },
        "command": "move_to"
    }
]

\Packages\Userこれは(Windows) ではMacroName.sublime-macro として保存されます。

キーマップは次のとおりです。

{ "keys": ["ctrl+l"], "command": "run_macro_file", "args": {"file": "Packages/User/MacroName.sublime-macro"} }

これにより、 を繰り返して追加の行を選択する機能が失われるため、コマンドを次ctrl+lの場所に移動しました(これは をオーバーライドします)。expand_selectionctrl+shift+lsplit_selection_into_lines

{ "keys": ["ctrl+shift+l"], "command": "expand_selection", "args": {"to": "line"} },

したがって、現在の行を選択するにはctrl+l、 を選択してから、選択範囲をその下の行に拡張するには、 を押しctrl+shift+lて必要な数の行を選択します。

于 2012-08-13T21:32:45.910 に答える
1

これを「Key Bindings - User」に追加すると、次のようになりました。

{ "keys": ["shift+end"], "command": "move_to", "args": {"to": "hardeol", "extend": true} }

クレジット: http://wesbos.com/sublime-text-end-of-line-wrap/

于 2014-07-16T20:55:08.763 に答える