Skip to content

feat(FakeVim): Add vim docs and custom command docs #84

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 20 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
title: "General"
title: "Information"
weight: 1000
description: Information regarding terminologies or methodologies used in Documentations
---

### Temporary Directory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "General"
title: "Information"
weight: 1000
---

Expand Down
154 changes: 154 additions & 0 deletions content/docs/General/Vim Commands/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
---
title: "Vim Commands"
weight: 1000
description: List of supported vim commands in Vim Emulation
---

### Vim Commands

#### Supported Features

Most of supported commands can be followed by motion command or executed in visual mode, work with registers or can be prefixed with number of repetitions.

Here is list of emulated commands with description where it can diverge from Vim in functionality.

#### Modes

- normal
- insert and replace
- visual
- command line (`:`)

#### Normal and Visual Modes

- basic movement -- `h`/`j`/`k`/`l`, `<C-U>`, `<C-D>`, `<C-F>`, `<C-B>`, `gg`, `G`, `0`, `^`, `$` etc.
- word movement -- `w`, `e`, `b` etc.
- "inner/a" movement -- `ciw`, `3daw`, `ya{` etc.
- `f`, `t` movement
- `[`, `]` movement
- `{`, `}` -- paragraph movement
- delete/change/yank/paste with register
- undo/redo
- `<C-A>`, `<C-X>` -- increase or decrease number in decimal/octal/hexadecimal format (e.g. `128<C-A>` on or before "0x0ff" changes it to "0x17f")
- `.` -- repeat last change
- `/search`, `?search`, `*`, `#`, `n`, `N` -- most of regular expression syntax used in Vim except `\<` and `\>` just is the same as `\b` in QRegExp
- `@`, `q` (macro recording, execution) -- special keys are saved as `<S-Left>`
- marks
- `gv` -- last visual selection; can differ if text is edited around it
- indentation -- `=`, `<<`, `>>` etc. with movement, count and in visual mode
- "to upper/lower" -- `~`, `gU`, `gu` etc.
- `i`, `a`, `o`, `I`, `A`, `O` -- enter insert mode
- scroll window -- `zt`, `zb`, `zz` etc.
- wrap line movement -- `gj`, `gk`, `g0`, `g^`, `g$`

#### Command Line Mode

- `:map`, `:unmap`, `:inoremap` etc.
- `:source` -- very basic line-by-line sourcing of vimrc files
- `:substitute` -- substitute expression in range
- `:'<,'>!cmd` -- filter through an external command (e.g. sort lines in file with `:%!sort`)
- `:.!cmd` -- insert standard output of an external command
- `:read`
- `:yank`, `:delete`, `:change`
- `:move`, `:join`
- `:20` -- go to address
- `:history`
- `:registers`, `:display`
- `:nohlsearch`
- `:undo`, `:redo`
- `:normal`
- `:<`, `:>`

#### Insert Mode

- `<C-O>` -- execute single command and return to insert mode
- `<C-V>` -- insert raw character
- `<insert>` -- toggle replace mode

#### Options (:set ...)

- `autoindent`
- `clipboard`
- `backspace`
- `expandtab`
- `hlsearch`
- `ignorecase`
- `incsearch`
- `indent`
- `iskeyword`
- `scrolloff`
- `shiftwidth`
- `showcmd`
- `smartcase`
- `smartindent`
- `smarttab`
- `startofline`
- `tabstop`
- `tildeop`
- `wrapscan`

#### Example Vimrc

```vimrc
" highlight matched
set hlsearch
" case insensitive search
set ignorecase
set smartcase
" search while typing
set incsearch
" wrap-around when searching
set wrapscan
" show pressed keys in lower right corner
set showcmd
" tab -> spaces
set expandtab
set tabstop=4
set shiftwidth=4
" keep a 5 line buffer for the cursor from top/bottom of window
set scrolloff=5
" X11 clipboard
set clipboard=unnamed
" use ~ with movement
set tildeop

" mappings
nnoremap ; :
inoremap jj <Esc>

" clear highlighted search term on space
noremap <silent> <Space> :nohls<CR>

" reselect visual block after indent
vnoremap < <gv
vnoremap > >gv

" MOVE LINE/BLOCK
nnoremap <C-S-J> :m+<CR>==
nnoremap <C-S-K> :m-2<CR>==
inoremap <C-S-J> <Esc>:m+<CR>==gi
inoremap <C-S-K> <Esc>:m-2<CR>==gi
vnoremap <C-S-J> :m'>+<CR>gv=gv
vnoremap <C-S-K> :m-2<CR>gv=gv
```

### Custom vim commands

In this section we present a list of all custom vim commands that are supported to perform different operation in CP Editor.

| Command | Shorthand | Description | Usage |
| :----------: | :-------: | :-----------------------------------------------------------------------------------------------------------------------: | :-------------------------: |
| `new` | `new` | Opens a new tab, if no langauge is specified, a tab in default editor langauge will open | `new cpp` or `new` |
| `open` | `opn` | Opens a new file, Only C++/Java/Python files will be opened. Without arguments it is same as open in Action menu. | `open` or `opn ~/cf/a.cpp` |
| `compile` | `cmp` | Compiles the code, It is like clicking "Compile" button in a tab. | `compile` or `cmp` |
| `crun` | `crn` | Compiles and run, It is like clicking "Compile and Run" button in a tab. | `crun` or `crn` |
| `run` | `run` | Run, if no argument is provided all testcases are ran, otherwise nth testcase is ran. Counting includes hidden testcases. | `run` or `run 2` |
| `drun` | `drn` | Detached run, It is same as clicking "Detached Run" in menu. | `drun` or `drn` |
| `killall` | `kap` | Kill all process, It is same as clicking "Kill Process" in menu | `killall` or `kap` |
| `format` | `fmt` | Format Code, It is same as clicking "Format Code" in menu | `format` or `fmt` |
| `snippet` | `snp` | Open snippet dialog, It is same as clicking "Use Snippets" in menu | `snippet` or `snp` |
| `vmode` | `vmd` | View mode, Changes the view mode. It can only toggle to "edit" and "split" mode | `vmode edit` or `vmd split` |
| `preference` | `prf` | Preferences, It is same as clicking "Preference" in menu | `preference` or `prf` |
| `chlang` | `chl` | Language, It can be used to change the language of a tab. | `chlang cpp` or `chl java` |
| `clear` | `clr` | Clear Message logger text | `clear` or `clr` |
| `exit` | `ext` | Exit, It is same as pressing "Quit" in menu. | `exit` or `ext` |
4 changes: 4 additions & 0 deletions content/docs/General/Vim Commands/_index.ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Vim Commands"
weight: 1000
---
4 changes: 4 additions & 0 deletions content/docs/General/Vim Commands/_index.zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Vim Commands"
weight: 1000
---
6 changes: 6 additions & 0 deletions content/docs/General/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "General"
linkTitle: "General"
weight: 60
description: General Information regarding Setup and documentation
---
6 changes: 6 additions & 0 deletions content/docs/General/_index.ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "General"
linkTitle: "General"
weight: 60
description: General Information regarding Setup and documentation
---
6 changes: 6 additions & 0 deletions content/docs/General/_index.zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "General"
linkTitle: "General"
weight: 60
description: General Information regarding Setup and documentation
---
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Code Edit"
title: "Code Editing"
weight: 10
---

Expand Down Expand Up @@ -41,3 +41,19 @@ You can choose the parentheses to jump out by Tab in the [Parentheses](../langua
When you insert an indent, insert spaces instead of a tab character. The number of spaces is equal to the [Tab Width](#tab-width).

Note that this won't replace the existing tab characters. In [Auto Indent](#auto-indent), the tab characters in the old line will remain in the new line (however, the new indent inserted after `{` will be spaces).

### Default cursor overwrites

There are two modes in text editing, Insert and Replace mode. Insert mode is common and most widely used, this is CP Editor and other editor’s default mode. In Replace mode, the cursor replaces the next character with the pressed character. If this option is enabled the cursor for newly opened tab will be in Replace mode. It can be toggled for individual tabs by pressig <kbd>INS</kbd> or <kbd>Insert</kbd> on your keyboard.

### Highlight Current Line

If enabled the current line number is highlighted from the rest of the lines. In Vim mode, current line is never highlighted.

### Enable Vim emulation

If enabled code editor uses vim emulation. In Vim emulation, Control Key such as <kbd>Ctrl+N</kbd> will not be intercepted by CP Editor but by Code Editor. We provide some custom commands that can perform most of these tasks. You can check a list of all supported custom commands and its usage [here](../../general/vim-commands/#custom-vim-commands)

### Vim Configuration

The configuration to use in vim mode. The list of all supported vim commands are listed [here](../../general/vim-commands/#vim-commands)
4 changes: 2 additions & 2 deletions content/docs/Preferences/File Path/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ If the path is `testcases/${basename}-${1-index}.in`, the input of this test cas

The rules used to match test cases when loading pairs of test cases.

Each rule is a pair of [regular expression patterns](../general#regular-expression). The first regex matches the whole input file name, and the second pattern is a replacement pattern which is the name of the answer file.
Each rule is a pair of [regular expression patterns](../../general/information#regular-expression). The first regex matches the whole input file name, and the second pattern is a replacement pattern which is the name of the answer file.

For example, you can use `(.+)\.in` and `\1.out` to match `test-1.in` and `test-1.out`, or use `(.+)\.in\.(\d+)` and `\1.ans.\2` to match `test.in.3` and `test.ans.3`.

Expand All @@ -41,7 +41,7 @@ When loading pairs of test cases, each rule which matches an input file will be

The default path when choosing where to save an untitled tab with problem URL.

Each rule is a pair of [regular expression patterns](../general#regular-expression). The first regex matches a part of the problem URL, and the second pattern is a replacement pattern which is the default save path.
Each rule is a pair of [regular expression patterns](../../general/information#regular-expression). The first regex matches a part of the problem URL, and the second pattern is a replacement pattern which is the default save path.

When saving a file with problem URL, if the problem URL matches at least one regex in the rules, the default save path will be the replacement of the first matching regex.

Expand Down
4 changes: 2 additions & 2 deletions content/docs/Preferences/File Path/_index.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ If the path is `testcases/${basename}-${1-index}.in`, the input of this test cas

The rules used to match test cases when loading pairs of test cases.

Each rule is a pair of [regular expression patterns](../general#regular-expression). The first regex matches the whole input file name, and the second pattern is a replacement pattern which is the name of the answer file.
Each rule is a pair of [regular expression patterns](../../general/information#regular-expression). The first regex matches the whole input file name, and the second pattern is a replacement pattern which is the name of the answer file.

For example, you can use `(.+)\.in` and `\1.out` to match `test-1.in` and `test-1.out`, or use `(.+)\.in\.(\d+)` and `\1.ans.\2` to match `test.in.3` and `test.ans.3`.

Expand All @@ -41,7 +41,7 @@ When loading pairs of test cases, each rule which matches an input file will be

The default path when choosing where to save an untitled tab with problem URL.

Each rule is a pair of [regular expression patterns](../general#regular-expression). The first regex matches a part of the problem URL, and the second pattern is a replacement pattern which is the default save path.
Each rule is a pair of [regular expression patterns](../../general/information#regular-expression). The first regex matches a part of the problem URL, and the second pattern is a replacement pattern which is the default save path.

When saving a file with problem URL, if the problem URL matches at least one regex in the rules, the default save path will be the replacement of the first matching regex.

Expand Down
4 changes: 2 additions & 2 deletions content/docs/Preferences/File Path/_index.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ If the path is `testcases/${basename}-${1-index}.in`, the input of this test cas

The rules used to match test cases when loading pairs of test cases.

Each rule is a pair of [regular expression patterns](../general#regular-expression). The first regex matches the whole input file name, and the second pattern is a replacement pattern which is the name of the answer file.
Each rule is a pair of [regular expression patterns](../../general/information#regular-expression). The first regex matches the whole input file name, and the second pattern is a replacement pattern which is the name of the answer file.

For example, you can use `(.+)\.in` and `\1.out` to match `test-1.in` and `test-1.out`, or use `(.+)\.in\.(\d+)` and `\1.ans.\2` to match `test.in.3` and `test.ans.3`.

Expand All @@ -41,7 +41,7 @@ When loading pairs of test cases, each rule which matches an input file will be

The default path when choosing where to save an untitled tab with problem URL.

Each rule is a pair of [regular expression patterns](../general#regular-expression). The first regex matches a part of the problem URL, and the second pattern is a replacement pattern which is the default save path.
Each rule is a pair of [regular expression patterns](../../general/information#regular-expression). The first regex matches a part of the problem URL, and the second pattern is a replacement pattern which is the default save path.

When saving a file with problem URL, if the problem URL matches at least one regex in the rules, the default save path will be the replacement of the first matching regex.

Expand Down
14 changes: 7 additions & 7 deletions content/docs/Preferences/Language/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ For compilation flags, please refer to the manual of the compiler. For example,

The path of the executable file, i.e. the argument of the `-o` option of the compiler.

If this path is a relative path, then it's relative to the source file (if it's an untitled tab, then relative to the [Temporary Directory](../general#temporary-directory)).
If this path is a relative path, then it's relative to the source file (if it's an untitled tab, then relative to the [Temporary Directory](../../general/information#temporary-directory)).

You can use some place holders for this setting:

- `${filename}`: The complete name of the source file. If it's an untitled tab (i.e. an unsaved file), the complete file name is `sol.cpp`.
- `${basename}`: `${filename}` without the suffix (i.e. without `.cpp`, etc.).
- `${tmpdir}` or `${tempdir}`: The path of the [Temporary Directory](../general#temporary-directory).
- `${tmpdir}` or `${tempdir}`: The path of the [Temporary Directory](../../general/information#temporary-directory).

For example, you can use `${tmpdir}/${basename}` if you don't want to keep the executable files, or `executables/${basename}` if you want to keep all executable files in the `executables` directory under the directory of the source file.

Expand Down Expand Up @@ -103,7 +103,7 @@ The initial position of the text cursor when opening the template.

It contains three parts:

1. [Regex](../general#regular-expression)
1. [Regex](../../general/information#regular-expression)
2. Offset type: start or end.
3. Offset characters: a number, could be negative.

Expand Down Expand Up @@ -142,16 +142,16 @@ When choosing a snippet, you can enter the first few characters of the snippet n

You can set the parentheses settings for each language and each parenthesis.

Each setting has three states: enable, disable and default. If it's default, it uses the settings in the [Code Edit](../code-edit) page. Otherwise, it overwrites the settings in the [Code Edit](../code-edit) page.
Each setting has three states: enable, disable and default. If it's default, it uses the settings in the [Code Editing](../code-editing) page. Otherwise, it overwrites the settings in the [Code Editing](../code-editing) page.

### Auto Complete

See [Code Edit/Auto Complete Parentheses](../code-edit#auto-complete-parentheses).
See [Code Editing/Auto Complete Parentheses](../code-editing#auto-complete-parentheses).

### Auto Remove

See [Code Edit/Auto Remove Parentheses](../code-edit#auto-remove-parentheses).
See [Code Editing/Auto Remove Parentheses](../code-editing#auto-remove-parentheses).

### Tab Jump Out

See [Code Edit/Jump out of a parenthesis by pressing Tab](../code-edit#jump-out-of-a-parenthesis-by-pressing-tab).
See [Code Editing/Jump out of a parenthesis by pressing Tab](../code-editing#jump-out-of-a-parenthesis-by-pressing-tab).
14 changes: 7 additions & 7 deletions content/docs/Preferences/Language/_index.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ For compilation flags, please refer to the manual of the compiler. For example,

The path of the executable file, i.e. the argument of the `-o` option of the compiler.

If this path is a relative path, then it's relative to the source file (if it's an untitled tab, then relative to the [Temporary Directory](../general#temporary-directory)).
If this path is a relative path, then it's relative to the source file (if it's an untitled tab, then relative to the [Temporary Directory](../../general/information#temporary-directory)).

You can use some place holders for this setting:

- `${filename}`: The complete name of the source file. If it's an untitled tab (i.e. an unsaved file), the complete file name is `sol.cpp`.
- `${basename}`: `${filename}` without the suffix (i.e. without `.cpp`, etc.).
- `${tmpdir}` or `${tempdir}`: The path of the [Temporary Directory](../general#temporary-directory).
- `${tmpdir}` or `${tempdir}`: The path of the [Temporary Directory](../../general/information#temporary-directory).

For example, you can use `${tmpdir}/${basename}` if you don't want to keep the executable files, or `executables/${basename}` if you want to keep all executable files in the `executables` directory in the parent directory of the source file.

Expand Down Expand Up @@ -103,7 +103,7 @@ The initial position of the text cursor when opening the template.

It contains three parts:

1. [Regex](../general#regular-expression)
1. [Regex](../../general/information#regular-expression)
2. Offset type: start or end.
3. Offset characters: a number, could be negative.

Expand Down Expand Up @@ -142,16 +142,16 @@ When choosing a snippet, you can enter the first few characters of the snippet n

You can set the parentheses settings for each language and each parenthesis.

Each setting has three states: enable, disable and default. If it's default, it uses the settings in the [Code Edit](../code-edit) page. Otherwise, it overwrites the settings in the [Code Edit](../code-edit) page.
Each setting has three states: enable, disable and default. If it's default, it uses the settings in the [Code Editing](../code-editing) page. Otherwise, it overwrites the settings in the [Code Editing](../code-editing) page.

### Auto Complete

See [Code Edit/Auto Complete Parentheses](../code-edit#auto-complete-parentheses).
See [Code Editing/Auto Complete Parentheses](../code-editing#auto-complete-parentheses).

### Auto Remove

See [Code Edit/Auto Remove Parentheses](../code-edit#auto-remove-parentheses).
See [Code Editing/Auto Remove Parentheses](../code-editing#auto-remove-parentheses).

### Tab Jump Out

See [Code Edit/Jump out of a parenthesis by pressing Tab](../code-edit#jump-out-of-a-parenthesis-by-pressing-tab).
See [Code Editing/Jump out of a parenthesis by pressing Tab](../code-editing#jump-out-of-a-parenthesis-by-pressing-tab).
Loading