From 7a2165121fe26534f008df0fea1bdc7e6af827db Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Fri, 9 Sep 2016 07:59:40 -0700 Subject: [PATCH] Roadmap update (#717) Update roadmap to reflect the real status of all commands. --- ROADMAP.md | 400 ++++++++++++++-------------- src/actions/actions.ts | 2 +- src/cmd_line/commands/setoptions.ts | 6 + 3 files changed, 202 insertions(+), 206 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 628d44a7..495a2b2f 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,7 +2,11 @@ :white_check_mark: - command done -:warning: - command partially implemented +:white_check_mark: :star: - command done with VS Code specific customization + +:warning: - some variations of the command are not supported + +:running: work in progress :arrow_down: - command is low priority; open an issue (or thumbs up the relevant issue) if you want to see it sooner @@ -107,41 +111,41 @@ Status | Command | Description ## Pattern searches -Status | Command | Description ----|--------|------------------------------ -:warning: | :1234: `/{pattern}[/[offset]]` | search forward for the Nth occurrence of {pattern} -:warning: | :1234: `?{pattern}[?[offset]]` | search backward for the Nth occurrence of {pattern} - | :1234: `/` | repeat last search, in the forward direction - | :1234: `?` | repeat last search, in the backward direction -:warning: | :1234: n | repeat last search -:warning: | :1234: N | repeat last search, in opposite direction +Status | Command | Description | Note +---|--------|------------|------------------ +:white_check_mark: :star: | :1234: `/{pattern}[/[offset]]` | search forward for the Nth occurrence of {pattern} | Currently we only support JavaScript Regex but not Vim's in-house Regex engine. +:white_check_mark: :star: | :1234: `?{pattern}[?[offset]]` | search backward for the Nth occurrence of {pattern} | Currently we only support JavaScript Regex but not Vim's in-house Regex engine. +:warning: | :1234: `/` | repeat last search, in the forward direction | {count} is not supported. +:warning: | :1234: `?` | repeat last search, in the backward direction | {count} is not supported. +:warning: | :1234: n | repeat last search | {count} is not supported. +:warning: | :1234: N | repeat last search, in opposite direction | {count} is not supported. :white_check_mark: | :1234: * | search forward for the identifier under the cursor :white_check_mark: | :1234: # | search backward for the identifier under the cursor - | :1234: g* | like "*", but also find partial matches - | :1234: g# | like "#", but also find partial matches +:arrow_down: | :1234: g* | like "*", but also find partial matches +:arrow_down: | :1234: g# | like "#", but also find partial matches :white_check_mark: | gd | goto local declaration of identifier under the cursor - | gD | goto global declaration of identifier under the cursor +:arrow_down: | gD | goto global declaration of identifier under the cursor ## Marks and motions Status | Command | Description ---|--------|------------------------------ :white_check_mark: | m{a-zA-Z} | mark current position with mark {a-zA-Z} - | `{a-z} | go to mark {a-z} within current file - | `{A-Z} | go to mark {A-Z} in any file - | `{0-9} | go to the position where Vim was previously exited - | `` | go to the position before the last jump - | `" | go to the position when last editing this file - | `[ | go to the start of the previously operated or put text - | `] | go to the end of the previously operated or put text - | `< | go to the start of the (previous) Visual area - | `> | go to the end of the (previous) Visual area - | `. | go to the position of the last change in this file - | '{a-zA-Z0-9[]'"<>.} | same as `, but on the first non-blank in the line - | :marks | print the active marks - | :1234: CTRL-O | go to Nth older position in jump list - | :1234: CTRL-I | go to Nth newer position in jump list - | :ju[mps] | print the jump list +:white_check_mark:| `{a-z} | go to mark {a-z} within current file +:white_check_mark:| `{A-Z} | go to mark {A-Z} in any file +:white_check_mark:| `{0-9} | go to the position where Vim was previously exited +:arrow_down:| `` | go to the position before the last jump +:arrow_down:| `" | go to the position when last editing this file +:arrow_down:| `[ | go to the start of the previously operated or put text +:arrow_down:| `] | go to the end of the previously operated or put text +:arrow_down:| `< | go to the start of the (previous) Visual area +:arrow_down:| `> | go to the end of the (previous) Visual area +:arrow_down:| `. | go to the position of the last change in this file +:arrow_down:| '{a-zA-Z0-9[]'"<>.} | same as `, but on the first non-blank in the line +:arrow_down:| :marks | print the active marks +:arrow_down:| :1234: CTRL-O | go to Nth older position in jump list +:arrow_down:| :1234: CTRL-I | go to Nth newer position in jump list +:arrow_down:| :ju[mps] | print the jump list ## Various motions @@ -151,55 +155,55 @@ Status | Command | Description :white_check_mark: |:1234: H | go to the Nth line in the window, on the first non-blank :white_check_mark: | M | go to the middle line in the window, on the first non-blank :white_check_mark: |:1234: L | go to the Nth line from the bottom, on the first non-blank - |:1234: go | go to Nth byte in the buffer - |:[range]go[to] [off] | go to [off] byte in the buffer +:arrow_down:|:1234: go | go to Nth byte in the buffer +:arrow_down:|:[range]go[to] [off] | go to [off] byte in the buffer ## Using tags Status | Command | Description ---|--------|------------------------------ - | :ta[g][!] {tag} | jump to tag {tag} - | :[count]ta[g][!] | jump to [count]'th newer tag in tag list - | CTRL-] | jump to the tag under cursor, unless changes have been made - | :ts[elect][!] [tag] | list matching tags and select one to jump to - | :tj[ump][!] [tag] | jump to tag [tag] or select from list when there are multiple matches - | :lt[ag][!] [tag] | jump to tag [tag] and add matching tags to the location list - | :tagsa | print tag list - | :1234: CTRL-T | jump back from Nth older tag in tag list - | :[count]po[p][!] | jump back from [count]'th older tag in tag list - | :[count]tn[ext][!] | jump to [count]'th next matching tag - | :[count]tp[revious][!] | jump to [count]'th previous matching tag - | :[count]tr[ewind][!] | jump to [count]'th matching tag - | :tl[ast][!] | jump to last matching tag - | :pt[ag] {tag} | open a preview window to show tag {tag} - | CTRL-W } | like CTRL-] but show tag in preview window - | :pts[elect] | like ":tselect" but show tag in preview window - | :ptj[ump] | like ":tjump" but show tag in preview window - | :pc[lose] | close tag preview window - | CTRL-W z | close tag preview window` +:arrow_down:| :ta[g][!] {tag} | jump to tag {tag} +:arrow_down:| :[count]ta[g][!] | jump to [count]'th newer tag in tag list +:arrow_down:| CTRL-] | jump to the tag under cursor, unless changes have been made +:arrow_down:| :ts[elect][!] [tag] | list matching tags and select one to jump to +:arrow_down:| :tj[ump][!] [tag] | jump to tag [tag] or select from list when there are multiple matches +:arrow_down:| :lt[ag][!] [tag] | jump to tag [tag] and add matching tags to the location list +:arrow_down:| :tagsa | print tag list +:arrow_down:| :1234: CTRL-T | jump back from Nth older tag in tag list +:arrow_down:| :[count]po[p][!] | jump back from [count]'th older tag in tag list +:arrow_down:| :[count]tn[ext][!] | jump to [count]'th next matching tag +:arrow_down:| :[count]tp[revious][!] | jump to [count]'th previous matching tag +:arrow_down:| :[count]tr[ewind][!] | jump to [count]'th matching tag +:arrow_down:| :tl[ast][!] | jump to last matching tag +:arrow_down:| :pt[ag] {tag} | open a preview window to show tag {tag} +:arrow_down:| CTRL-W } | like CTRL-] but show tag in preview window +:arrow_down:| :pts[elect] | like ":tselect" but show tag in preview window +:arrow_down:| :ptj[ump] | like ":tjump" but show tag in preview window +:arrow_down:| :pc[lose] | close tag preview window +:arrow_down:| CTRL-W z | close tag preview window` ## Scrolling Status | Command | Description ---|--------|------------------------------ -:x: | :1234: CTRL-E | window N lines downwards (default: 1) -:warning: | :1234: CTRL-D | window N lines Downwards (default: 1/2 window) -:x: | :1234: CTRL-F | window N pages Forwards (downwards) - :x: | :1234: CTRL-Y | window N lines upwards (default: 1) -:warning: | :1234: CTRL-U | window N lines Upwards (default: 1/2 window) -:x: | :1234: CTRL-B | window N pages Backwards (upwards) -:x: | z CR or zt | redraw, current line at top of window -:warning: | z. or zz | redraw, current line at center of window -:x: | z- or zb | redraw, current line at bottom of window +:running: | :1234: CTRL-E | window N lines downwards (default: 1) +:running: | :1234: CTRL-D | window N lines Downwards (default: 1/2 window) +:running: | :1234: CTRL-F | window N pages Forwards (downwards) +:running: | :1234: CTRL-Y | window N lines upwards (default: 1) +:running: | :1234: CTRL-U | window N lines Upwards (default: 1/2 window) +:running: | :1234: CTRL-B | window N pages Backwards (upwards) +:running: | z CR or zt | redraw, current line at top of window +:running: | z. or zz | redraw, current line at center of window +:running: | z- or zb | redraw, current line at bottom of window These only work when 'wrap' is off: Status | Command | Description ---|--------|------------------------------ - :x: | :1234: zh | scroll screen N characters to the right - :x: | :1234: zl | scroll screen N characters to the left - :x: | :1234: zH | scroll screen half a screenwidth to the right -:x: | :1234: zL | scroll screen half a screenwidth to the left + :running: | :1234: zh | scroll screen N characters to the right + :running: | :1234: zl | scroll screen N characters to the left + :running: | :1234: zH | scroll screen half a screenwidth to the right +:running: | :1234: zL | scroll screen half a screenwidth to the left ## Inserting text @@ -217,8 +221,8 @@ in Visual block mode: Status | Command | Description ---|--------|------------------------------ - | I | insert the same text in front of all the selected lines - | A | append the same text after all the selected lines +:white_check_mark:| I | insert the same text in front of all the selected lines +:white_check_mark:| A | append the same text after all the selected lines ## Insert mode keys @@ -242,26 +246,26 @@ Status | Command | Description ## Special keys in Insert mode -Status | Command | Description ----|--------|------------------------------ - | CTRL-V {char}.. | insert character literally, or enter decimal byte value -:warning: | NL or CR or CTRL-M or CTRL-J | begin new line +Status | Command | Description | Note +---|--------|-----------|------------------- +:arrow_down: |CTRL-V {char}.. | insert character literally, or enter decimal byte value +:warning: | NL or CR or CTRL-M or CTRL-J | begin new line | CTRL-M and CTRL-J are not supported yet :white_check_mark: | CTRL-E | insert the character from below the cursor :white_check_mark: | CTRL-Y | insert the character from above the cursor - | CTRL-A | insert previously inserted text + | CTRL-A | insert previously inserted text | CTRL-@ | insert previously inserted text and stop Insert mode :white_check_mark: | CTRL-R {0-9a-z%#:.-="} | insert the contents of a register - | CTRL-N | insert next match of identifier before the cursor - | CTRL-P | insert previous match of identifier before the cursor - | CTRL-X ... | complete the word before the cursor in various ways +:arrow_down:| CTRL-N | insert next match of identifier before the cursor +:arrow_down:| CTRL-P | insert previous match of identifier before the cursor +:arrow_down:| CTRL-X ... | complete the word before the cursor in various ways :white_check_mark: | BS or CTRL-H | delete the character before the cursor :white_check_mark: | Del | delete the character under the cursor :white_check_mark: | CTRL-W | delete word before the cursor :white_check_mark: | CTRL-U | delete all entered characters in the current line :white_check_mark: | CTRL-T | insert one shiftwidth of indent in front of the current line :white_check_mark: | CTRL-D | delete one shiftwidth of indent in front of the current line - | 0 CTRL-D | delete all indent in the current line - | ^ CTRL-D | delete all indent in the current line, restore indent in next line + | 0 CTRL-D | delete all indent in the current line + | ^ CTRL-D | delete all indent in the current line, restore indent in next line ## Digraphs @@ -274,8 +278,8 @@ Status | Command | Description Status | Command | Description ---|--------|------------------------------ - | :r [file] | insert the contents of [file] below the cursor - | :r! {command} | insert the standard output of {command} below the cursor +:arrow_down:| :r [file] | insert the contents of [file] below the cursor +:arrow_down:| :r! {command} | insert the standard output of {command} below the cursor ## Deleting text @@ -296,16 +300,16 @@ Status | Command | Description ## Copying and moving text -Status | Command | Description ----|--------|------------------------------ -:warning: | "{char} | use register {char} for the next delete, yank, or put +Status | Command | Description | Note +---|--------|-------------|----------------- +:running: | "{char} | use register {char} for the next delete, yank, or put | read only registers are not supported yet :white_check_mark: | "* | use register `*` to access system clipboard | :reg | show the contents of all registers | :reg {arg} | show the contents of registers mentioned in {arg} :white_check_mark: | :1234: y{motion} | yank the text moved over with {motion} into a register :white_check_mark: | {visual}y | yank the highlighted text into a register :white_check_mark: | :1234: yy | yank N lines into a register -:warning: | :1234: Y | yank N lines into a register +:white_check_mark: | :1234: Y | yank N lines into a register :white_check_mark: | :1234: p | put a register after the cursor position (N times) :white_check_mark: | :1234: P | put a register before the cursor position (N times) :white_check_mark: | :1234: ]p | like p, but adjust indent to current line @@ -315,28 +319,27 @@ Status | Command | Description ## Changing text -Status | Command | Description ----|--------|------------------------------ -:warning: | :1234: r{char} | replace N characters with {char} - | :1234: gr{char} | replace N characters without affecting layout -:warning: | :1234: R | enter Replace mode (repeat the entered text N times) - | :1234: gR | enter virtual Replace mode: Like Replace mode but without affecting layout - | {visual}r{char} | in Visual block mode: Replace each char of the selected text with {char} +Status | Command | Description | Note +---|--------|------------|------------------ +:running: | :1234: r{char} | replace N characters with {char} | {count} is not supported yet +:arrow_down:| :1234: gr{char} | replace N characters without affecting layout +:running: | :1234: R | enter Replace mode (repeat the entered text N times) | {count} is not supported yet +:arrow_down:| :1234: gR | enter virtual Replace mode: Like Replace mode but without affecting layout +:arrow_down:| {visual}r{char} | in Visual block mode: Replace each char of the selected text with {char} (change = delete text and enter Insert mode) Status | Command | Description ---|--------|------------------------------ -:warning: | :1234: c{motion} | change the text that is moved over with {motion} -:white_check_mark: | {visual}c | change the highlighted text -:warning: | :1234: cc | change N lines -:warning: | :1234: S | change N lines -:warning: | :1234: C | change to the end of the line (and N-1 more lines) - | :1234: s | change N characters - | {visual}c | in Visual block mode: Change each of the selected lines with the entered text - | {visual}C | in Visual block mode: Change each of the selected lines until end-of-line with the entered text -:warning: | :1234: ~ | switch case for N characters and advance cursor -:white_check_mark: | {visual}~ | switch case for highlighted text +:white_check_mark: | :1234: c{motion} | change the text that is moved over with {motion} +:white_check_mark: | {visual}c | change the highlighted text +:white_check_mark: | :1234: cc | change N lines +:white_check_mark: | :1234: S | change N lines +:white_check_mark: | :1234: C | change to the end of the line (and N-1 more lines) +:white_check_mark: | :1234: s | change N characters +:white_check_mark: | {visual}c | in Visual block mode: Change each of the selected lines with the entered text +:white_check_mark: | {visual}C | in Visual block mode: Change each of the selected lines until end-of-line with the entered text +:white_check_mark: | switch case for highlighted text :white_check_mark: | {visual}u | make highlighted text lowercase :white_check_mark: | {visual}U | make highlighted text uppercase :white_check_mark: | g~{motion} | switch case for the text that is moved over with {motion} @@ -350,26 +353,26 @@ Status | Command | Description :white_check_mark: | :1234: << | move N lines one shiftwidth left :white_check_mark: | :1234: >{motion} | move the lines that are moved over with {motion} one shiftwidth right :white_check_mark: | :1234: >> | move N lines one shiftwidth right - | :1234: gq{motion}| format the lines that are moved over with {motion} to 'textwidth' length - | :[range]ce[nter] [width] | center the lines in [range] - | :[range]le[ft] [indent] | left-align the lines in [range] (with [indent]) - | :[range]ri[ght] [width] | right-align the lines in [range] +:arrow_down:| :1234: gq{motion}| format the lines that are moved over with {motion} to 'textwidth' length +:arrow_down:| :[range]ce[nter] [width] | center the lines in [range] +:arrow_down:| :[range]le[ft] [indent] | left-align the lines in [range] (with [indent]) +:arrow_down:| :[ranee]ri[ght] [width] | right-align the lines in [range] ## Complex changes -Status | Command | Description ----|--------|------------------------------ - | :1234: `!{motion}{command}` | filter the lines that are moved over through {command} - | :1234: `!!{command}` | filter N lines through {command} - | `{visual}!{command}` | filter the highlighted lines through {command} - | `:[range]! {command}` | filter [range] lines through {command} +Status | Command | Description | Note +---|--------|------------------|------------ +:arrow_down:| :1234: `!{motion}{command}` | filter the lines that are moved over through {command} +:arrow_down:| :1234: `!!{command}` | filter N lines through {command} +:arrow_down:| `{visual}!{command}` | filter the highlighted lines through {command} +:arrow_down:| `:[range]! {command}` | filter [range] lines through {command} :white_check_mark: | :1234: ={motion} | filter the lines that are moved over through 'equalprg' - | :1234: == | filter N lines through 'equalprg' +:arrow_down:| :1234: == | filter N lines through 'equalprg' :white_check_mark: | {visual}= | filter the highlighted lines through 'equalprg' -:warning: | :[range]s[ubstitute]/{pattern}/{string}/[g][c] | substitute {pattern} by {string} in [range] lines; with [g], replace all occurrences of {pattern}; with [c], confirm each replacement - | :[range]s[ubstitute] [g][c] | repeat previous ":s" with new range and options - | & | Repeat previous ":s" on current line without options - :arrow_down: | :[range]ret[ab][!] [tabstop] | set 'tabstop' to new value and adjust white space accordingly +:white_check_mark: :star: :warning: | :[range]s[ubstitute]/{pattern}/{string}/[g][c] | substitute {pattern} by {string} in [range] lines; with [g], replace all occurrences of {pattern}; with [c], confirm each replacement | Currently we only support JavaScript Regex and only options `gi` are implemented +:arrow_down:| :[range]s[ubstitute] [g][c] | repeat previous ":s" with new range and options +:arrow_down:| & | Repeat previous ":s" on current line without options +:arrow_down:| :[range]ret[ab][!] [tabstop] | set 'tabstop' to new value and adjust white space accordingly ## Visual mode @@ -377,12 +380,11 @@ Status | Command | Description ---|--------|------------------------------ :white_check_mark: | v | start highlighting characters :white_check_mark: | V | start highlighting linewise - | CTRL-V | start highlighting blockwise - | o | exchange cursor position with start of highlighting - | gv | start highlighting on previous visual area +:white_check_mark:| o | exchange cursor position with start of highlighting +:arrow_down: | gv | start highlighting on previous visual area :white_check_mark: | v | highlight characters or stop highlighting :white_check_mark: | V | highlight linewise or stop highlighting - | CTRL-V | highlight blockwise or stop highlighting +:white_check_mark: | CTRL-V | highlight blockwise or stop highlighting ## Text objects (only in Visual mode or after an operator) @@ -418,15 +420,15 @@ Status | Command | Description Status | Command | Description ---|--------|------------------------------ :white_check_mark: | :1234: . | repeat last change (with count replaced with N) - | q{a-z} | record typed characters into register {a-z} - | q{A-Z} | record typed characters, appended to register {a-z} - | q | stop recording - | :1234: @{a-z} | execute the contents of register {a-z} (N times) - | :1234: @@ | repeat previous @{a-z} (N times) - | :@{a-z} | execute the contents of register {a-z} as an Ex command - | :@@ | repeat previous :@{a-z} - | :[range]g[lobal]/{pattern}/[cmd] | execute Ex command [cmd] (default: ":p") on the lines within [range] where {pattern} matches - | :[range]g[lobal]!/{pattern}/[cmd] | execute Ex command [cmd] (default: ":p") on the lines within [range] where {pattern} does NOT match +:arrow_down:| q{a-z} | record typed characters into register {a-z} +:arrow_down:| q{A-Z} | record typed characters, appended to register {a-z} +:arrow_down:| q | stop recording +:arrow_down:| :1234: @{a-z} | execute the contents of register {a-z} (N times) +:arrow_down:| :1234: @@ | repeat previous @{a-z} (N times) +:arrow_down:| :@{a-z} | execute the contents of register {a-z} as an Ex command +:arrow_down:| :@@ | repeat previous :@{a-z} +:arrow_down:| :[range]g[lobal]/{pattern}/[cmd] | execute Ex command [cmd] (default: ":p") on the lines within [range] where {pattern} matches +:arrow_down:| :[range]g[lobal]!/{pattern}/[cmd] | execute Ex command [cmd] (default: ":p") on the lines within [range] where {pattern} does NOT match :arrow_down: | :so[urce] {file} | read Ex commands from {file} :arrow_down: | :so[urce]! {file} | read Vim commands from {file} :arrow_down: | :sl[eep] [sec] | don't do anything for [sec] seconds @@ -434,30 +436,30 @@ Status | Command | Description ## options -Status | Command | Description ----|--------|------------------------------ - | :se[t] | show all modified options - | :se[t] all | show all non-termcap options - | :se[t] termcap | show all termcap options +Status | Command | Description | Note +---|--------|---------|--------------------- +:arrow_down: | :se[t] | show all modified options +:arrow_down: | :se[t] all | show all non-termcap options +:arrow_down: | :se[t] termcap | show all termcap options :white_check_mark: | :se[t] {option} | set boolean option (switch it on), show string or number option :white_check_mark: | :se[t] no{option} | reset boolean option (switch it off) - | :se[t] inv{option} |invert boolean option +:white_check_mark: | :se[t] inv{option} |invert boolean option :white_check_mark: | :se[t] {option}={value} | set string/number option to {value} - | :se[t] {option}+={value} | append {value} to string option, add {value} to number option - | :se[t] {option}-={value} | remove {value} to string option, subtract {value} from number option +:white_check_mark: | :se[t] {option}+={value} | append {value} to string option, add {value} to number option +:running: | :se[t] {option}-={value} | remove {value} to string option, subtract {value} from number option | We don't support string option here yet. | :se[t] {option}? | show value of {option} - | :se[t] {option}& | reset {option} to its default value - | :setl[ocal] | like ":set" but set the local value for options that have one - | :setg[lobal] | like ":set" but set the global value of a local option - | :fix[del] | set value of 't_kD' according to value of 't_kb' - | :opt[ions] | open a new window to view and set options, grouped by functionality, a one line explanation and links to the help +:arrow_down: | :se[t] {option}& | reset {option} to its default value +:arrow_down: | :setl[ocal] | like ":set" but set the local value for options that have one +:arrow_down: | :setg[lobal] | like ":set" but set the global value of a local option +:arrow_down: | :fix[del] | set value of 't_kD' according to value of 't_kb' +:arrow_down: | :opt[ions] | open a new window to view and set options, grouped by functionality, a one line explanation and links to the help Since the list is too long, now we just put those already supported options here. Status | Command | Default Value | Description ---|--------|-------|------------------------------ :white_check_mark:| tabstop (ts) | 4. we use Code's default value `tabSize` instead of Vim | number of spaces that <Tab> in file uses -:white_check_mark:| :white_check_mark:| hlsearch (hls) | false | When there is a previous search pattern, highlight all its matches. +:white_check_mark:| hlsearch (hls) | false | When there is a previous search pattern, highlight all its matches. :white_check_mark:| ignorecase (ic) | true | Ignore case in search patterns. :white_check_mark:| smartcase (scs) | true | Override the 'ignorecase' option if the search pattern contains upper case characters. :white_check_mark:| iskeyword (isk) | `@,48-57,_,128-167,224-235` | keywords contain alphanumeric characters and '_'. If there is no user setting for `iskeyword`, we use `editor.wordSeparators` properties. @@ -469,58 +471,59 @@ Status | Command | Default Value | Description ## Undo/Redo commands -Status | Command | Default Value | Description +Status | Command | Description | Note ---|--------|-------|------------------------------ -:warning: | :1234: u | undo last N changes -:warning: | :1234: CTRL-R | redo last N undone changes -| U | restore last changed line +:running: | :1234: u | undo last N changes | Current implementation may not cover every case perfectly. +:running: | :1234: CTRL-R | redo last N undone changes | As above. + | U | restore last changed line ## External commands -Status | Command | Default Value | Description ----|--------|-------|------------------------------ +Status | Command | Description +---|--------|----------------- :arrow_down: | :sh[ell] | start a shell :arrow_down: | :!{command} | execute {command} with a shell :arrow_down: | K | lookup keyword under the cursor with 'keywordprg' program (default: "man") ## Ex rangs -Status | Command | Default Value | Description +Status | Command | Description ---|--------|-------|------------------------------ -:white_check_mark: | , | separates two line numbers -| ; | idem, set cursor to the first line number before interpreting the second one +:white_check_mark: | , | separates two line numbers| + | ; | idem, set cursor to the first line number before interpreting the second one :white_check_mark: | {number} | an absolute line number :white_check_mark: | . | the current line :white_check_mark: | $ | the last line in the file :white_check_mark: | % | equal to 1,$ (the entire file) -| * | equal to '<,'> (visual area) -| 't | position of mark t -| /{pattern}[/] | the next line where {pattern} matches -| ?{pattern}[?] | the previous line where {pattern} matches + | * | equal to '<,'> (visual area) + | 't | position of mark t + | /{pattern}[/] | the next line where {pattern} matches + | ?{pattern}[?] | the previous line where {pattern} matches :white_check_mark: | +[num] | add [num] to the preceding line number (default: 1) :white_check_mark: | -[num] | subtract [num] from the preceding line number (default: 1) ## Editing a file -Status | Command | Description ----|--------|------------------------------ -:warning: | :e[dit] {file} | Edit {file}. We will open file in a new Tab of current Grouped Editor instead of opening in current tab. +Status | Command | Description | Note +---|--------|------------------|----------- +:white_check_mark: :star: | :e[dit] {file} | Edit {file}. | We will open file in a new Tab of current Grouped Editor instead of opening in current tab. ## Multi-window commands -Status | Command | Description ----|--------|------------------------------ -:warning: | :e[dit] {file} | Edit {file}. We will open file in a new Tab of current Grouped Editor instead of opening in current tab. -:warning: | <ctrl-w> hl | Switching between windows. As we don't have the concept of Window in VS Code, we are mapping these commands to switching between Grouped Editors. -:x: | :sp {file} | Split current window in two. VS Code doesn't support split Window horizontally. - | :vsp {file} | Split vertically current window in two. -:x: | :new | Create a new window horizontally and start editing an empty file in it. - | :vne[w] | Create a new window vertically and start editing an empty file in it. +Status | Command | Description | Note +---|--------|-----------------|------------- +:white_check_mark: :star: | :e[dit] {file} | Edit {file}. | We will open file in a new Tab of current Grouped Editor instead of opening in current tab. +:white_check_mark: :star: | <ctrl-w> hl | Switching between windows. | As we don't have the concept of Window in VS Code, we are mapping these commands to switching between Grouped Editors. +:x: | :sp {file} | Split current window in two. | VS Code doesn't support split Window horizontally. +:white_check_mark: :star: | :vsp {file} | Split vertically current window in two. | VS Code only supports three vertical window at most and that's the limitation of this command. +:x: | :new | Create a new window horizontally and start editing an empty file in it. | VS Code doesn't support split Window horizontally. +:white_check_mark: :star: | :vne[w] | Create a new window vertically and start editing an empty file in it. | VS Code only supports three vertical window at most and that's the limitation of this command. + ## Tabs -Status | Command | Description ----|--------|------------------------------ +Status | Command | Description | Note +---|--------|------------------|------------ :white_check_mark: | :tabn[ext] :1234: | Go to next tab page or tab page {count}. The first tab page has number one. | {count}<C-PageDown>, {count}gt | Same as above :white_check_mark: | :tabp[revious] :1234: | Go to the previous tab page. Wraps around from the first one to the last one. @@ -528,15 +531,15 @@ Status | Command | Description | {count}<C-PageUp>, {count}gT | Same as above :white_check_mark: | :tabfir[st] | Go to the first tab page. :white_check_mark: | :tabl[ast] | Go to the last tab page. -:warning: | :tabe[dit] {file} | Open a new tab page with an empty window, after the current tab page - | :[count]tabe[dit], :[count]tabnew | Same as above -:warning: | :tabnew {file} | Open a new tab page with an empty window, after the current tab page - | :[count]tab {cmd} | Execute {cmd} and when it opens a new window open a new tab page instead. -:warning: | :tabc[lose][!] :1234: | Close current tab page or close tab page {count}. -:warning: | :tabo[nly][!] | Close all other tab pages. +:running: | :tabe[dit] {file} | Open a new tab page with an empty window, after the current tab page | {file} is not supported yet. +:arrow_down: | :[count]tabe[dit], :[count]tabnew | Same as above | [count] is not supported yet. +:running: | :tabnew {file} | Open a new tab page with an empty window, after the current tab page | {file} is not supported yet. +:arrow_down:| :[count]tab {cmd} | Execute {cmd} and when it opens a new window open a new tab page instead. +:running: | :tabc[lose][!] :1234: | Close current tab page or close tab page {count}. | `!` is not supported yet. +:running: | :tabo[nly][!] | Close all other tab pages. | `!` is not supported yet. :white_check_mark: | :tabm[ove] [N] | Move the current tab page to after tab page N. -:x: | :tabs | List the tab pages and the windows they contain. - | :tabd[o] {cmd} | Execute {cmd} in each tab page. +:arrow_down:| :tabs | List the tab pages and the windows they contain. | You can always use Code's built-in shortcut: `cmd/ctrl+p` +:arrow_down:| :tabd[o] {cmd} | Execute {cmd} in each tab page. ## Folding ### Fold methods @@ -546,45 +549,32 @@ The folding method can be set with the 'foldmethod' option. This is currently no Status | Command | Description ---|--------|------------------------------ -:x: | zf{motion} or {Visual}zf | Operator to create a fold. -:x: | zF | Create a fold for [count] lines. Works like "zf". -:x: | zd | Delete one fold at the cursor. -:x: | zD | Delete folds recursively at the cursor. -:x: | zE | Eliminate all folds in the window. +:arrow_down: | zf{motion} or {Visual}zf | Operator to create a fold. +:arrow_down: | zF | Create a fold for [count] lines. Works like "zf". +:arrow_down: | zd | Delete one fold at the cursor. +:arrow_down: | zD | Delete folds recursively at the cursor. +:arrow_down: | zE | Eliminate all folds in the window. :white_check_mark: | zo | Open one fold under the cursor.When a count is given, that many folds deep will be opened. :white_check_mark: | zO | Open all folds under the cursor recursively. :white_check_mark: | zc | Close one fold under the cursor. When a count is given, that many folds deep are closed. :white_check_mark:| zC | Close all folds under the cursor recursively. -:x: | za | When on a closed fold: open it. When on an open fold: close it and set 'foldenable'. -:x: | zA | When on a closed fold: open it recursively. When on an open fold: close it recursively and set 'foldenable'. -:x: | zv | View cursor line: Open just enough folds to make the line in which the cursor is located not folded. -:x: | zx | Update folds: Undo manually opened and closed folds: re-apply 'foldlevel', then do "zv": View cursor line. -:x: | zX | Undo manually opened and closed folds -:x: | zm | Fold more: Subtract one from 'foldlevel'. +:arrow_down: | za | When on a closed fold: open it. When on an open fold: close it and set 'foldenable'. +:arrow_down: | zA | When on a closed fold: open it recursively. When on an open fold: close it recursively and set 'foldenable'. +:arrow_down: | zv | View cursor line: Open just enough folds to make the line in which the cursor is located not folded. +:arrow_down: | zx | Update folds: Undo manually opened and closed folds: re-apply 'foldlevel', then do "zv": View cursor line. +:arrow_down: | zX | Undo manually opened and closed folds +:arrow_down: | zm | Fold more: Subtract one from 'foldlevel'. :white_check_mark: | zM | Close all folds: set 'foldlevel' to 0. 'foldenable' will be set. -:x: | zr | Reduce folding: Add one to 'foldlevel'. +:arrow_down: | zr | Reduce folding: Add one to 'foldlevel'. :white_check_mark: | zR | Open all folds. This sets 'foldlevel' to highest fold level. - | zn | Fold none: reset 'foldenable'. All folds will be open. - | zN | Fold normal: set 'foldenable'. All folds will be as they were before. - | zi | Invert 'foldenable'. -:x: | [z | Move to the start of the current open fold. -:x: | ]z | Move to the end of the current open fold. -:x: | zj | Move downwards to the start of the next fold. -:x: | zk | Move upwards to the end of the previous fold. +:arrow_down: | zn | Fold none: reset 'foldenable'. All folds will be open. +:arrow_down: | zN | Fold normal: set 'foldenable'. All folds will be as they were before. +:arrow_down: | zi | Invert 'foldenable'. +:arrow_down: | [z | Move to the start of the current open fold. +:arrow_down: | ]z | Move to the end of the current open fold. +:arrow_down: | zj | Move downwards to the start of the next fold. +:arrow_down: | zk | Move upwards to the end of the previous fold. ### Fold options -Status | Command | Description ----|--------|------------------------------ -:x: | foldlevel | 'foldlevel' is a number option: The higher the more folded regions are open. -:x: | foldtext | 'foldtext' is a string option that specifies an expression. This expression is evaluated to obtain the text displayed for a closed fold. -:x: | foldcolumn | 'foldcolumn' is a number, which sets the width for a column on the side of the window to indicate folds. - | foldenable fen | Open all folds while not set. -:x: | foldexpr fde | Expression used for "expr" folding. -:x: | foldignore fdi | Characters used for "indent" folding. -:x: | foldmarker fmr | Defined markers used for "marker" folding. -:x: | foldmethod fdm | Name of the current folding method. -:x: | foldminlines fml | Minimum number of screen lines for a fold to be displayed closed. -:x: | foldnestmax fdn | Maximum nesting for "indent" and "syntax" folding. -:x: | foldopen fdo | Which kinds of commands open closed folds. -:x: | foldclose fcl | When the folds not under the cursor are closed. +Currently we don't support any fold option and we are following Code configurations. \ No newline at end of file diff --git a/src/actions/actions.ts b/src/actions/actions.ts index c49a23d2..afe542cf 100644 --- a/src/actions/actions.ts +++ b/src/actions/actions.ts @@ -2953,7 +2953,7 @@ class ActionChangeInVisualBlockMode extends BaseCommand { @RegisterAction class ActionChangeToEOLInVisualBlockMode extends BaseCommand { modes = [ModeName.VisualBlock]; - keys = ["C"]; +keys = ["C"]; public async exec(position: Position, vimState: VimState): Promise { const deleteOperator = new DeleteOperator(); diff --git a/src/cmd_line/commands/setoptions.ts b/src/cmd_line/commands/setoptions.ts index e7b89577..369406d9 100644 --- a/src/cmd_line/commands/setoptions.ts +++ b/src/cmd_line/commands/setoptions.ts @@ -80,6 +80,12 @@ export class SetOptionsCommand extends node.CommandBase { case SetOptionOperator.Invert: Configuration.getInstance()[this._arguments.name] = !Configuration.getInstance()[this._arguments.name]; break; + case SetOptionOperator.Append: + Configuration.getInstance()[this._arguments.name] += this._arguments.value!; + break; + case SetOptionOperator.Subtract: + Configuration.getInstance()[this._arguments.name] -= this._arguments.value! as number; + break; default: break; }