I'm looking for a solution to bind ctrl+j, ctrl+i, ctrl+l and ctrl+k to left, up, right, down respectively, but without success.
This is what I've been trying (Key Bindings - User):
[
{ "keys": ["ctrl+j"], "command": "left" },
{ "keys": ["Ctrl+l"], "command": "right" },
{ "keys": ["Ctrl+i"], "command": "up" },
{ "keys": ["Ctrl+k"], "command": "down" }
]
Sublime has been restarted, but with no difference.
Anyone has a solution? Please advice,
Thank you
You're on the right track, but the commands to move the cursor aren't what you think they are. The command you want to use is move, with arguments by and forward to specify which way to move and by how much.
If you open the Sublime console with View > Show Console or by pressing Ctrl+`, you can enter the following command to get Sublime to tell you what command it's executing in response to your actions (run it again with False or restart Sublime to turn the logging off):
sublime.log_commands(True)
If you then press the cursor keys for moving the cursor, you'll see the console telling you what commands are doing the move for you:
command: move {"by": "characters", "forward": false}
command: move {"by": "characters", "forward": true}
command: move {"by": "lines", "forward": false}
command: move {"by": "lines", "forward": true}
This tells you that the command move shifts the cursor around, and that you move by characters to move left and right and by lines to move up and down, with forward describing the direction.
With that knowledge, the key bindings that you want would look more like this:
[
{
"keys": ["ctrl+j"], "command": "move",
"args": {"by": "characters", "forward": false }
},
{
"keys": ["ctrl+l"], "command": "move",
"args": {"by": "characters", "forward": true }
},
{
"keys": ["ctrl+i"], "command": "move",
"args": {"by": "lines", "forward": false}
},
{
"keys": ["ctrl+k"], "command": "move",
"args": {"by": "lines", "forward": true}
},
]
Related
I have used vim for a while, in vim auto-complete, I use 'tab' 'down' to select the next candidate, 'shift+tab' 'up' to select the previous candidate, 'enter' to confirm that completion.
But in Sublime Text 3, I found 'tab' and 'enter' are both to confirm completion, only 'up' 'down' is to select the previous/next candidate.
How can I set the key like vim auto-complete mode ?
Just add this to your keymap:
{
"keys": ["tab"],
"command": "move",
"args": {"by": "lines", "forward": true},
"context": [{"key": "auto_complete_visible"}]
},
{
"keys": ["shift+tab"],
"command": "move",
"args": {"by": "lines", "forward": false},
"context": [{"key": "auto_complete_visible"}]
},
The context auto_complete_visible enables the keybinding only if the autocomplete popup is visible.
I am using the keymap to execute the current line in sublime repl by hitting ctrl+enter. The cursor remains on the same line. What do I need to add to the keymap so the cursor would jump to the next line (as what happens in RStudio)?
[
{ "keys": ["ctrl+enter"], "command": "repl_transfer_current", "args": {"scope": "lines"}}
]
I found a way to do it using a python script plugin. Apparently, Sublime by default does not have the option of running multiple commands under a single keymap.
I used the method from here: https://forum.sublimetext.com/t/run-multiple-commands-command/6848
the steps are the following:
Sublime - Tools - Developer - New Plugin
copy code from run_multiple_commands.py found here: https://gist.github.com/bgmort/7ae52ea4270f1c404321c20d1b97733c#file-run_multiple_commands-py
and save the file under the same name as on github: run_multiple_commands.py
Sublime - Preferences - Key Bindings User
code:
{
"keys": ["ctrl+enter"],
"command": "run_multiple_commands",
"args": {
"commands": [
{ "command": "repl_transfer_current", "args": {"scope": "lines"} },
{ "command": "move", "args": {"by": "lines", "forward": true} }
]
}
}
or additionally add [ ] if the file is empty:
[{
"keys": ["ctrl+enter"],
"command": "run_multiple_commands",
"args": {
"commands": [
{ "command": "repl_transfer_current", "args": {"scope": "lines"} },
{ "command": "move", "args": {"by": "lines", "forward": true} }
]
}
}]
I am using linux [FEDORA 20]. I want to override shortcut key for multiple cursor which is
ctrl+alt+up/down
because it is used for switching workspace in fedora.
I tired to search shortcut in Preferences>key binding - default. But couldn't find it.
So how do i override it?
CtrlAlt↑/↓ is the keyboard shortcut for multiple selection in Windows, not Linux. The following is from the Linux keymap file:
{ "keys": ["alt+shift+up"], "command": "select_lines", "args": {"forward": false} },
{ "keys": ["alt+shift+down"], "command": "select_lines", "args": {"forward": true} },
Go to
Preferences > Key Binding - User and add following lines to override default key bindings.
{ "keys": ["ctrl+space+down"], "command": "select_lines", "args": {"forward": true} },
{ "keys": ["ctrl+space+up"], "command": "select_lines", "args": {"forward": false} }
where
ctrl+space+up/down
is your key bindings.
I realized I use 'ctrl+enter' a lot more than 'enter' in ST3. Would it be possible to switch these two commands?
I can easily switch 'ctrl+enter' to 'enter' with:
{ "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line.sublime-macro"} }
But I'm not sure how to switch 'enter' to 'ctrl+enter'. It seems that only the "auto-completion" functionality of 'enter' is defined in the default keymap.
{ "keys": ["enter"], "command": "commit_completion", "context":
[
{ "key": "auto_complete_visible" },
{ "key": "setting.auto_complete_commit_on_tab", "operand": false }
]
},
Any thoughts would be much appreciated!
PS. And if there was a way I could keep 'enter' to commit completion while also using it to skip to next line, that would be the icing on the cake.
Nevermind, I found it:
{ "keys": ["ctrl+enter"], "command": "insert", "args": {"characters": "\n"} },
That just leaves the question of how to continue to use 'enter' for auto-completion. If anyone has any ideas, I'd be curious to hear them!
sublime text 3 Ctrl+Backspace doesn't work
my sublime keymap like this but but still does not work
{ "keys": ["ctrl+backspace"], "command": "delete_word", "args": { "forward": false } },
if it dosen't work for you, you can still make your own shorcut : go to preferences>KeyBendings User and define your own : for example
[
{ "keys": ["f1"], "command": "delete_word", "args": { "forward": false } }
]