可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I need a fast way to make the cursor jump outside the auto wrap qoutes or other syntax elements. I don't want to have to reach down to my arrow keys each time, and definitely don't want to go to my mouse.
Is there a quick and easy way to solve this for my workflow?
回答1:
You can use a shortcut (shift+space, or whatever you like) to move the cursor.
In your Key Bindings - User
:
{ "keys": ["shift+space"], "command": "move", "args": {"by": "characters", "forward": true} }
回答2:
I made a few key bindings out of macros as well.
You must make a macro for these, unless you want to spend more time building them, but it's really easy. Just go to Sublime Text, Tools
> Record Macro
, or hit ctrl
Q
. Save the file in Packages/User/ and then hit ⌘
,
to open up your User Settings. Paste the settings below in there and boom. ( The | below represents my cursor )
Here are the one's I chose:
Function auto-bracketizer
When the cursour is here:
totallyAwesomeness(|)
Use the option + tilda shortcut.
⌥ ~
This prefills the function with brackets and the text ' # code... ' highlighted. It only works when inside the parenthesis.
Sublime User Settings
{
"keys": ["option+`"], "command": "run_macro_file", "args": {"file": "Packages/User/superBracketizeFunction.sublime-macro"}
},
Download Macro
Auto-End Line With Semicolon
When the cursour is here:
echo 'say what!!??|'
Use the command + semicolon shortcut.
⌘ ;
This adds a closing ; at the end of current line and moves you to the line below it. It actually works wherever you are on the line.
Sublime User Settings
{
"keys": ["super+;"], "command": "run_macro_file", "args": {"file": "Packages/User/superEndLineWiSemiColin.sublime-macro"}
},
Download Macro
Exit Argument & Exit Function
When your cursor is anywhere inside the function it will end up here:
public function totallyAwesomeness()
{
echo 'say what!!??';
} |
echo 'yep... that just happened';
Use the command + enter shortcut.
⌘ Enter
This will let you jump outside the argument and a space to the right as well as anywhere from within the function it will jump you out of it just being the closing bracket.
Sublime User Settings
{
"keys": ["option+enter"], "command": "run_macro_file", "args": {"file": "Packages/User/superExitFunctionArg.sublime-macro"}
},
Download Macro
Just in case you don't know what the path is to your User folder is, it is shown below.
/Users/alexcory/Library/Application Support/Sublime Text 3/Packages/User/
Also the Library folder is usually hidden, so you can download a program called Revealer that will allow you to toggle those hidden files.
If you want to know how I made these just hit me up and I'll show you! :D
回答3:
Best solution for this is recording a macro on Sublime Text and then assigning it to a keyboard shortcut. Follow these steps:
- Create a line such as alert('hello') and leave the cursor right
after letter 'o'.
- Then go to Tools > Record a Macro to start recording.
- Press Command+→ to go to the end of line.
- Press ; and hit Enter
- Stop recording the macro by going to Tools > Stop Recording Macro
- You can now test your macro by Tools > Playback Macro (optional)
- Save your macro by going to Tools > Save Macro (ex: EndOfLine.sublime-macro)
Create a shortcut by adding this between the square brackets in your
in your Preferences > Key Bindings - User file:
{
"keys": ["super+;"], "command": "run_macro_file", "args": {"file": "Packages/User/EndOfLine.sublime-macro"}
}
- Now, every time you hit Command+;, it will
magically place the semicolon at the end of current line and move the cursor to the next line.
Happy coding!
回答4:
A more complete way to make a key binding would be:
{ "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 }
]
},
Assuming you want shift+space as the shortcut. Or you can change it to tab as well
As found in http://www.sublimetext.com/forum/viewtopic.php?f=3&t=5174#p23086
回答5:
Following Riccardo Marotti's post;
If you would like to bypass the bracket on the next line, you can replace "characters" with "lines" in the args section.
{ "keys": ["shift+space"], "command": "move", "args": {"by": "lines", "forward": true} }
回答6:
on a Dell XPS, Ctrl Enter does the trick for me
回答7:
I just have this feature partially implemented with the help of a plugin named run_multiple_commands.py (see below)
(only tested on ST3, but the plugin is earlier than the first version of ST3 and should work on ST2 too).
Shortcut configuration is as below:
{
"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 }
]
},
One shortcut (shift+space
) for four conditions:
cursor is just after quotes or closing parentheses/bracket:
move one character forward
cursor is just before quotes or closing parentheses/bracket:
move one character forward
cursor is just before opening parentheses/bracket:
move to closing parentheses/bracket
!1
&& !2
&& !3
:
move to closing parentheses/bracket
and move one more character forward
To use this configuration in your ST, you should first add a file named run_multiple_commands.py
to your .../Package/User/
directory, and the content of which is the second code piece of This Article
This solution is just fine for everyday use but is not perfect because:
- the cursor is unable to jump out of quotes (just step over it when the cursor is directly followed by one).
- the cursor is unable to jump out of the nearest parenthesis, quotes, or brackets when the code block is commented.
回答8:
Ctrl + M is the default one that I have on windows machine.
Just do it
回答9:
Perhaps the home and the end key are near to your fingers.
回答10:
I use ctrl+f to move cursor one space forward. Also, on mac, I interchanged caps lock with ctrl. caps lock+f is much easier to reach. It works fairly well for me.
回答11:
I found another way which lies within sublime keybindings itself. Basically, I just modify the keybindings for auto closing parens, that is, I replace "contents": "($0)"
with "contents": "($1)$0"
. Then just hit Tab
to get out of the parenthesis. So I add in my keybindings the following:
{ "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 }
]
},
And similar for square brackets, curly brackets, and single and double quotes.
回答12:
Ctrl + PgUp Cycle up through tabs
Ctrl + PgDn Cycle down through tabs
This can go to the end of brackets