| Store | Cart

ActiveState Docs

Komodo 6.0 Documentation

Loading...

Vi Key Bindings

Vi emulation mimics the modal behavior of the Vi editor. The Vi scheme (and custom schemes created with Vi emulation) require this emulation in order to assign keystrokes to appropriate actions in the various modes.

Keybinding schemes and Vi emulation are configured in Edit|Preferences|Editor|Keybindings.

Vi Emulation

Komodo emulates the following Vi modes:

  • Normal: navigation and editing.

    When you open a file in Komodo with the Vi scheme enabled, you start off in command mode. Keystrokes in this mode control movement, deletion, cutting, pasting and other standard editing commands that are generally mapped to Ctrl and Alt key combinations in other schemes.

  • Input: entering text.

    Hitting an "input" command key in Normal mode (i.e. 'i' to insert, 'a' to append, or 'o' to open a new line and insert) puts the editor into Input mode. Keystrokes in this mode enter text. Use the 'Esc' key to exit into Normal mode.

  • Visual: visual selection of text with navigation keystrokes.

    Similar to Vim's visual modes. Entering 'v' enables selection by character, 'V' enables linewise selection, and 'Ctrl'+'v' enables blockwise selection. Navigation keystrokes within these modes expand and contract the selection area. Use the 'Esc' key to exit into Normal mode.

  • Command-line: running vi/ex commands.

    In Normal mode, entering ':' opens a text box in the status bar at the bottom of the Komodo window for entering Vi commands. The following Vi and Vim commands have been implemented in the default Vi scheme:

    • edit
    • exit
    • help
    • next
    • previous
    • quit
    • set
    • splitview
    • undo
    • write
    • wq
    • xit
    • number <line number>
    • <range>s/<search string>/<substitution>/[g|i|I]

Custom Vi Commands

To add your own Vi commands, create a Toolbox folder named Vi Commands, then add Macros or Run Commands to the folder. The macro or command is executed when you type its name in the Vi command-line text box.

Command-line arguments can be passed to Macros using the koIViCommandDetail XPCOM service. The IDL for this service is:

attribute long startLine;         // Start line (current line when unset)
attribute long endLine;           // End line (current line when unset)
attribute boolean forced;         // Command name ended with a "!"
attribute wstring commandName;    // Command name being run
attribute wstring leftover;       // Everything after the command
attribute wstring rawCommandString; // Raw command string as typed in
void getArguments(out unsigned long count,
                  [array, size_is(count), retval] out wstring args);
void setArguments(in unsigned long count,
                  [array, size_is(count)] in wstring args);
void clear();

JavaScript sample macro:

var viCommandDetails = Components.classes['@activestate.com/koViCommandDetail;1'].
                                getService(Components.interfaces.koIViCommandDetail);
var count = new Object();
var args = viCommandDetails.getArguments(count);
var msg = "startLine:" + viCommandDetails.startLine + "\n" +
          "endLine:" + viCommandDetails.endLine + "\n" +
          "commandName:" + viCommandDetails.commandName + "\n" +
          "arguments:" + args + "\n" +
          "rawCommandString:" + viCommandDetails.rawCommandString;
alert(msg);

Python sample macro:

from xpcom import components
viCommandDetails = components.classes['@activestate.com/koViCommandDetail;1'].getService(components.interfaces.koIViCommandDetail)
msg = [ "startLine: %d" % viCommandDetails.startLine ]
msg.append("endLine: %d" % viCommandDetails.endLine)
msg.append("commandName: %s" % viCommandDetails.commandName)
msg.append("arguments: %r" % viCommandDetails.getArguments())
msg.append("rawCommandString: %s" % viCommandDetails.rawCommandString)
print "\n".join(msg)

Vi Scheme

The default Vi scheme is based on the Default scheme (which varies slightly between platforms) and includes all Default keybindings which do not conflict with those used in Vi emulation. To view the list of key bindings for your current scheme, select Help|List Key Bindings. The following are key bindings which are unique to the Vi scheme.

Vi-specific key bindings

Vi: Cancel
Ctrl+[
Vi: Close the Current Buffer Without Saving Z, Q
Vi: Cut One Character
x
Vi: Cut One Character to Left
X
Vi: Cut Whole Line and Enter Insert Mode
S
Vi: Cut to End of Line and Enter Insert Mode
C
Vi: Delete the Current Character and Enter Insert Mode
s
Vi: Deletes from cursor to end of line.
D
Vi: Enter Insert Mode
i
Vi: Enter Insert Mode after the Cursor Position
a
Vi: Enter Insert Mode at Start of the Line
I
Vi: Enter Insert mode at the End of the Current Line
A
Vi: Enter command mode
:
Vi: Enter visual block mode
Ctrl+V
Vi: Enter visual character mode
v
Vi: Enter visual line mode
V
Vi: Go to Next Line
j
Vi: Go to Previous Line
Ctrl+P
k
Vi: Goto Line
G
Vi: Join current and next lines
J
Vi: Move Left One Character
h
Vi: Move One Word Left
b
Vi: Move Right One Character
Space
l
Vi: Move To End of Word To Right
e
Vi: Move To Start of Word To Right
w
Vi: Move one page down
Ctrl+F
Vi: Move one page up
Ctrl+B
Vi: Move one word left, past any punctuation
B
Vi: Move one word right, past any punctuation
W
Vi: Move to Beginning of Line (first visible char/first column)
^
Vi: Move to Beginning of the Current Line
|
0
Vi: Move to Beginning of the Previous Line
-

Code Browser

Locate current scope...
Ctrl+K, Ctrl+L

Debugger

Clear All Breakpoints
Ctrl+F9
Disable/Enable Breakpoint
F9
New Session
Ctrl+Shift+F5
Run Script
F7
Ctrl+F7
Run to Cursor
Shift+F10
Ctrl+Shift+F10
Show Current Statement
Alt+*
Start
F5
Ctrl+F5
Start/Find/Hide Default Interactive Shell
F12
Step In
F11
Ctrl+F11
Step Out
Shift+F11
Ctrl+Shift+F11
Step Over
F10
Ctrl+F10
Stop
Shift+F5

Editor

Back
Shift+Backspace
Backspace
Backspace
Beginning of Line (first visible char/first column)
Home
Cancel AutoComplete
Escape
Close Current Buffer
Ctrl+W
Ctrl+F4
Copy
Ctrl+C
Ctrl+Insert
Cut
Ctrl+X
Shift+Delete
Ctrl+Shift+X
Delete
Delete
Delete Word Left
Ctrl+Backspace
Delete Word Right
Ctrl+Delete
End of Line
End
Go to End of Document
Ctrl+End
Go to End of word
Ctrl+E
Go to Line...
Ctrl+G
Go to Next Bookmark
F2
Go to Next Line
Down
Go to Previous Bookmark
Shift+F2
Go to Previous Line
Up
Go to Top of Document
Ctrl+Home
Insert Abbreviation Snippet by Name
Ctrl+T
Insert Newline
Return
Insert Newline (align with current line)
Ctrl+Shift+Return
Insert Newline (continue comments)
Shift+Return
Insert Newline (no favors)
Ctrl+Return
Insert Next Key as Literal Character
Ctrl+M
Join current and next lines
Ctrl+K, Ctrl+J
Move Back Part of Word
Alt+Right
Move Forward Part of Word
Alt+Left
Move Left One Character
Left
Move One Character Right
Right
Move One Word Left
Ctrl+Left
Move One Word Right
Ctrl+Right
Page Down
Page_Down
Page Up
Page_Up
Paste
Ctrl+V
Shift+Insert
Paste and Select
Ctrl+Shift+V
Redo
Ctrl+Y
Reflow paragraph(s)
Ctrl+Q
Remove All Bookmarks
Ctrl+Shift+F2
Repeat next keystroke N times
Ctrl+K, Ctrl+U
Scroll One Line Down
Ctrl+Down
Scroll One Line Up
Ctrl+Up
Select All
Ctrl+A
Select Next Character
Shift+Right
Select Next Word
Ctrl+Shift+Right
Select Page Down
Shift+Page_Down
Select Page Up
Shift+Page_Up
Select Previous Character
Shift+Left
Select Previous Word
Ctrl+Shift+Left
Select Rectangular Next Character
Alt+Shift+Right
Select Rectangular Page Down
Alt+Shift+Page_Down
Select Rectangular Page Up
Alt+Shift+Page_Up
Select Rectangular Previous Character
Alt+Shift+Left
Select Rectangular to Beginning of Line (first char/first column)
Alt+Shift+Home
Select Rectangular to End of Line
Alt+Shift+End
Select Rectangular to Next Line
Alt+Shift+Down
Select Rectangular to Previous Line
Alt+Shift+Up
Select to Beginning of Line (first char/first column)
Shift+Home
Select to Beginning of word
Ctrl+Shift+W
Select to End of Document
Ctrl+Shift+End
Select to End of Line
Shift+End
Select to Next Line
Shift+Down
Select to Previous Line
Shift+Up
Select to Top of Document
Ctrl+Shift+Home
Toggle Bookmark
Ctrl+F2
Toggle Overtype/Insert Mode
Insert
Trigger preceding AutoComplete list or CallTip
Ctrl+J
Undo
Ctrl+Z