【问题标题】:Sublime Text 2 move cursor out of parenthesis, quotes, or bracketsSublime Text 2 将光标移出括号、引号或方括号
【发布时间】:2013-01-25 20:58:29
【问题描述】:

我需要一种快速的方法来使光标跳到自动换行 qoutes 或其他语法元素之外。我不想每次都必须向下按箭头键,当然也不想用鼠标。

有没有一种快速简便的方法可以为我的工作流程解决这个问题?

【问题讨论】:

  • 您知道,您仍然可以从那里输入",它会跳过" 而不会添加另一个。或者,当然,您可以设置一个键绑定来跳转。
  • @BoundinCode 大声笑-它是如此简单,我什至从未尝试过打字-问题解决了。键绑定选项也可能很有用。谢谢。
  • 刚刚意识到我可以跳过标签并通过点击Command Return 从下一行开始。我可能应该检查这里列出的快捷方式:gist:1207002,因为 Sublime 有很多很酷的功能。

标签: sublimetext2


【解决方案1】:

您可以使用快捷键(shift+space,或任何您喜欢的方式)来移动光标。

在你的Key Bindings - User

{ "keys": ["shift+space"], "command": "move", "args": {"by": "characters", "forward": true} }

【讨论】:

  • 是否可以绕过多引号?像这个[“shift + space”],当光标在单词空间之后时,我必须按两次shift + space。
【解决方案2】:

我也用宏做了一些键绑定。

你必须为这些创建一个宏,除非你想花更多的时间来构建它们,但这真的很容易。只需转到 Sublime Text,Tools > Record Macro,或点击 ctrl Q。将文件保存在 Packages/User/ 中,然后点击 , 打开您的用户设置。将下面的设置粘贴到那里并繁荣。 (下面的|代表我的光标)

这是我选择的:


函数自动括弧

当光标在这里时:

totallyAwesomeness(|) 

使用 option + tilda 快捷键。

⌥ ~

这会用括号预填充函数,并突出显示文本“#code...”。它仅在括号内有效。

Sublime 用户设置

{
"keys": ["option+`"], "command": "run_macro_file", "args": {"file": "Packages/User/superBracketizeFunction.sublime-macro"}
},

Download Macro


用分号自动结束行

当光标在这里时:

echo 'say what!!??|'

使用命令+分号快捷键。

⌘;

这增加了一个结束;在当前行的末尾并将您移动到它下面的行。它实际上在您在线的任何地方都有效。

Sublime 用户设置

{
"keys": ["super+;"], "command": "run_macro_file", "args": {"file":  "Packages/User/superEndLineWiSemiColin.sublime-macro"}
},

Download Macro


退出参数和退出函数

当您的光标位于函数内的任何位置时,它将在此处结束:

public function totallyAwesomeness()
    {
        echo 'say what!!??';
    } |
    echo 'yep... that just happened';

使用 command + enter 快捷键。

⌘ 输入

这会让你跳出参数和右边的空格,以及函数内的任何地方,它会让你跳出来,只是作为右括号。

Sublime 用户设置

{
"keys": ["option+enter"], "command": "run_macro_file", "args": {"file": "Packages/User/superExitFunctionArg.sublime-macro"}
},

Download Macro


以防万一您不知道用户文件夹的路径是什么,如下所示。

/Users/alexcory/Library/Application Support/Sublime Text 3/Packages/User/

此外,Library 文件夹通常是隐藏的,因此您可以下载一个名为 Revealer 的程序,它可以让您切换这些隐藏文件。

如果你想知道我是如何制作这些的,请联系我,我会告诉你的! :D

【讨论】:

  • 您应该交换第一个和最后一个“下载宏”链接
【解决方案3】:

对此的最佳解决方案是在 Sublime Text 上录制宏,然后将其分配给键盘快捷键。请按以下步骤操作:

  1. 创建一行如 alert('hello') 并将光标留在右边 在字母“o”之后。
  2. 然后转到工具>录制宏开始录制。
  3. Command+ 转到行尾。
  4. ; 并按 Enter
  5. 转到工具>停止录制宏停止录制宏
  6. 您现在可以通过工具 > 播放宏(可选)测试您的宏
  7. 转到工具>保存宏保存您的宏(例如:EndOfLine.sublime-macro)
  8. 通过在您的方括号之间添加此快捷方式来创建快捷方式 在您的首选项 > 键绑定 - 用户文件中:

    {
    "keys": ["super+;"], "command": "run_macro_file", "args": {"file": "Packages/User/EndOfLine.sublime-macro"}
    }
    
  9. 现在,每次你点击Command+;,它都会 神奇地将分号放在当前行的末尾并将光标移动到下一行。

编码愉快!

【讨论】:

    【解决方案4】:

    更完整的键绑定方法是:

        { "keys": ["shift+space"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
            [
                { "key": "following_text", "operator": "regex_contains", "operand": "^[)\"\\]]", "match_all": true },
                { "key": "auto_complete_visible", "operator": "equal", "operand": false }
            ]   
        },
    

    假设您希望 shift+space 作为快捷方式。或者您也可以将其更改为 tab

    http://www.sublimetext.com/forum/viewtopic.php?f=3&t=5174#p23086中找到

    【讨论】:

      【解决方案5】:

      关注 Riccardo Marotti 的帖子;

      如果您想绕过下一行的括号,可以在 args 部分将“characters”替换为“lines”。

      { "keys": ["shift+space"], "command": "move", "args": {"by": "lines", "forward": true} }
      

      【讨论】:

      • 谢谢,这个更有意义。
      【解决方案6】:

      在戴尔 XPS 上,Ctrl Enter 对我有用

      【讨论】:

        【解决方案7】:

        我只是在 一个名为 run_multiple_commands.py 的插件的帮助下部分实现了这个功能(见下文)

        仅在 ST3 上测试过,但该插件早于 ST3 的第一个版本,应该也可以在 ST2 上运行)。

        快捷键配置如下:

        {
            "keys": ["shift+space"],
            "command": "run_multiple_commands",
            "args": {
                "commands": [
                    {"command": "move", "args": {"by": "characters", "forward": true} }
                ]
            },
            "context":
            [
                { "key": "preceding_text", "operator": "regex_contains", "operand": "[)\\]}'\"]$", "match_all": true},
                { "key": "auto_complete_visible", "operator": "equal", "operand": false }
            ]
        },
        
        {
            "keys": ["shift+space"],
            "command": "run_multiple_commands",
            "args": {
                "commands": [
                    {"command": "move", "args": {"by": "characters", "forward": true} },
                ]
            },
            "context":
            [
                { "key": "following_text", "operator": "regex_contains", "operand": "^[)\\]}'\"]", "match_all": true },
                { "key": "auto_complete_visible", "operator": "equal", "operand": false }
            ]
        },
        
        {
            "keys": ["shift+space"],
            "command": "run_multiple_commands",
            "args": {
                "commands": [
                    {"command": "move_to", "args": {"to": "brackets"} },
                ]
            },
            "context":
            [
                { "key": "following_text", "operator": "regex_contains", "operand": "^[(\\[{]", "match_all": true },
                { "key": "auto_complete_visible", "operator": "equal", "operand": false }
            ]
        },
        
        {
            "keys": ["shift+space"],
            "command": "run_multiple_commands",
            "args": {
                "commands": [
                    {"command": "move_to", "args": {"to": "brackets"} },
                    {"command": "move", "args": {"by": "characters", "forward": true} },
                ]
            },
            "context":
            [
                { "key": "following_text", "operator": "not_regex_contains", "operand": "^[)\\]}'\"]", "match_all": true },
                { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[)\\]}'\"]$", "match_all": true},
                { "key": "following_text", "operator": "not_regex_contains", "operand": "^[(\\[{]", "match_all": true },
                { "key": "auto_complete_visible", "operator": "equal", "operand": false }
            ]
        },
        

        四个条件的一个快捷方式(shift+space):

        1. 光标就在引号或右括号/括号之后:

          向前移动一个字符

        2. 光标就在引号或右括号/括号之前:

          向前移动一个字符

        3. 光标就在左括号/括号之前:

          移至右括号/括号

        4. !1 && !2 && !3:

          移动到右括号/括号

          再向前移动一个字符

        要在你的ST中使用这个配置,你应该先在你的.../Package/User/目录下添加一个名为run_multiple_commands.py的文件,其内容是This Article的第二段代码

        此解决方案适合日常使用,但并不完美,因为:

        1. 光标无法跳出引号(光标直接跟在一个引号后才跳过)。
        2. 注释代码块时,光标无法跳出最近的圆括号、引号或方括号。

        【讨论】:

          【解决方案8】:

          Ctrl + M 是我在 Windows 机器上的默认设置。 去做吧

          【讨论】:

            【解决方案9】:

            也许 homeend 键就在您的手指附近。

            【讨论】:

              【解决方案10】:

              我使用 ctrl+f 将光标向前移动一格。另外,在 mac 上,我将 caps lockctrl 互换了。 caps lock+f 更容易达到。它对我来说效果很好。

              【讨论】:

                【解决方案11】:

                我发现了另一种方式,它位于 sublime 键绑定本身中。基本上,我只是修改了自动关闭括号的键绑定,即我将"contents": "($0)" 替换为"contents": "($1)$0"。然后只需点击Tab 即可摆脱括号。所以我在我的键绑定中添加了以下内容:

                { "keys": ["("], "command": "insert_snippet", "args": {"contents": "($1)$0"}, "context":
                    [
                      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
                      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
                      { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
                    ]
                },
                

                方括号、大括号、单引号和双引号也类似。

                【讨论】:

                  【解决方案12】:
                  Ctrl + PgUp Cycle up through tabs
                  
                  Ctrl + PgDn Cycle down through tabs
                  

                  这可以到括号的末尾

                  【讨论】:

                    猜你喜欢
                    • 2012-12-11
                    • 2023-03-18
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-09-23
                    • 2014-10-11
                    • 2016-10-06
                    • 2014-05-18
                    • 2015-05-26
                    相关资源
                    最近更新 更多