Fork
This is a fork of the original, that fixes decorations disappearing in VSCode version 1.40. Here until activity on the original repo resumes.
Features
MetaGo provides fast cursor movement/selection for keyboard focused users:
- go to any character on screen with 3(most cases) or 4 times key press.
- using bookmarks to jump between files.
- moving cursor up/down between blank lines.
- select code block when moving cursor while hold shift key.
- scroll the active line (contains cursor) to the screen Top/Middle/Bottom.
- select line up/down.
- compatible with the vim plugins. :smile:
if you like this tool, and using Windows, you may also be interested in my other tool: metaKeyboard. :smirk:
go to any character on screen
- type Alt+; to tell I want to go somewhere.
- type the character(stands for location) on screen, metaGo will show you some codes encoded with character.
- type the code characters, you will go to that location.
at any time press ESC to cancel
the Alt+; command will trigger the metaGo.goto command, the cursor will be placed after the target character;
metaGo.gotoBefore(default: Ctrl+Alt+;) and metaGo.gotoInteli commands are also provided.
metaGo.gotoInteli intelligently set cursor position after navigation:
if the target is at the begin of the word, the cursor will be set before target character, otherwise after it;
The 'word' is defined as a group of all alphanumeric or punctuation characters.
MetaGo also provide commands that set cursor before/after the character after navigation, you can config the shortcut by yourself.
- type Alt+; and then press Enter to directly go to the one above;
- type Alt+; and then press Space to directly go to the one below;
select to any character on screen from cursor
- type Alt+Shift+; to tell I want to select to somewhere.
- type the character(stands for location) on screen, metaGo will show you some codes encoded with character.
- type the code characters, you will select to that location.
- repeat 1-3 to adjust your current selection.
at any time press ESC to cancel
features highlight
- code characters are based on priority, the easier to type character has higher priority. i.e. 'k','j', and code characters are configurable, if you like.
- code character decorator is encoded with 1 or 2 characters, the code characters around cursor are easier to type.
- only encode characters on viewable screen area, so metaGo is faster.
- even though your cursor is out of your viewable screen, metaGo still works!
- work with vim plugin
navigate between files using bookmarks
- Alt+ ' to set a bookmark at the cursor location.
- Alt+/ to list the bookmarks and show management menu.
- press cc and enter to clear all the bookmarks
- press c and enter to clear all the bookmarks in current document.
- press n and enter to jump to the next bookmark.
- press p and enter to jump to the previous bookmark.
- Alt+m is the default shortcut to scroll current line to screen center.
- Alt+t is the default shortcut to scroll current line to screen top.
- Alt+b is the default shortcut to scroll current line to screen bottom.
moving cursor up/down between blank lines
- Alt+Home(default shortcut) to move cursor to the blank line above.
- Alt+End(default shortcut) to move cursor to the blank line below.
- Alt+Shift+Home(default shortcut) to select from the cursor to the blank line above.
- Alt+Shift+End(default shortcut) to select from the cursor to the blank line below.
select line up/down
- Ctrl+i to select line up.
- Ctrl+shift+i to select line down.
jump to bracket
- extend the default jumpToBracket command.
- ctrl+shift+\: jump to the begin bracket that contains the cursor. Press the shortcut again jump to the end bracket.
Requirements
If you have any requirements or dependencies, add a section describing those and how to install and configure them.
Default Shortcut Settings
{
"command": "metaGo.input.cancel",
"key": "escape",
"when": "editorTextFocus && metaGoInput"
},
{
"command": "metaGo.goto",
"key": "alt+;",
"when": "editorTextFocus",
"description": "goto the character and set the cursor after the character"
},
{
"command": "metaGo.selection",
"key": "alt+shift+;",
"when": "editorTextFocus"
},
{
"command": "metaGo.selectLineUp",
"key": "ctrl+shift+i",
"mac": "cmd+shift+i",
"when": "editorTextFocus"
},
{
"command": "metaGo.selectLineDown",
"key": "ctrl+i",
"mac": "cmd+i",
"when": "editorTextFocus"
},
{
"command": "metaGo.currentLineToCenter",
"key": "alt+m",
"when": "editorTextFocus"
},
{
"command": "metaGo.currentLineToBottom",
"key": "alt+b",
"when": "editorTextFocus"
},
{
"command": "metaGo.currentLineToTop",
"key": "alt+t",
"when": "editorTextFocus"
},
{
"command": "metaGo.spaceBlockMoveUp",
"key": "alt+home",
"when": "editorTextFocus"
},
{
"command": "metaGo.spaceBlockSelectUp",
"key": "alt+shift+home",
"when": "editorTextFocus"
},
{
"command": "metaGo.spaceBlockMoveDown",
"key": "alt+end",
"when": "editorTextFocus"
},
{
"command": "metaGo.spaceBlockSelectDown",
"key": "alt+shift+end",
"when": "editorTextFocus"
},
{
"command": "metaGo.bookmark.toggle",
"key": "alt+'",
"when": "editorTextFocus"
},
{
"command": "metaGo.bookmark.view",
"key": "alt+/",
"when": "editorTextFocus"
},
{
"command": "metaGo.jumpToBracket",
"key": "ctrl+shift+\\",
"when": "editorTextFocus"
}
To configure the keybinding, add the following lines to keybindings.json (File -> Preferences -> Keyboard Shortcuts):
extension Settings
"metaGo.decoration.backgroundColor": {
"type": "string",
"default": "Chartreuse,yellow",
"description": "one and two character decorator background color"
},
"metaGo.decoration.backgroundOpacity": {
"type": "string",
"default": "0.8"
},
"metaGo.decoration.borderColor": {
"type": "string",
"default": "#1e1e1e"
},
"metaGo.decoration.color": {
"type": "string",
"default": "blue"
},
"metaGo.decoration.width": {
"type": "number",
"default": 9
},
"metaGo.decoration.height": {
"type": "number",
"default": 15
},
"metaGo.decoration.fontSize": {
"type": "number",
"default": 13
},
"metaGo.decoration.x": {
"type": "number",
"default": 1
},
"metaGo.decoration.y": {
"type": "number",
"default": 12
},
"metaGo.decoration.fontWeight": {
"type": "string",
"default": "bold"
},
"metaGo.decoration.fontFamily": {
"type": "string",
"default": "Consolas"
},
"metaGo.decoration.upperCase": {
"type": "boolean",
"default": false
},
"metaGo.decoration.characters": {
"type": "string",
"default": "k, j, d, f, l, s, a, h, g, i, o, n, u, r, v, c, w, e, x, m, b, p, q, t, y, z"
},
"metaGo.jumper.findInSelection": {
"type": "string",
"default": "off"
},
"metaGo.jumper.targetIgnoreCase": {
"type": "boolean",
"default": true
},
"metaGo.jumper.timeout": {
"type": "number",
"default": "12",
"description": "timeout value in seconds to cancel metaGo jumper commands."
},
"metaGo.jumper.findAllMode": {
"type": "string",
"default": "on",
"description": "on: find all characters on viewable screen area; off: only search the first character of the words that are separated by chars configured in 'wordSeparatorPattern'"
},
"metaGo.jumper.wordSeparatorPattern": {
"type": "string",
"default": "[ ,-.{_(\"'<\\/[+]"
},
"metaGo.jumper.screenLineRange": {
"type": "number",
"default": 50,
"description": "how many lines could be showed in one screen"
},
"metaGo.bookmark.saveBookmarksInProject": {
"type": "boolean",
"default": false,
"description": "Allow bookmarks to be saved (and restored) locally in the opened Project/Folder instead of VS Code"
},
"metaGo.bookmark.gutterIconPath": {
"type": "string",
"default": "",
"description": "Path to another image to be presented as Bookmark"
}
Release Note:
v2.11.0: minor changes on readme.md according to feedback in issues.