35

我正在尝试找出工作中的热键。我刚得到这份工作,我或多或少地第一次使用 Mac。

回到我的笔记本电脑上,当使用 Eclipse 时,我似乎记得有一个热键可以同时使用:

  • ;在我当前行的末尾添加一个(无论插入符号在所述行中的哪个位置)
  • 将光标放在新行的开头,缩进级别与我刚刚添加分号的行相同

有人知道这是否是 Eclipse 特定的热键,或者知道在 Sublime Text 2 中复制所述热键的方法吗?

4

6 回答 6

75

最好的解决方案是在 Sublime Text 上录制宏,然后将其分配给键盘快捷键。按着这些次序:

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

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

快乐编码!

于 2013-08-10T19:58:09.917 回答
19

在阅读了您的问题三遍之后,我终于意识到您正在寻找一个热键来执行这两项操作。哎呀。

您的请求听起来像是Smart Semicolon Eclipse插件的Ctrl++热键。虽然添加天才级 IQ 的分号可能需要一个全新的 Sublime Text 2 插件,但您可以使用 Sublime Text 的Macros轻松创建智能分号式键绑定。直到现在我才真正了解他们!Shift;

在这种情况下,自己录制宏实际上是创建它的最快方法,而不是复制和粘贴新文件(现在您将拥有制作更多文件的经验)。首先,打开一个新文件并输入你最喜欢的垃圾行:

Lord Vetinari's cat|

然后将插入符号移动到行内的任何位置:

Lord Veti|nari's cat

现在,按Ctrl+ Q,即 的热键Tools -> Record Macro。如果启用状态栏,它将通知您它正在“开始录制 [a] 宏”。按End(如果您没有End键,请跳至下方),然后按;,然后按Enter。最后,再次按Ctrl+停止录制。Q当你这样做时,状态栏将显示“停止录制宏”。通过在您选择的代码段上点击Ctrl++Shift来检查您的宏是否正常工作。Q

只要设置为 ,只需按下Enter就会相应地调整下一行的缩进。见,第 59 行。"auto_indent"truePreferences -> Settings – Default

满意后,将新宏保存为Tools -> Save Macro.... 我将我的保存为Packages/User/smart-semicolon.sublime-macro. 我的文件看起来像这样;如果您不能或不会手动制作宏,请随意复制它:

[
    {
        "args":
        {
            "extend": false,
            "to": "eol"
        },
        "command": "move_to"
    },
    {
        "args":
        {
            "characters": ";"
        },
        "command": "insert"
    },
    {
        "args":
        {
            "characters": "\n"
        },
        "command": "insert"
    }
]

"extend": false,只是意味着宏不会将任何文本添加到工作选择中。在非官方文档命令页面上阅读有关命令选项的更多信息。

现在你有了你的宏,我们可以给它一个自定义键绑定。将以下行添加到您的Preferences -> Key Bindings – User文件中:

 { "keys": ["ctrl+shift+;"], "command": "run_macro_file", "args": {"file": "Packages/User/smart-semicolon.sublime-macro"}, "context":
      [
           { "key": "selector", "operator": "equal", "operand": "source.java" }
      ]
 },

用您喜欢的任何键绑定替换Ctrl++ ,保存您的文件,然后Shift试一试。;"context"数组将键绑定限制为 Java 文件(有关上下文的更多信息,请参阅非官方文档键绑定页面);如果您希望键绑定在任何地方都处于活动状态,请改用此行:

 { "keys": ["ctrl+shift+;"], "command": "run_macro_file", "args": {"file": "Packages/User/smart-semicolon.sublime-macro"} },

这篇NetTuts+ 文章更多关于宏以及将它们绑定到键的信息;我经常引用它。这个UserEcho 帖子看起来有更多关于使插入更可扩展的信息。

于 2013-05-22T16:49:05.687 回答
11

您还可以使用为此目的构建的现成的 sublime 包:AppendSemiColon

您可以使用包控制来安装它,只需搜索“AppendSemiColon”。

Place a semicolon at the end of the cursor's current line(s) by pressing:
Command+; on OS X
Ctrl+; on Windows and Linux

You can also automatically go to the next line at the same time like this:
Command+Shift+; on OS X
Ctrl+Shift+; on Windows and Linux

我已经使用这个包有一段时间了,效果很好。

更新:正如作者在评论中提到的,您现在还可以根据需要更改默认热键(就我个人而言,我喜欢默认设置)。例如,只需更改:

[
  { "keys": ["ctrl+;"], "command": "append_semi_colon" }, 
  { "keys": ["ctrl+shift+;"], "command": "append_semi_colon", "args": {"enter_new_line": "true"} }
]

在您的 sublime-keymap 中使用您想要的任何键。

我测试了最新版本,这个功能也很好用。存在一个错误,即在额外的热键按下时错误地附加了额外的分号 - 这个小烦恼也已得到修复。谢谢,莫里斯Z/mzee99!

于 2015-07-01T21:36:20.060 回答
1

我正在使用 Sublime Text 3 ...受您的帖子的启发,我在我的 .sublime-keymap 中添加了以下内容:

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

我很惊讶这节省了多少时间。

于 2014-09-10T07:24:09.837 回答
1

Ctrl+Enter将创建一个具有相同缩进级别的新行。

我找不到像你提到的Ctrl+A

于 2013-05-21T16:52:23.177 回答
0

@Felipe 涵盖了第二点。您可以使用简单的宏或插件来模仿第一个的行为。我说还是因为您在按下组合键后没有描述光标位置。它是否将光标移动到下一行?它是否插入新行?我想你应该已经明白了。

我很确定 Eclipse 可以在 OS X 和 Windows 上运行,所以如果您对此更满意,为什么不使用它(除非您的工作当然需要 ST)?大多数键绑定可能相同/相似(它可能是命令而不是快捷键控制)。

http://www.eclipse.org/downloads/?osType=macosx

如果您继续使用 ST,那么学习插件的基础知识可能是值得的。可以构建很多内容,以便您拥有与其他编辑器相同的行为,只是需要一些额外的努力(通过创建插件或找到执行此操作的插件)。

于 2013-05-21T23:38:45.187 回答