From 07fe224817100bf5bb908907d067969135334dc9 Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Sun, 16 Feb 2020 16:15:33 +0800 Subject: [PATCH] Update doc and wiki (#3353) --- docs/cn/documentation.md | 85 +- docs/documentation.md | 2059 ++++++++++++++++++------------------- wiki/cn/Following-HEAD.md | 50 + wiki/en/Following-HEAD.md | 89 +- 4 files changed, 1133 insertions(+), 1150 deletions(-) diff --git a/docs/cn/documentation.md b/docs/cn/documentation.md index f12011b6f..43ba71674 100644 --- a/docs/cn/documentation.md +++ b/docs/cn/documentation.md @@ -81,11 +81,11 @@ lang: zh - [任务管理](#任务管理) - [Iedit 多光标编辑](#iedit-多光标编辑) - [Iedit 快捷键](#iedit-快捷键) + - [高亮光标下变量](#高亮光标下变量) - [异步运行器和交互式编程](#异步运行器和交互式编程) - [错误处理](#错误处理) - [格式规范](#格式规范) - [后台服务](#后台服务) -- [高亮光标下变量](#高亮光标下变量) @@ -1134,16 +1134,6 @@ SpaceVim 相关的快捷键均以 `SPC f v` 为前缀,这便于快速访问 Sp 可通过快捷键 ` l p` 列出所有已安装的插件,支持模糊搜索,回车将使用浏览器打开该插件的官网。 -**添加用户自定义插件** - -如果添加来自于 github.com 的插件,可以 `用户名/仓库名` 这一格式,将该插件添加到 `[[ustom_plugins]]`,示例如下: - -```toml -[[custom_plugins]] - name = 'lilydjwg/colorizer' - merged = false -``` - ### 模糊搜索 目前一共有五种模糊搜索的模块,分别对应不同的工具: @@ -1762,6 +1752,43 @@ SpaceVim 内置了 iedit 多光标模式,可快速进行多光标编辑。这 | `Ctrl-h` / `` | 删除光标前字符 | | `` | 删除光标后字符 | +### 高亮光标下变量 + +SpaceVim 支持高亮当前光标下的变量,并且启动一个临时快捷键窗口, +提示可以通过快捷键进行修改高亮范围,以及下一步的操作。 + +目前支持的高亮范围包括: + +- 整个缓冲区(buffer) +- 当前函数内(function) +- 可见区域(visible area) + +使用快捷键 `SPC s h` 来高亮光标下的符号。 + +可使用如下快捷键在已高亮的变量间跳转: + +| 快捷键 | 功能描述 | +| --------- | -------------------------------- | +| `*` | 在当前缓冲区正向搜索光标下变量 | +| `#` | 在当前缓冲区逆向搜索光标下变量 | +| `SPC s e` | 启动 iedit 模式,编辑光标下变量 | +| `SPC s h` | 使用默认的的范围高亮光标下的变量 | +| `SPC s H` | 高亮当前缓冲区下所有的光标下变量 | + +在高亮临时快捷键模式下可使用如下快捷键: + +| 快捷键 | 功能描述 | +| ------------- | ------------------------ | +| `e` | 启动 iedit 模式 | +| `n` | 跳至下一个匹配处 | +| `N` / `p` | 跳至上一个匹配处 | +| `b` | 在整个缓冲区内高亮该匹配 | +| `/` | 在整个工程内检索当前匹配 | +| `` | 切换当前匹配高亮状态 | +| `r` | 切换匹配的范围 | +| `R` | 重置匹配的范围 | +| Any other key | 退出该临时快捷键模式 | + ### 异步运行器和交互式编程 SpaceVim 提供了一个异步执行命令和交互式编程的插件, @@ -1843,41 +1870,5 @@ export PATH=$PATH:$HOME/.SpaceVim/bin ![server-and-client](https://user-images.githubusercontent.com/13142418/32554968-7164fe9c-c4d6-11e7-95f7-f6a6ea75e05b.gif) -## 高亮光标下变量 - -SpaceVim 支持高亮当前光标下的变量,并且启动一个临时快捷键窗口, -提示可以通过快捷键进行修改高亮范围,以及下一步的操作。 - -目前支持的高亮范围包括: - -- 整个缓冲区(buffer) -- 当前函数内(function) -- 可见区域(visible area) - -使用快捷键 `SPC s h` 来高亮光标下的符号。 - -可使用如下快捷键在已高亮的变量间跳转: - -| 快捷键 | 功能描述 | -| --------- | -------------------------------- | -| `*` | 在当前缓冲区正向搜索光标下变量 | -| `#` | 在当前缓冲区逆向搜索光标下变量 | -| `SPC s e` | 启动 iedit 模式,编辑光标下变量 | -| `SPC s h` | 使用默认的的范围高亮光标下的变量 | -| `SPC s H` | 高亮当前缓冲区下所有的光标下变量 | - -在高亮临时快捷键模式下可使用如下快捷键: - -| 快捷键 | 功能描述 | -| ------------- | ------------------------ | -| `e` | 启动 iedit 模式 | -| `n` | 跳至下一个匹配处 | -| `N` / `p` | 跳至上一个匹配处 | -| `b` | 在整个缓冲区内高亮该匹配 | -| `/` | 在整个工程内检索当前匹配 | -| `` | 切换当前匹配高亮状态 | -| `r` | 切换匹配的范围 | -| `R` | 重置匹配的范围 | -| Any other key | 退出该临时快捷键模式 | diff --git a/docs/documentation.md b/docs/documentation.md index de4369786..c5dc48671 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -27,71 +27,64 @@ description: "General documentation about how to using SpaceVim, including the q - [UI Toggles](#ui-toggles) - [Statusline](#statusline) - [Tabline](#tabline) -- [General Key bindings](#general-key-bindings) + - [File tree](#file-tree) + - [File tree navigation](#file-tree-navigation) + - [Open file with file tree.](#open-file-with-file-tree) +- [General usage](#general-usage) + - [Native functions](#native-functions) - [Visual mode key bindings](#visual-mode-key-bindings) - [Command line mode key bidnings](#command-line-mode-key-bidnings) - - [Window manager](#window-manager) - - [File Operations](#file-operations) - - [Editor UI](#editor-ui) - - [Native functions](#native-functions) - - [Bookmarks management](#bookmarks-management) - - [Fuzzy finder](#fuzzy-finder) - - [Discovering](#discovering) - - [Mappings](#mappings) - - [Getting help](#getting-help) - - [Available layers](#available-layers) - - [Toggles](#toggles) - - [Vim motions with vim-easymotion](#vim-motions-with-vim-easymotion) - - [quick-jump-link mode (TODO)](#quick-jump-link-mode-todo) - - [Unimpaired bindings](#unimpaired-bindings) - - [Jumping, Joining and Splitting](#jumping-joining-and-splitting) - - [Jumping](#jumping) - - [Joining and splitting](#joining-and-splitting) - - [Window manipulation](#window-manipulation) - - [Window manipulation key bindings](#window-manipulation-key-bindings) - - [Buffers and Files](#buffers-and-files) - - [Buffers manipulation key bindings](#buffers-manipulation-key-bindings) - - [Create a new empty buffer](#create-a-new-empty-buffer) - - [Special Buffers](#special-buffers) - - [Files manipulations key bindings](#files-manipulations-key-bindings) - - [Vim and SpaceVim files](#vim-and-spacevim-files) - - [File tree](#file-tree) - - [File tree navigation](#file-tree-navigation) - - [Open file with file tree.](#open-file-with-file-tree) - - [Commands starting with `g`](#commands-starting-with-g) - - [Commands starting with `z`](#commands-starting-with-z) - - [Searching](#searching) - - [With an external tool](#with-an-external-tool) - - [Custom searching tool](#custom-searching-tool) - - [Useful key bindings](#useful-key-bindings) - - [Searching in current file](#searching-in-current-file) - - [Searching in buffer directory](#searching-in-buffer-directory) - - [Searching in all loaded buffers](#searching-in-all-loaded-buffers) - - [Searching in an arbitrary directory](#searching-in-an-arbitrary-directory) - - [Searching in a project](#searching-in-a-project) - - [Background searching in a project](#background-searching-in-a-project) - - [Searching the web](#searching-the-web) - - [Searching on the fly](#searching-on-the-fly) - - [Persistent highlighting](#persistent-highlighting) - - [Highlight current symbol](#highlight-current-symbol) + - [Mappings guide](#mappings-guide) - [Editing](#editing) - - [Paste text](#paste-text) - - [Auto-indent pasted text](#auto-indent-pasted-text) - [Text manipulation commands](#text-manipulation-commands) - [Text insertion commands](#text-insertion-commands) - [Increase/Decrease numbers](#increasedecrease-numbers) - - [Replace text with iedit](#replace-text-with-iedit) - - [iedit states key bindings](#iedit-states-key-bindings) - [Commenting](#commenting) - [Multi-Encodings](#multi-encodings) - - [Code runner and REPL](#code-runner-and-repl) - - [Errors handling](#errors-handling) + - [Window manager](#window-manager) + - [General Editor windows](#general-editor-windows) + - [Window manipulation key bindings](#window-manipulation-key-bindings) + - [Buffers and Files](#buffers-and-files) + - [Buffers manipulation key bindings](#buffers-manipulation-key-bindings) + - [Create a new empty buffer](#create-a-new-empty-buffer) + - [Special Buffers](#special-buffers) + - [Files manipulations key bindings](#files-manipulations-key-bindings) + - [Vim and SpaceVim files](#vim-and-spacevim-files) + - [Available layers](#available-layers) + - [Fuzzy finder](#fuzzy-finder) + - [With an external tool](#with-an-external-tool) + - [Custom searching tool](#custom-searching-tool) + - [Useful key bindings](#useful-key-bindings) + - [Searching in current file](#searching-in-current-file) + - [Searching in buffer directory](#searching-in-buffer-directory) + - [Searching in all loaded buffers](#searching-in-all-loaded-buffers) + - [Searching in an arbitrary directory](#searching-in-an-arbitrary-directory) + - [Searching in a project](#searching-in-a-project) + - [Background searching in a project](#background-searching-in-a-project) + - [Searching the web](#searching-the-web) + - [Searching on the fly](#searching-on-the-fly) + - [Persistent highlighting](#persistent-highlighting) + - [Getting help](#getting-help) + - [Unimpaired bindings](#unimpaired-bindings) + - [Jumping, Joining and Splitting](#jumping-joining-and-splitting) + - [Jumping](#jumping) + - [Joining and splitting](#joining-and-splitting) + - [Other key bindings](#other-key-bindings) + - [Commands starting with `g`](#commands-starting-with-g) + - [Commands starting with `z`](#commands-starting-with-z) +- [Advanced usage](#advanced-usage) - [Managing projects](#managing-projects) - [Searching files in project](#searching-files-in-project) - [Custom alternate file](#custom-alternate-file) -- [Tasks](#tasks) -- [EditorConfig](#editorconfig) -- [Vim Server](#vim-server) + - [Bookmarks management](#bookmarks-management) + - [Tasks](#tasks) + - [Replace text with iedit](#replace-text-with-iedit) + - [iedit states key bindings](#iedit-states-key-bindings) + - [Code runner and REPL](#code-runner-and-repl) + - [Highlight current symbol](#highlight-current-symbol) + - [Errors handling](#errors-handling) + - [EditorConfig](#editorconfig) + - [Vim Server](#vim-server) - [Achievements](#achievements) - [issues](#issues) - [Stars, forks and watchers](#stars-forks-and-watchers) @@ -636,6 +629,7 @@ tabs will be listed on the tabline. Each item can be quickly accessed by using | ` 7` | Jump to index 7 on tabline | | ` 8` | Jump to index 8 on tabline | | ` 9` | Jump to index 9 on tabline | +| `g r` | Go to previous tab | SpaceVim tabline also supports mouse click, left mouse button will switch to buffer, while middle button will delete the buffer. @@ -664,7 +658,79 @@ Key bindings within tab manager windows: | `Ctrl-Shift-Down` | Move tab forward | | `` | Jump to windows under the cursor. | -## General Key bindings +### File tree + +SpaceVim uses vimfiler as the default file tree, and the default key binding is ``. +And SpaceVim also provides `SPC f t` and `SPC f T` to open the file tree. + +To change the filemanager plugin: + +```toml +[options] +# file manager plugins supported in SpaceVim: +# - vimfiler (default) +# - nerdtree +# - defx +filemanager = "defx" +``` + +VCS integration is supported, there will be a column status, this feature may make vimfiler slow, so it is not enabled by default. +To enable this feature, add `enable_vimfiler_gitstatus = true` to your custom configure. +Here is a picture for this feature: + +![file-tree](https://user-images.githubusercontent.com/13142418/26881817-279225b2-4bcb-11e7-8872-7e4bd3d1c84e.png) + +There is also an option to config the direction of file tree, by default it is right. To move the file tree to the left, +you can use `filetree_direction` option: + +```toml +[options] +filetree_direction = "left" +``` + +#### File tree navigation + +Navigation is centered on the `hjkl` keys with the hope of providing a fast navigation experience like in [vifm](https://github.com/vifm): + +| Key Bindings | Descriptions | +| --------------------- | ------------------------------------------------- | +| `` / `SPC f t` | Toggle file explorer | +| **with in file tree** | | +| `` / `h` | go to parent node and collapse expanded directory | +| `` / `j` | select next file or directory | +| `` / `k` | select previous file or directory | +| `` / `l` | open selected file or expand directory | +| `N` | Create new file under cursor | +| `y y` | Copy file full path to system clipboard | +| `y Y` | Copy file to system clipboard | +| `P` | Paste file to the position under the cursor | +| `.` | toggle visible ignored files | +| `s v` | Split edit | +| `s g` | Vertical split edit | +| `p` | Preview | +| `i` | Switch to directory history | +| `v` | Quick look | +| `g x` | Execute with vimfiler associated | +| `'` | Toggle mark current line | +| `V` | Clear all marks | +| `>` | iecrease filetree screenwidth | +| `<` | dncrease filetree screenwidth | +| `` | Jump to first line | +| `` | Jump to last line | +| `Ctrl-Home` | Switch to project root directory | +| `Ctrl-r` | Redraw | + +#### Open file with file tree. + +If only one file buffer is opened, a file is opened in the active window, otherwise we need to use vim-choosewin to select a window to open the file. + +| Key Bindings | Descriptions | +| --------------- | ----------------------------------------- | +| `l` / `` | open file in one window | +| `sg` | open file in an vertically split window | +| `sv` | open file in an horizontally split window | + +## General usage The following key bindings are the general key bindings for moving cursor. @@ -687,6 +753,15 @@ The following key bindings are the general key bindings for moving cursor. | `Ctrl-y` | Smart scroll up (`3Ctrl-y/k`) | | `Ctrl-c` | Copy full path of current buffer to X11 clipboard | +### Native functions + +| Key bindings | Mode | Action | +| ---------------- | ------ | --------------------------------- | +| ` q r` | Normal | Same as native `q` | +| ` q r /` | Normal | Same as native `q /`, open cmdwin | +| ` q r ?` | Normal | Same as native `q ?`, open cmdwin | +| ` q r :` | Normal | Same as native `q :`, open cmdwin | + ### Visual mode key bindings | Key | Action | @@ -719,173 +794,7 @@ can be used in command line mode: | `Tab` | next item in popup menu | | `Shift-Tab` | previous item in popup menu | -### Window manager - -Window manager key bindings can only be used in normal mode. The default leader `[WIN]` is `s`, you -can change it via `windows_leader` option: - -```toml -[options] -windows_leader = "s" -``` - -| Key Bindings | Descriptions | -| ------------ | ------------------------------------- | -| `q` | Smart buffer close | -| `WIN v` | :split | -| `WIN V` | Split with previous buffer | -| `WIN g` | :vsplit | -| `WIN G` | Vertically split with previous buffer | -| `WIN t` | Open new tab (:tabnew) | -| `WIN o` | Close other windows (:only) | -| `WIN x` | Remove buffer, leave blank window | -| `WIN q` | Remove current buffer | -| `WIN Q` | Close current buffer (:close) | -| `` | Next window or tab | -| `Shift-Tab` | Previous window or tab | - -SpaceVim has mapped normal `q` as smart buffer close, the normal func of `q` -can be get by ` q r`, if you want to disable this feature, you can use `vimcompatible` mode. - -### File Operations - -| Key Bindings | Descriptions | -| ------------ | ------------------------------- | -| `SPC f s` | Write (:w) | -| `Ctrl-s` | Write (:w) | -| `SPC f W` | Write as root (need sudo layer) | - -### Editor UI - -| Key Bindings | Descriptions | -| --------------------- | ---------------------------------------------------------------- | -| `` | Toggle tagbar | -| `` | Toggle Vimfiler | -| ` [1-9]` | Jump to the buffer with the num index | -| `Alt-[1-9]` | Jump to the buffer with the num index, this only works in Neovim | -| `Alt-h` / `Alt-Left` | Jump to left buffer in the tabline, this only works in Neovim | -| `Alt-l` / `Alt-Right` | Jump to Right buffer in the tabline, this only works in Neovim | -| `SPC t S` | Toggle spell checker | -| `SPC t n` | Toggle line number and relativenumber | -| `SPC t l` | Toggle hidden characters (:setlocal nolist!) | -| `SPC t W` | Toggle wrap (:setlocal wrap! breakindent!) | -| `g 0` | Go to first tab (:tabfirst) | -| `g $` | Go to last tab (:tablast) | -| `g r` | Go to previous tab (:tabprevious) | -| `Ctrl-Down` | Move to split below (`Ctrl-w j`) | -| `Ctrl-Up` | Move to upper split (`Ctrl-w k`) | -| `Ctrl-Left` | Move to left split (`Ctrl-w h`) | -| `Ctrl-Right` | Move to right split (`Ctrl-w l`) | -| `*` | Search selection forwards | -| `#` | Search selection backwards | -| `, ` | Remove all spaces at EOL | -| `Ctrl-r` | Replace selection in visual mode | - -### Native functions - -| Key bindings | Mode | Action | -| ---------------- | ------ | --------------------------------- | -| ` q r` | Normal | Same as native `q` | -| ` q r /` | Normal | Same as native `q /`, open cmdwin | -| ` q r ?` | Normal | Same as native `q ?`, open cmdwin | -| ` q r :` | Normal | Same as native `q :`, open cmdwin | - -### Bookmarks management - -Bookmarks manager is included in `tools` layer, to use following key bindings, you need to enable -`tools` layer: - -```toml -[[layers]] -name = "tools" -``` - -| Key Bindings | Descriptions | -| ------------ | ------------------------------- | -| `m a` | Show list of all bookmarks | -| `m m` | Toggle bookmark in current line | -| `m n` | Jump to next bookmark | -| `m p` | Jump to previous bookmark | -| `m i` | Annotate bookmark | - -As SpaceVim use above bookmarks mappings, so you cannot use `a`, `m`, `n`, `p` or `i` registers to mark current position, but other registers should work well. -If you really need to use these registers, you can map ` m` to `m` in your bootstrap function, -then you can use `a` registers via ` m a`. - -```viml -function! myspacevim#before() abort -nnoremap m m -endfunction -``` - -### Fuzzy finder - -SpaceVim provides five fuzzy find tools, each of them is configured in a layer -(`unite`, `denite`, `leaderf`, `ctrlp` and `fzf` layer). -These layers have the same key bindings and features. But they need different dependencies. - -Users only need to load one of these layers, they will be able to get these features. - -for example, load the denite layer: - -```toml -[[layers]] -name = "denite" -``` - -**Key bindings** - -| Key bindings | Discription | -| -------------------- | ----------------------------- | -| ` f ` | Fuzzy find menu:CustomKeyMaps | -| ` f p` | Fuzzy find menu:AddedPlugins | -| ` f e` | Fuzzy find register | -| ` f h` | Fuzzy find history/yank | -| ` f j` | Fuzzy find jump, change | -| ` f l` | Fuzzy find location list | -| ` f m` | Fuzzy find output messages | -| ` f o` | Fuzzy find outline | -| ` f q` | Fuzzy find quick fix | -| ` f r` | Resumes Unite window | - -**Key bindings within fuzzy finder buffer** - -| Key Bindings | Descriptions | -| ------------------------ | ------------------------------- | -| `` / `Ctrl-j` | Select next line | -| `Shift-` / `Ctrl-k` | Select previous line | -| `` | Leave Insert mode | -| `Ctrl-w` | Delete backward path | -| `Ctrl-u` | Delete whole line before cursor | -| `` | Run default action | -| `Ctrl-s` | Open in a split | -| `Ctrl-v` | Open in a vertical split | -| `Ctrl-t` | Open in a new tab | -| `Ctrl-g` | Close fuzzy finder | - -**Differences between these layers** - -The above key bindings are only part of fuzzy finder layers, please read the layers's documentations. - -| Feature | denite | unite | leaderf | ctrlp | fzf | -| ------------------ | :----: | :---: | :-----: | :---: | --- | -| CustomKeyMaps menu | yes | yes | no | no | no | -| AddedPlugins menu | yes | yes | no | no | no | -| register | yes | yes | no | yes | yes | -| file | yes | yes | yes | yes | yes | -| yank history | yes | yes | no | no | yes | -| jump | yes | yes | no | yes | yes | -| location list | yes | yes | no | no | yes | -| outline | yes | yes | yes | yes | yes | -| message | yes | yes | no | no | yes | -| quickfix list | yes | yes | no | yes | yes | -| resume windows | yes | yes | no | no | no | - -### Discovering - -#### Mappings - -**Mappings guide** +### Mappings guide A guide buffer is displayed each time the prefix key is pressed in normal mode. It lists the available key bindings and their short descriptions. The prefix can be `[SPC]`, `[WIN]` and ``. @@ -921,7 +830,7 @@ Use `SpaceVim#custom#SPC()` to define custom SPC mappings. For instance: call SpaceVim#custom#SPC('nnoremap', ['f', 't'], 'echom "hello world"', 'test custom SPC', 1) ``` -**Unite/Denite describe key bindings** +**Fuzzy find key bidnings** It is possible to search for specific key bindings by pressing `?` in the root of guide buffer. @@ -931,691 +840,8 @@ To narrow the list, just insert the mapping keys or descriptions of what mapping Then use `` or `` and `` to select the mapping, press `` to execute that command. -#### Getting help - -Fuzzy finder layer is powerful tool to unite all interfaces. It is meant to be -like [Helm](https://github.com/emacs-helm/helm) for Vim. These mappings are for -getting help info about functions, variables etc: - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------------------------------------- | -| `SPC h SPC` | discover SpaceVim documentation, layers and packages using fuzzy finder layer | -| `SPC h i` | get help with the symbol at point | -| `SPC h k` | show top-level bindings with which-key | -| `SPC h m` | search available man pages | - -Reporting an issue: - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------------------- | -| `SPC h I` | Open SpaceVim GitHub issue page with pre-filled information | - -#### Available layers - -All layers can be easily discovered via `:SPLayer -l` accessible with `SPC h l`. - -**Available plugins in SpaceVim** - -All plugins can be easily discovered via ` l p`. - -#### Toggles - -Both the toggles mappings start with `[SPC] t` or `[SPC] T`. You can find them in the mapping guide. - -#### Vim motions with vim-easymotion - -##### quick-jump-link mode (TODO) - - - -Similar to easymotion or `f` in vimperator for firefox, this mode allows one to jump to any link in help file with two key strokes. - -| Mappings | Descriptions | -| -------- | -------------------------------------------- | -| `o` | initiate quick jump link mode in help buffer | - -#### Unimpaired bindings - -| Mappings | Descriptions | -| -------- | ------------------------------------------------------- | -| `[ SPC` | Insert space above | -| `] SPC` | Insert space below | -| `[ b` | Go to previous buffer | -| `] b` | Go to next buffer | -| `[ n` | Go to previous conflict marker | -| `] n` | Go to next conflict marker | -| `[ f` | Go to previous file in directory | -| `] f` | Go to next file in directory | -| `[ l` | Go to the previous error | -| `] l` | Go to the next error | -| `[ c` | Go to the previous vcs hunk (need VersionControl layer) | -| `] c` | Go to the next vcs hunk (need VersionControl layer) | -| `[ q` | Go to the previous error | -| `] q` | Go to the next error | -| `[ t` | Go to the previous frame | -| `] t` | Go to the next frame | -| `[ w` | Go to the previous window | -| `] w` | Go to the next window | -| `[ e` | Move line up | -| `] e` | Move line down | -| `[ p` | Paste above current line | -| `] p` | Paste below current line | -| `g p` | Select pasted text | - -#### Jumping, Joining and Splitting - -The `SPC j` prefix is for jumping, joining and splitting. - -##### Jumping - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------------------------------------------------- | -| `SPC j 0` | go to the beginning of line (and set a mark at the previous location in the line) | -| `SPC j $` | go to the end of line (and set a mark at the previous location in the line) | -| `SPC j b` | jump backward | -| `SPC j f` | jump forward | -| `SPC j d` | jump to a listing of the current directory | -| `SPC j D` | jump to a listing of the current directory (other window) | -| `SPC j i` | jump to a definition in buffer (denite outline) | -| `SPC j I` | jump to a definition in any buffer (denite outline) | -| `SPC j j` | jump to a character in the buffer (easymotion) | -| `SPC j J` | jump to a suite of two characters in the buffer (easymotion) | -| `SPC j k` | jump to next line and indent it using auto-indent rules | -| `SPC j l` | jump to a line with avy (easymotion) | -| `SPC j q` | show the dumb-jump quick look tooltip (TODO) | -| `SPC j u` | jump to a URL in the current window | -| `SPC j v` | jump to the definition/declaration of an Emacs Lisp variable (TODO) | -| `SPC j w` | jump to a word in the current buffer (easymotion) | - -##### Joining and splitting - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------------------------------------- | -| `J` | join the current line with the next line | -| `SPC j k` | go to next line and indent it using auto-indent rules | -| `SPC j n` | split the current line at point, insert a new line and auto-indent | -| `SPC j o` | split the current line at point but let point on current line | -| `SPC j s` | split a quoted string or s-expression in place | -| `SPC j S` | split a quoted string or s-expression with `\n`, and auto-indent the new line | - -#### Window manipulation - -##### Window manipulation key bindings - -Every window has a number displayed at the start of the statusline and can be quickly accessed using `SPC number`. - -| Key Bindings | Descriptions | -| ------------ | --------------------- | -| `SPC 1` | go to window number 1 | -| `SPC 2` | go to window number 2 | -| `SPC 3` | go to window number 3 | -| `SPC 4` | go to window number 4 | -| `SPC 5` | go to window number 5 | -| `SPC 6` | go to window number 6 | -| `SPC 7` | go to window number 7 | -| `SPC 8` | go to window number 8 | -| `SPC 9` | go to window number 9 | - -Windows manipulation commands (start with `w`): - -| Key Bindings | Descriptions | -| --------------------- | ------------------------------------------------------------------------------------------------------------- | -| `SPC w .` | windows transient state | -| `SPC w ` | switch to alternate window in the current frame (switch back and forth) | -| `SPC w =` | balance split windows | -| `SPC w b` | force the focus back to the minibuffer (TODO) | -| `SPC w c` | Distraction-free reading current window (tools layer) | -| `SPC w C` | Distraction-free reading other windows via vim-choosewin (tools layer) | -| `SPC w d` | delete a window | -| `SPC u SPC w d` | delete a window and its current buffer (does not delete the file) (TODO) | -| `SPC w D` | delete another window using vim-choosewin | -| `SPC u SPC w D` | delete another window and its current buffer using vim-choosewin (TODO) | -| `SPC w t` | toggle window dedication (dedicated window cannot be reused by a mode) (TODO) | -| `SPC w f` | toggle follow mode (TODO) | -| `SPC w F` | create new tab(frame) | -| `SPC w h` | move to window on the left | -| `SPC w H` | move window to the left | -| `SPC w j` | move to window below | -| `SPC w J` | move window to the bottom | -| `SPC w k` | move to window above | -| `SPC w K` | move window to the top | -| `SPC w l` | move to window on the right | -| `SPC w L` | move window to the right | -| `SPC w m` | maximize/minimize a window (maximize is equivalent to delete other windows) (TODO, now only support maximize) | -| `SPC w M` | swap windows using vim-choosewin | -| `SPC w o` | cycle and focus between tabs | -| `SPC w p m` | open messages buffer in a popup window (TODO) | -| `SPC w p p` | close the current sticky popup window (TODO) | -| `SPC w r` | rotate windows forward | -| `SPC w R` | rotate windows backward | -| `SPC w s` / `SPC w -` | horizontal split | -| `SPC w S` | horizontal split and focus new window | -| `SPC w u` | undo window layout (used to effectively undo a closed window) (TODO) | -| `SPC w U` | redo window layout (TODO) | -| `SPC w v` / `SPC w /` | vertical split | -| `SPC w V` | vertical split and focus new window | -| `SPC w w` | cycle and focus between windows | -| `SPC w W` | select window using vim-choosewin | - -#### Buffers and Files - -##### Buffers manipulation key bindings - -Buffer manipulation commands (start with `b`): - -| Key Bindings | Descriptions | -| --------------- | ------------------------------------------------------------------------------ | -| `SPC ` | switch to alternate buffer in the current window (switch back and forth) | -| `SPC b .` | buffer transient state | -| `SPC b b` | switch to a buffer (via denite/unite) | -| `SPC b d` | kill the current buffer (does not delete the visited file) | -| `SPC u SPC b d` | kill the current buffer and window (does not delete the visited file) (TODO) | -| `SPC b D` | kill a visible buffer using vim-choosewin | -| `SPC u SPC b D` | kill a visible buffer and its window using ace-window(TODO) | -| `SPC b Ctrl-d` | kill other buffers | -| `SPC b Ctrl-D` | kill buffers using a regular expression(TODO) | -| `SPC b e` | erase the content of the buffer (ask for confirmation) | -| `SPC b h` | open _SpaceVim_ home buffer | -| `SPC b n` | switch to next buffer avoiding special buffers | -| `SPC b m` | open _Messages_ buffer | -| `SPC u SPC b m` | kill all buffers and windows except the current one(TODO) | -| `SPC b p` | switch to previous buffer avoiding special buffers | -| `SPC b P` | copy clipboard and replace buffer (useful when pasting from a browser) | -| `SPC b R` | revert the current buffer (reload from disk) | -| `SPC b s` | switch to the _scratch_ buffer (create it if needed) | -| `SPC b w` | toggle read-only (writable state) | -| `SPC b Y` | copy whole buffer to clipboard (useful when copying to a browser) | -| `z f` | Make current function or comments visible in buffer as much as possible (TODO) | - -##### Create a new empty buffer - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------------- | -| `SPC b N h` | create new empty buffer in a new window on the left | -| `SPC b N j` | create new empty buffer in a new window at the bottom | -| `SPC b N k` | create new empty buffer in a new window above | -| `SPC b N l` | create new empty buffer in a new window below | -| `SPC b N n` | create new empty buffer in current window | - -##### Special Buffers - -In SpaceVim, there are many special buffers, these buffers are created by plugins or SpaceVim itself. And these buffers are not listed. - -##### Files manipulations key bindings - -Files manipulation commands (start with f): - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------------------------- | -| `SPC f /` | Find files with `find` command | -| `SPC f b` | go to file bookmarks | -| `SPC f c` | copy current file to a different location(TODO) | -| `SPC f C d` | convert file from unix to dos encoding | -| `SPC f C u` | convert file from dos to unix encoding | -| `SPC f D` | delete a file and the associated buffer with confirmation | -| `SPC f E` | open a file with elevated privileges (sudo layer) (TODO) | -| `SPC f W` | save a file with elevated privileges (sudo layer) | -| `SPC f f` | open file | -| `SPC f F` | try to open the file under point | -| `SPC f o` | Find current file in file tree | -| `SPC f R` | rename the current file(TODO) | -| `SPC f s` | save a file | -| `SPC f S` | save all files | -| `SPC f r` | open a recent file | -| `SPC f t` | toggle file tree side bar | -| `SPC f T` | show file tree side bar | -| `SPC f d` | toggle disk manager in Windows OS | -| `SPC f y` | show and copy current file absolute path in the cmdline | - -##### Vim and SpaceVim files - -Convenient key bindings are located under the prefix `SPC f v` to quickly navigate between Vim and SpaceVim specific files. - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------- | -| `SPC f v v` | display and copy SpaceVim version | -| `SPC f v d` | open SpaceVim custom configuration file | - -#### File tree - -SpaceVim uses vimfiler as the default file tree, and the default key binding is ``. -And SpaceVim also provides `SPC f t` and `SPC f T` to open the file tree. - -To change the filemanager plugin: - -```toml -[options] -# file manager plugins supported in SpaceVim: -# - vimfiler (default) -# - nerdtree -# - defx -filemanager = "defx" -``` - -VCS integration is supported, there will be a column status, this feature may make vimfiler slow, so it is not enabled by default. -To enable this feature, add `enable_vimfiler_gitstatus = true` to your custom configure. -Here is a picture for this feature: - -![file-tree](https://user-images.githubusercontent.com/13142418/26881817-279225b2-4bcb-11e7-8872-7e4bd3d1c84e.png) - -There is also an option to config the direction of file tree, by default it is right. To move the file tree to the left, -you can use `filetree_direction` option: - -```toml -[options] -filetree_direction = "left" -``` - -##### File tree navigation - -Navigation is centered on the `hjkl` keys with the hope of providing a fast navigation experience like in [vifm](https://github.com/vifm): - -| Key Bindings | Descriptions | -| --------------------- | ------------------------------------------------- | -| `` / `SPC f t` | Toggle file explorer | -| **with in file tree** | | -| `` / `h` | go to parent node and collapse expanded directory | -| `` / `j` | select next file or directory | -| `` / `k` | select previous file or directory | -| `` / `l` | open selected file or expand directory | -| `N` | Create new file under cursor | -| `y y` | Copy file full path to system clipboard | -| `y Y` | Copy file to system clipboard | -| `P` | Paste file to the position under the cursor | -| `.` | toggle visible ignored files | -| `s v` | Split edit | -| `s g` | Vertical split edit | -| `p` | Preview | -| `i` | Switch to directory history | -| `v` | Quick look | -| `g x` | Execute with vimfiler associated | -| `'` | Toggle mark current line | -| `V` | Clear all marks | -| `>` | iecrease filetree screenwidth | -| `<` | dncrease filetree screenwidth | -| `` | Jump to first line | -| `` | Jump to last line | -| `Ctrl-Home` | Switch to project root directory | -| `Ctrl-r` | Redraw | - -##### Open file with file tree. - -If only one file buffer is opened, a file is opened in the active window, otherwise we need to use vim-choosewin to select a window to open the file. - -| Key Bindings | Descriptions | -| --------------- | ----------------------------------------- | -| `l` / `` | open file in one window | -| `sg` | open file in an vertically split window | -| `sv` | open file in an horizontally split window | - -### Commands starting with `g` - -After pressing prefix `g` in normal mode, if you do not remember the mappings, you will see the guide -which will tell you the functional of all mappings starting with `g`. - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------- | -| `g #` | search under cursor backward | -| `g $` | go to rightmost character | -| `g &` | repeat last ":s" on all lines | -| `g '` | jump to mark | -| `g *` | search under cursor forward | -| `g +` | newer text state | -| `g ,` | newer position in change list | -| `g -` | older text state | -| `g /` | stay incsearch | -| `g 0` | go to leftmost character | -| `g ;` | older position in change list | -| `g <` | last page of previous command output | -| `g ` | go to leftmost character | -| `g E` | end of previous word | -| `g F` | edit file under cursor(jump to line after name) | -| `g H` | select line mode | -| `g I` | insert text in column 1 | -| `g J` | join lines without space | -| `g N` | visually select previous match | -| `g Q` | switch to Ex mode | -| `g R` | enter VREPLACE mode | -| `g T` | previous tag page | -| `g U` | make motion text uppercase | -| `g ]` | tselect cursor tag | -| `g ^` | go to leftmost no-white character | -| `g _` | go to last char | -| `` g ` `` | jump to mark | -| `g a` | print ascii value of cursor character | -| `g d` | goto definition | -| `g e` | go to end of previous word | -| `g f` | edit file under cursor | -| `g g` | go to line N | -| `g h` | select mode | -| `g i` | insert text after '^ mark | -| `g j` | move cursor down screen line | -| `g k` | move cursor up screen line | -| `g m` | go to middle of screenline | -| `g n` | visually select next match | -| `g o` | goto byte N in the buffer | -| `g p` | Select last paste | -| `g s` | sleep N seconds | -| `g t` | next tag page | -| `g u` | make motion text lowercase | -| `g ~` | swap case for Nmove text | -| `g ` | go to rightmost character | -| `g Ctrl-g` | show cursor info | - -### Commands starting with `z` - -After pressing prefix `z` in normal mode, if you do not remember the mappings, you will see the guide -which will tell you the functional of all mappings starting with `z`. - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------------- | -| `z ` | scroll screen N characters to left | -| `z +` | cursor to screen top line N | -| `z -` | cursor to screen bottom line N | -| `z .` | cursor line to center | -| `z ` | cursor line to top | -| `z =` | spelling suggestions | -| `z A` | toggle folds recursively | -| `z C` | close folds recursively | -| `z D` | delete folds recursively | -| `z E` | eliminate all folds | -| `z F` | create a fold for N lines | -| `z G` | mark good spelled (update internal wordlist) | -| `z H` | scroll half a screenwidth to the right | -| `z L` | scroll half a screenwidth to the left | -| `z M` | set `foldlevel` to zero | -| `z N` | set `foldenable` | -| `z O` | open folds recursively | -| `z R` | set `foldlevel` to deepest fold | -| `z W` | mark wrong spelled (update internal wordlist) | -| `z X` | re-apply `foldlevel` | -| `z ^` | cursor to screen bottom line N | -| `z a` | toggle a fold | -| `z b` | redraw, cursor line at bottom | -| `z c` | close a fold | -| `z d` | delete a fold | -| `z e` | right scroll horizontally to cursor position | -| `z f` | create a fold for motion | -| `z g` | mark good spelled | -| `z h` | scroll screen N characters to right | -| `z i` | toggle foldenable | -| `z j` | mode to start of next fold | -| `z k` | mode to end of previous fold | -| `z l` | scroll screen N characters to left | -| `z m` | subtract one from `foldlevel` | -| `z n` | reset `foldenable` | -| `z o` | open fold | -| `z r` | add one to `foldlevel` | -| `z s` | left scroll horizontally to cursor position | -| `z t` | cursor line at top of window | -| `z v` | open enough folds to view cursor line | -| `z w` | mark wrong spelled | -| `z x` | re-apply foldlevel and do "zV" | -| `z z` | smart scroll | -| `z ` | scroll screen N characters to right | - -### Searching - -#### With an external tool - -SpaceVim can be interfaced with different searching tools like: - -- [rg - ripgrep](https://github.com/BurntSushi/ripgrep) -- [ag - the silver searcher](https://github.com/ggreer/the_silver_searcher) -- [pt - the platinum searcher](https://github.com/monochromegane/the_platinum_searcher) -- [ack](https://beyondgrep.com/) -- grep - -The search commands in SpaceVim are organized under the `SPC s` prefix with the next key is the tool to use and the last key is the scope. For instance, `SPC s a b` will search in all opened buffers using `ag`. - -If the last key (determining the scope) is uppercase then the current word under the cursor is used as default input for the search. For instance, `SPC s a B` will search the word under cursor. - -If the tool key is omitted then a default tool will be automatically selected for the search. This tool corresponds to the first tool found on the system of the list `search_tools`, the default order is `rg`, `ag`, `pt`, `ack` then `grep`. For instance `SPC s b` will search in the opened buffers using `pt` if `rg` and `ag` have not been found on the system. - -The tool keys are: - -| Tool | Key | -| ---- | --- | -| ag | a | -| grep | g | -| ack | k | -| rg | r | -| pt | t | - -The available scopes and corresponding keys are: - -| Scope | Key | -| -------------------------- | --- | -| opened buffers | b | -| buffer directory | d | -| files in a given directory | f | -| current project | p | - -It is possible to search in the current file by double pressing the second key of the sequence, for instance `SPC s a a` will search in the current file with `ag`. - -Notes: - -- `rg`, `ag` and `pt` are optimized to be used in a source control repository but they can be used in an arbitrary directory as well. -- It is also possible to search in several directories at once by marking them in the unite buffer. - -**Beware** if you use `pt`, [TCL parser tools](https://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/apps/pt.html) also install a command line tool called `pt`. - -##### Custom searching tool - -To change the options of a search tool, you need to use the bootstrap function. -The following example shows how to change the default option of searching tool `rg`. - -```vim -function! myspacevim#before() abort -let profile = SpaceVim#mapping#search#getprofile('rg') -let default_opt = profile.default_opts + ['--no-ignore-vcs'] -call SpaceVim#mapping#search#profile({'rg' : {'default_opts' : default_opt}}) -endfunction -``` - -The structure of searching tool profile is: - -```vim -" { 'ag' : { -" 'namespace' : '', " a single char a-z -" 'command' : '', " executable -" 'default_opts' : [], " default options -" 'recursive_opt' : [], " default recursive options -" 'expr_opt' : '', " option for enable expr mode -" 'fixed_string_opt' : '', " option for enable fixed string mode -" 'ignore_case' : '', " option for enable ignore case mode -" 'smart_case' : '', " option for enable smart case mode -" } -" } -``` - -##### Useful key bindings - -| Key Bindings | Descriptions | -| --------------- | ----------------------------------------- | -| `SPC r l` | resume the last completion buffer | -| `` SPC s ` `` | go back to the previous place before jump | -| Prefix argument | will ask for file extensions | - -##### Searching in current file - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------------------- | -| `SPC s s` | search with the first found tool | -| `SPC s S` | search with the first found tool with default input | -| `SPC s a a` | ag | -| `SPC s a A` | ag with default input | -| `SPC s g g` | grep | -| `SPC s g G` | grep with default input | -| `SPC s r r` | rg | -| `SPC s r R` | rg with default input | - -##### Searching in buffer directory - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------------------- | -| `SPC s d` | searching in buffer directory with default tool | -| `SPC s D` | searching in buffer directory cursor word with default tool | -| `SPC s a d` | searching in buffer directory with ag | -| `SPC s a D` | searching in buffer directory cursor word with ag | -| `SPC s g d` | searching in buffer directory with grep | -| `SPC s g D` | searching in buffer directory cursor word with grep | -| `SPC s k d` | searching in buffer directory with ack | -| `SPC s k D` | searching in buffer directory cursor word with ack | -| `SPC s r d` | searching in buffer directory with rg | -| `SPC s r D` | searching in buffer directory cursor word with rg | -| `SPC s t d` | searching in buffer directory with pt | -| `SPC s t D` | searching in buffer directory cursor word with pt | - -##### Searching in all loaded buffers - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------------------- | -| `SPC s b` | search with the first found tool | -| `SPC s B` | search with the first found tool with default input | -| `SPC s a b` | ag | -| `SPC s a B` | ag with default input | -| `SPC s g b` | grep | -| `SPC s g B` | grep with default input | -| `SPC s k b` | ack | -| `SPC s k B` | ack with default input | -| `SPC s r b` | rg | -| `SPC s r B` | rg with default input | -| `SPC s t b` | pt | -| `SPC s t B` | pt with default input | - -##### Searching in an arbitrary directory - -| Key Bindings | Descriptions | -| ------------ | --------------------------------------------------- | -| `SPC s f` | search with the first found tool | -| `SPC s F` | search with the first found tool with default input | -| `SPC s a f` | ag | -| `SPC s a F` | ag with default text | -| `SPC s g f` | grep | -| `SPC s g F` | grep with default text | -| `SPC s k f` | ack | -| `SPC s k F` | ack with default text | -| `SPC s r f` | rg | -| `SPC s r F` | rg with default text | -| `SPC s t f` | pt | -| `SPC s t F` | pt with default text | - -##### Searching in a project - -| Key Bindings | Descriptions | -| ------------------- | --------------------------------------------------- | -| `SPC /` / `SPC s p` | search with the first found tool | -| `SPC *` / `SPC s P` | search with the first found tool with default input | -| `SPC s a p` | ag | -| `SPC s a P` | ag with default text | -| `SPC s g p` | grep | -| `SPC s g p` | grep with default text | -| `SPC s k p` | ack | -| `SPC s k P` | ack with default text | -| `SPC s t p` | pt | -| `SPC s t P` | pt with default text | -| `SPC s r p` | rg | -| `SPC s r P` | rg with default text | - -**Hint**: It is also possible to search in a project without needing to open a file beforehand. To do so use `SPC p p` and then `C-s` on a given project to directly search into it like with `SPC s p`. (TODO) - -##### Background searching in a project - -Background search keyword in a project, when searching done, the count will be shown on the statusline. - -| Key Bindings | Descriptions | -| ------------ | ---------------------------------------------------------- | -| `SPC s j` | searching input expr background with the first found tool | -| `SPC s J` | searching cursor word background with the first found tool | -| `SPC s l` | List all searching result in quickfix buffer | -| `SPC s a j` | ag | -| `SPC s a J` | ag with default text | -| `SPC s g j` | grep | -| `SPC s g J` | grep with default text | -| `SPC s k j` | ack | -| `SPC s k J` | ack with default text | -| `SPC s t j` | pt | -| `SPC s t J` | pt with default text | -| `SPC s r j` | rg | -| `SPC s r J` | rg with default text | - -##### Searching the web - -| Key Bindings | Descriptions | -| ------------ | ------------------------------------------------------------------------ | -| `SPC s w g` | Get Google suggestions in Vim. Opens Google results in Browser. | -| `SPC s w w` | Get Wikipedia suggestions in Vim. Opens Wikipedia page in Browser.(TODO) | - -**Note**: to enable google suggestions in Vim, you need to add `enable_googlesuggest = 1` to your custom Configuration file. - -#### Searching on the fly - -| Key Bindings | Descriptions | -| ------------ | -------------------------------------------------- | -| `SPC s g G` | Searching in project on the fly with default tools | - -Key bindings in FlyGrep buffer: - -| Key Bindings | Descriptions | -| ------------------- | --------------------------------- | -| `` | close FlyGrep buffer | -| `` | open file at the cursor line | -| `` | move cursor line down | -| `Shift-` | move cursor line up | -| `` | remove last character | -| `Ctrl-w` | remove the Word before the cursor | -| `Ctrl-u` | remove the Line before the cursor | -| `Ctrl-k` | remove the Line after the cursor | -| `Ctrl-a` / `` | Go to the beginning of the line | -| `Ctrl-e` / `` | Go to the end of the line | - -#### Persistent highlighting - -SpaceVim uses `search_highlight_persist` to keep the searched expression highlighted until the next search. It is also possible to clear the highlighting by pressing `SPC s c` or executing the ex command `:noh`. - -#### Highlight current symbol - -SpaceVim supports highlighting of the current symbol on demand and add a transient state to easily navigate and rename these symbols. - -It is also possible to change the range of the navigation on the fly to: - -- buffer -- function -- visible area - -To Highlight the current symbol under point press `SPC s h`. - -Navigation between the highlighted symbols can be done with the commands: - -| Key Bindings | Descriptions | -| ------------ | ---------------------------------------------------------------------------- | -| `*` | initiate navigation transient state on current symbol and jump forwards | -| `#` | initiate navigation transient state on current symbol and jump backwards | -| `SPC s e` | edit all occurrences of the current symbol | -| `SPC s h` | highlight the current symbol and all its occurrence within the current range | -| `SPC s H` | go to the last searched occurrence of the last highlighted symbol | - -In highlight symbol transient state: - -| Key Bindings | Descriptions | -| ------------- | ------------------------------------------------------------- | -| `e` | edit occurrences (`*`) | -| `n` | go to next occurrence | -| `N` / `p` | go to previous occurrence | -| `b` | search occurrence in all buffers | -| `/` | search occurrence in whole project | -| `` | toggle highlight current occurrence | -| `r` | change range (function, display area, whole buffer) | -| `R` | go to home occurrence (reset position to starting occurrence) | -| Any other key | leave the navigation transient state | - ### Editing -#### Paste text - -##### Auto-indent pasted text - #### Text manipulation commands Text related commands (start with `x`): @@ -1719,7 +945,836 @@ In transient state: **Tips:** You can increase or decrease a number by more than once by using a prefix argument (i.e. `10 SPC n +` will add 10 to the number under cursor). -#### Replace text with iedit +#### Commenting + +Comments are handled by [nerdcommenter](https://github.com/scrooloose/nerdcommenter), it’s bound to the following keys. + +| Key Bindings | Descriptions | +| ------------ | ------------------------------------------------------- | +| `SPC ;` | comment operator | +| `SPC c h` | hide/show comments | +| `SPC c l` | toggle comment lines | +| `SPC c L` | comment lines | +| `SPC c u` | uncomment lines | +| `SPC c p` | toggle comment paragraphs | +| `SPC c P` | comment paragraphs | +| `SPC c s` | comment with pretty layout | +| `SPC c t` | toggle comment to line | +| `SPC c T` | comment to line | +| `SPC c y` | toggle comment and yank(TODO) | +| `SPC c Y` | yank and comment | +| `SPC c $` | comment current line from cursor to the end of the line | + +**Tips:** `SPC ;` will start operator mode, in this mode, you can use motion command to comment lines. +For example, `SPC ; 4 j` will comment current line and the following 4 lines. + +#### Multi-Encodings + +SpaceVim uses utf-8 as default encoding. There are four options for these case: + +- fileencodings (fencs): ucs-bom,utf-8,default,latin1 +- fileencoding (fenc): utf-8 +- encoding (enc): utf-8 +- termencoding (tenc): utf-8 (only supported in Vim) + +To fix messy display: `SPC e a` is the mapping for auto detect the file encoding. After detecting file encoding, you can run the command below to fix the encoding: + +```vim +set enc=utf-8 +write +``` + +### Window manager + +Window manager key bindings can only be used in normal mode. The default leader `[WIN]` is `s`, you +can change it via `windows_leader` option: + +```toml +[options] +windows_leader = "s" +``` + +| Key Bindings | Descriptions | +| ------------ | ------------------------------------- | +| `q` | Smart buffer close | +| `WIN v` | :split | +| `WIN V` | Split with previous buffer | +| `WIN g` | :vsplit | +| `WIN G` | Vertically split with previous buffer | +| `WIN t` | Open new tab (:tabnew) | +| `WIN o` | Close other windows (:only) | +| `WIN x` | Remove buffer, leave blank window | +| `WIN q` | Remove current buffer | +| `WIN Q` | Close current buffer (:close) | +| `` | Next window or tab | +| `Shift-Tab` | Previous window or tab | + +SpaceVim has mapped normal `q` as smart buffer close, the normal func of `q` +can be get by ` q r`, if you want to disable this feature, you can use `vimcompatible` mode. + +#### General Editor windows + +| Key Bindings | Descriptions | +| ------------ | -------------------------------- | +| `` | Toggle tagbar | +| `` | Toggle Vimfiler | +| `Ctrl-Down` | Move to split below (`Ctrl-w j`) | +| `Ctrl-Up` | Move to upper split (`Ctrl-w k`) | +| `Ctrl-Left` | Move to left split (`Ctrl-w h`) | +| `Ctrl-Right` | Move to right split (`Ctrl-w l`) | + +#### Window manipulation key bindings + +Every window has a number displayed at the start of the statusline and can be quickly accessed using `SPC number`. + +| Key Bindings | Descriptions | +| ------------ | --------------------- | +| `SPC 1` | go to window number 1 | +| `SPC 2` | go to window number 2 | +| `SPC 3` | go to window number 3 | +| `SPC 4` | go to window number 4 | +| `SPC 5` | go to window number 5 | +| `SPC 6` | go to window number 6 | +| `SPC 7` | go to window number 7 | +| `SPC 8` | go to window number 8 | +| `SPC 9` | go to window number 9 | + +Windows manipulation commands (start with `w`): + +| Key Bindings | Descriptions | +| --------------------- | ------------------------------------------------------------------------------------------------------------- | +| `SPC w .` | windows transient state | +| `SPC w ` | switch to alternate window in the current frame (switch back and forth) | +| `SPC w =` | balance split windows | +| `SPC w b` | force the focus back to the minibuffer (TODO) | +| `SPC w c` | Distraction-free reading current window (tools layer) | +| `SPC w C` | Distraction-free reading other windows via vim-choosewin (tools layer) | +| `SPC w d` | delete a window | +| `SPC u SPC w d` | delete a window and its current buffer (does not delete the file) (TODO) | +| `SPC w D` | delete another window using vim-choosewin | +| `SPC u SPC w D` | delete another window and its current buffer using vim-choosewin (TODO) | +| `SPC w t` | toggle window dedication (dedicated window cannot be reused by a mode) (TODO) | +| `SPC w f` | toggle follow mode (TODO) | +| `SPC w F` | create new tab(frame) | +| `SPC w h` | move to window on the left | +| `SPC w H` | move window to the left | +| `SPC w j` | move to window below | +| `SPC w J` | move window to the bottom | +| `SPC w k` | move to window above | +| `SPC w K` | move window to the top | +| `SPC w l` | move to window on the right | +| `SPC w L` | move window to the right | +| `SPC w m` | maximize/minimize a window (maximize is equivalent to delete other windows) (TODO, now only support maximize) | +| `SPC w M` | swap windows using vim-choosewin | +| `SPC w o` | cycle and focus between tabs | +| `SPC w p m` | open messages buffer in a popup window (TODO) | +| `SPC w p p` | close the current sticky popup window (TODO) | +| `SPC w r` | rotate windows forward | +| `SPC w R` | rotate windows backward | +| `SPC w s` / `SPC w -` | horizontal split | +| `SPC w S` | horizontal split and focus new window | +| `SPC w u` | undo window layout (used to effectively undo a closed window) (TODO) | +| `SPC w U` | redo window layout (TODO) | +| `SPC w v` / `SPC w /` | vertical split | +| `SPC w V` | vertical split and focus new window | +| `SPC w w` | cycle and focus between windows | +| `SPC w W` | select window using vim-choosewin | + +### Buffers and Files + +#### Buffers manipulation key bindings + +Buffer manipulation commands (start with `b`): + +| Key Bindings | Descriptions | +| --------------- | ------------------------------------------------------------------------------ | +| `SPC ` | switch to alternate buffer in the current window (switch back and forth) | +| `SPC b .` | buffer transient state | +| `SPC b b` | switch to a buffer (via denite/unite) | +| `SPC b d` | kill the current buffer (does not delete the visited file) | +| `SPC u SPC b d` | kill the current buffer and window (does not delete the visited file) (TODO) | +| `SPC b D` | kill a visible buffer using vim-choosewin | +| `SPC u SPC b D` | kill a visible buffer and its window using ace-window(TODO) | +| `SPC b Ctrl-d` | kill other buffers | +| `SPC b Ctrl-D` | kill buffers using a regular expression(TODO) | +| `SPC b e` | erase the content of the buffer (ask for confirmation) | +| `SPC b h` | open _SpaceVim_ home buffer | +| `SPC b n` | switch to next buffer avoiding special buffers | +| `SPC b m` | open _Messages_ buffer | +| `SPC u SPC b m` | kill all buffers and windows except the current one(TODO) | +| `SPC b p` | switch to previous buffer avoiding special buffers | +| `SPC b P` | copy clipboard and replace buffer (useful when pasting from a browser) | +| `SPC b R` | revert the current buffer (reload from disk) | +| `SPC b s` | switch to the _scratch_ buffer (create it if needed) | +| `SPC b w` | toggle read-only (writable state) | +| `SPC b Y` | copy whole buffer to clipboard (useful when copying to a browser) | +| `z f` | Make current function or comments visible in buffer as much as possible (TODO) | + +#### Create a new empty buffer + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------------- | +| `SPC b N h` | create new empty buffer in a new window on the left | +| `SPC b N j` | create new empty buffer in a new window at the bottom | +| `SPC b N k` | create new empty buffer in a new window above | +| `SPC b N l` | create new empty buffer in a new window below | +| `SPC b N n` | create new empty buffer in current window | + +#### Special Buffers + +In SpaceVim, there are many special buffers, these buffers are created by plugins or SpaceVim itself. And these buffers are not listed. + +#### Files manipulations key bindings + +Files manipulation commands (start with f): + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------------------------- | +| `SPC f /` | Find files with `find` command | +| `SPC f b` | go to file bookmarks | +| `SPC f c` | copy current file to a different location(TODO) | +| `SPC f C d` | convert file from unix to dos encoding | +| `SPC f C u` | convert file from dos to unix encoding | +| `SPC f D` | delete a file and the associated buffer with confirmation | +| `SPC f E` | open a file with elevated privileges (sudo layer) (TODO) | +| `SPC f W` | save a file with elevated privileges (sudo layer) | +| `SPC f f` | open file | +| `SPC f F` | try to open the file under point | +| `SPC f o` | Find current file in file tree | +| `SPC f R` | rename the current file(TODO) | +| `SPC f s` | save a file | +| `SPC f S` | save all files | +| `SPC f r` | open a recent file | +| `SPC f t` | toggle file tree side bar | +| `SPC f T` | show file tree side bar | +| `SPC f d` | toggle disk manager in Windows OS | +| `SPC f y` | show and copy current file absolute path in the cmdline | + +#### Vim and SpaceVim files + +Convenient key bindings are located under the prefix `SPC f v` to quickly navigate between Vim and SpaceVim specific files. + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------- | +| `SPC f v v` | display and copy SpaceVim version | +| `SPC f v d` | open SpaceVim custom configuration file | + +### Available layers + +All layers can be easily discovered via `:SPLayer -l` accessible with `SPC h l`. + +**Available plugins in SpaceVim** + +All plugins can be easily discovered via ` l p`. + +### Fuzzy finder + +SpaceVim provides five fuzzy find tools, each of them is configured in a layer +(`unite`, `denite`, `leaderf`, `ctrlp` and `fzf` layer). +These layers have the same key bindings and features. But they need different dependencies. + +Users only need to load one of these layers, they will be able to get these features. + +for example, load the denite layer: + +```toml +[[layers]] +name = "denite" +``` + +**Key bindings** + +| Key bindings | Discription | +| -------------------- | ----------------------------- | +| ` f ` | Fuzzy find menu:CustomKeyMaps | +| ` f p` | Fuzzy find menu:AddedPlugins | +| ` f e` | Fuzzy find register | +| ` f h` | Fuzzy find history/yank | +| ` f j` | Fuzzy find jump, change | +| ` f l` | Fuzzy find location list | +| ` f m` | Fuzzy find output messages | +| ` f o` | Fuzzy find outline | +| ` f q` | Fuzzy find quick fix | +| ` f r` | Resumes Unite window | + +**Differences between these layers** + +The above key bindings are only part of fuzzy finder layers, please read the layers's documentations. + +| Feature | denite | unite | leaderf | ctrlp | fzf | +| ------------------ | :----: | :---: | :-----: | :---: | --- | +| CustomKeyMaps menu | yes | yes | no | no | no | +| AddedPlugins menu | yes | yes | no | no | no | +| register | yes | yes | no | yes | yes | +| file | yes | yes | yes | yes | yes | +| yank history | yes | yes | no | no | yes | +| jump | yes | yes | no | yes | yes | +| location list | yes | yes | no | no | yes | +| outline | yes | yes | yes | yes | yes | +| message | yes | yes | no | no | yes | +| quickfix list | yes | yes | no | yes | yes | +| resume windows | yes | yes | no | no | no | + +**Key bindings within fuzzy finder buffer** + +| Key Bindings | Descriptions | +| ------------------------ | ------------------------------- | +| `` / `Ctrl-j` | Select next line | +| `Shift-` / `Ctrl-k` | Select previous line | +| `` | Leave Insert mode | +| `Ctrl-w` | Delete backward path | +| `Ctrl-u` | Delete whole line before cursor | +| `` | Run default action | +| `Ctrl-s` | Open in a split | +| `Ctrl-v` | Open in a vertical split | +| `Ctrl-t` | Open in a new tab | +| `Ctrl-g` | Close fuzzy finder | + +#### With an external tool + +SpaceVim can be interfaced with different searching tools like: + +- [rg - ripgrep](https://github.com/BurntSushi/ripgrep) +- [ag - the silver searcher](https://github.com/ggreer/the_silver_searcher) +- [pt - the platinum searcher](https://github.com/monochromegane/the_platinum_searcher) +- [ack](https://beyondgrep.com/) +- grep + +The search commands in SpaceVim are organized under the `SPC s` prefix with the next key is the tool to use and the last key is the scope. For instance, `SPC s a b` will search in all opened buffers using `ag`. + +If the last key (determining the scope) is uppercase then the current word under the cursor is used as default input for the search. For instance, `SPC s a B` will search the word under cursor. + +If the tool key is omitted then a default tool will be automatically selected for the search. This tool corresponds to the first tool found on the system of the list `search_tools`, the default order is `rg`, `ag`, `pt`, `ack` then `grep`. For instance `SPC s b` will search in the opened buffers using `pt` if `rg` and `ag` have not been found on the system. + +The tool keys are: + +| Tool | Key | +| ---- | --- | +| ag | a | +| grep | g | +| ack | k | +| rg | r | +| pt | t | + +The available scopes and corresponding keys are: + +| Scope | Key | +| -------------------------- | --- | +| opened buffers | b | +| buffer directory | d | +| files in a given directory | f | +| current project | p | + +It is possible to search in the current file by double pressing the second key of the sequence, for instance `SPC s a a` will search in the current file with `ag`. + +Notes: + +- `rg`, `ag` and `pt` are optimized to be used in a source control repository but they can be used in an arbitrary directory as well. +- It is also possible to search in several directories at once by marking them in the unite buffer. + +**Beware** if you use `pt`, [TCL parser tools](https://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/apps/pt.html) also install a command line tool called `pt`. + +#### Custom searching tool + +To change the options of a search tool, you need to use the bootstrap function. +The following example shows how to change the default option of searching tool `rg`. + +```vim +function! myspacevim#before() abort +let profile = SpaceVim#mapping#search#getprofile('rg') +let default_opt = profile.default_opts + ['--no-ignore-vcs'] +call SpaceVim#mapping#search#profile({'rg' : {'default_opts' : default_opt}}) +endfunction +``` + +The structure of searching tool profile is: + +```vim +" { 'ag' : { +" 'namespace' : '', " a single char a-z +" 'command' : '', " executable +" 'default_opts' : [], " default options +" 'recursive_opt' : [], " default recursive options +" 'expr_opt' : '', " option for enable expr mode +" 'fixed_string_opt' : '', " option for enable fixed string mode +" 'ignore_case' : '', " option for enable ignore case mode +" 'smart_case' : '', " option for enable smart case mode +" } +" } +``` + +#### Useful key bindings + +| Key Bindings | Descriptions | +| --------------- | ----------------------------------------- | +| `SPC r l` | resume the last completion buffer | +| `` SPC s ` `` | go back to the previous place before jump | +| Prefix argument | will ask for file extensions | + +#### Searching in current file + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------------------- | +| `SPC s s` | search with the first found tool | +| `SPC s S` | search with the first found tool with default input | +| `SPC s a a` | ag | +| `SPC s a A` | ag with default input | +| `SPC s g g` | grep | +| `SPC s g G` | grep with default input | +| `SPC s r r` | rg | +| `SPC s r R` | rg with default input | + +#### Searching in buffer directory + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------------------- | +| `SPC s d` | searching in buffer directory with default tool | +| `SPC s D` | searching in buffer directory cursor word with default tool | +| `SPC s a d` | searching in buffer directory with ag | +| `SPC s a D` | searching in buffer directory cursor word with ag | +| `SPC s g d` | searching in buffer directory with grep | +| `SPC s g D` | searching in buffer directory cursor word with grep | +| `SPC s k d` | searching in buffer directory with ack | +| `SPC s k D` | searching in buffer directory cursor word with ack | +| `SPC s r d` | searching in buffer directory with rg | +| `SPC s r D` | searching in buffer directory cursor word with rg | +| `SPC s t d` | searching in buffer directory with pt | +| `SPC s t D` | searching in buffer directory cursor word with pt | + +#### Searching in all loaded buffers + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------------------- | +| `SPC s b` | search with the first found tool | +| `SPC s B` | search with the first found tool with default input | +| `SPC s a b` | ag | +| `SPC s a B` | ag with default input | +| `SPC s g b` | grep | +| `SPC s g B` | grep with default input | +| `SPC s k b` | ack | +| `SPC s k B` | ack with default input | +| `SPC s r b` | rg | +| `SPC s r B` | rg with default input | +| `SPC s t b` | pt | +| `SPC s t B` | pt with default input | + +#### Searching in an arbitrary directory + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------------------- | +| `SPC s f` | search with the first found tool | +| `SPC s F` | search with the first found tool with default input | +| `SPC s a f` | ag | +| `SPC s a F` | ag with default text | +| `SPC s g f` | grep | +| `SPC s g F` | grep with default text | +| `SPC s k f` | ack | +| `SPC s k F` | ack with default text | +| `SPC s r f` | rg | +| `SPC s r F` | rg with default text | +| `SPC s t f` | pt | +| `SPC s t F` | pt with default text | + +#### Searching in a project + +| Key Bindings | Descriptions | +| ------------------- | --------------------------------------------------- | +| `SPC /` / `SPC s p` | search with the first found tool | +| `SPC *` / `SPC s P` | search with the first found tool with default input | +| `SPC s a p` | ag | +| `SPC s a P` | ag with default text | +| `SPC s g p` | grep | +| `SPC s g p` | grep with default text | +| `SPC s k p` | ack | +| `SPC s k P` | ack with default text | +| `SPC s t p` | pt | +| `SPC s t P` | pt with default text | +| `SPC s r p` | rg | +| `SPC s r P` | rg with default text | + +**Hint**: It is also possible to search in a project without needing to open a file beforehand. To do so use `SPC p p` and then `C-s` on a given project to directly search into it like with `SPC s p`. (TODO) + +#### Background searching in a project + +Background search keyword in a project, when searching done, the count will be shown on the statusline. + +| Key Bindings | Descriptions | +| ------------ | ---------------------------------------------------------- | +| `SPC s j` | searching input expr background with the first found tool | +| `SPC s J` | searching cursor word background with the first found tool | +| `SPC s l` | List all searching result in quickfix buffer | +| `SPC s a j` | ag | +| `SPC s a J` | ag with default text | +| `SPC s g j` | grep | +| `SPC s g J` | grep with default text | +| `SPC s k j` | ack | +| `SPC s k J` | ack with default text | +| `SPC s t j` | pt | +| `SPC s t J` | pt with default text | +| `SPC s r j` | rg | +| `SPC s r J` | rg with default text | + +#### Searching the web + +| Key Bindings | Descriptions | +| ------------ | ------------------------------------------------------------------------ | +| `SPC s w g` | Get Google suggestions in Vim. Opens Google results in Browser. | +| `SPC s w w` | Get Wikipedia suggestions in Vim. Opens Wikipedia page in Browser.(TODO) | + +**Note**: to enable google suggestions in Vim, you need to add `enable_googlesuggest = 1` to your custom Configuration file. + +#### Searching on the fly + +| Key Bindings | Descriptions | +| ------------ | -------------------------------------------------- | +| `SPC s g G` | Searching in project on the fly with default tools | + +Key bindings in FlyGrep buffer: + +| Key Bindings | Descriptions | +| ------------------- | --------------------------------- | +| `` | close FlyGrep buffer | +| `` | open file at the cursor line | +| `` | move cursor line down | +| `Shift-` | move cursor line up | +| `` | remove last character | +| `Ctrl-w` | remove the Word before the cursor | +| `Ctrl-u` | remove the Line before the cursor | +| `Ctrl-k` | remove the Line after the cursor | +| `Ctrl-a` / `` | Go to the beginning of the line | +| `Ctrl-e` / `` | Go to the end of the line | + +#### Persistent highlighting + +SpaceVim uses `search_highlight_persist` to keep the searched expression highlighted until the next search. It is also possible to clear the highlighting by pressing `SPC s c` or executing the ex command `:noh`. + +#### Getting help + +Fuzzy finder layer is powerful tool to unite all interfaces. It is meant to be +like [Helm](https://github.com/emacs-helm/helm) for Vim. These mappings are for +getting help info about functions, variables etc: + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------------------------------------- | +| `SPC h SPC` | discover SpaceVim documentation, layers and packages using fuzzy finder layer | +| `SPC h i` | get help with the symbol at point | +| `SPC h k` | show top-level bindings with which-key | +| `SPC h m` | search available man pages | + +Reporting an issue: + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------------------- | +| `SPC h I` | Open SpaceVim GitHub issue page with pre-filled information | + +### Unimpaired bindings + +| Mappings | Descriptions | +| -------- | ------------------------------------------------------- | +| `[ SPC` | Insert space above | +| `] SPC` | Insert space below | +| `[ b` | Go to previous buffer | +| `] b` | Go to next buffer | +| `[ n` | Go to previous conflict marker | +| `] n` | Go to next conflict marker | +| `[ f` | Go to previous file in directory | +| `] f` | Go to next file in directory | +| `[ l` | Go to the previous error | +| `] l` | Go to the next error | +| `[ c` | Go to the previous vcs hunk (need VersionControl layer) | +| `] c` | Go to the next vcs hunk (need VersionControl layer) | +| `[ q` | Go to the previous error | +| `] q` | Go to the next error | +| `[ t` | Go to the previous frame | +| `] t` | Go to the next frame | +| `[ w` | Go to the previous window | +| `] w` | Go to the next window | +| `[ e` | Move line up | +| `] e` | Move line down | +| `[ p` | Paste above current line | +| `] p` | Paste below current line | +| `g p` | Select pasted text | + +### Jumping, Joining and Splitting + +The `SPC j` prefix is for jumping, joining and splitting. + +#### Jumping + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------------------------------------------------- | +| `SPC j 0` | go to the beginning of line (and set a mark at the previous location in the line) | +| `SPC j $` | go to the end of line (and set a mark at the previous location in the line) | +| `SPC j b` | jump backward | +| `SPC j f` | jump forward | +| `SPC j d` | jump to a listing of the current directory | +| `SPC j D` | jump to a listing of the current directory (other window) | +| `SPC j i` | jump to a definition in buffer (denite outline) | +| `SPC j I` | jump to a definition in any buffer (denite outline) | +| `SPC j j` | jump to a character in the buffer (easymotion) | +| `SPC j J` | jump to a suite of two characters in the buffer (easymotion) | +| `SPC j k` | jump to next line and indent it using auto-indent rules | +| `SPC j l` | jump to a line with avy (easymotion) | +| `SPC j q` | show the dumb-jump quick look tooltip (TODO) | +| `SPC j u` | jump to a URL in the current window | +| `SPC j v` | jump to the definition/declaration of an Emacs Lisp variable (TODO) | +| `SPC j w` | jump to a word in the current buffer (easymotion) | + +#### Joining and splitting + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------------------------------------- | +| `J` | join the current line with the next line | +| `SPC j k` | go to next line and indent it using auto-indent rules | +| `SPC j n` | split the current line at point, insert a new line and auto-indent | +| `SPC j o` | split the current line at point but let point on current line | +| `SPC j s` | split a quoted string or s-expression in place | +| `SPC j S` | split a quoted string or s-expression with `\n`, and auto-indent the new line | + +### Other key bindings + +#### Commands starting with `g` + +After pressing prefix `g` in normal mode, if you do not remember the mappings, you will see the guide +which will tell you the functional of all mappings starting with `g`. + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------- | +| `g #` | search under cursor backward | +| `g $` | go to rightmost character | +| `g &` | repeat last ":s" on all lines | +| `g '` | jump to mark | +| `g *` | search under cursor forward | +| `g +` | newer text state | +| `g ,` | newer position in change list | +| `g -` | older text state | +| `g /` | stay incsearch | +| `g 0` | go to leftmost character | +| `g ;` | older position in change list | +| `g <` | last page of previous command output | +| `g ` | go to leftmost character | +| `g E` | end of previous word | +| `g F` | edit file under cursor(jump to line after name) | +| `g H` | select line mode | +| `g I` | insert text in column 1 | +| `g J` | join lines without space | +| `g N` | visually select previous match | +| `g Q` | switch to Ex mode | +| `g R` | enter VREPLACE mode | +| `g T` | previous tag page | +| `g U` | make motion text uppercase | +| `g ]` | tselect cursor tag | +| `g ^` | go to leftmost no-white character | +| `g _` | go to last char | +| `` g ` `` | jump to mark | +| `g a` | print ascii value of cursor character | +| `g d` | goto definition | +| `g e` | go to end of previous word | +| `g f` | edit file under cursor | +| `g g` | go to line N | +| `g h` | select mode | +| `g i` | insert text after '^ mark | +| `g j` | move cursor down screen line | +| `g k` | move cursor up screen line | +| `g m` | go to middle of screenline | +| `g n` | visually select next match | +| `g o` | goto byte N in the buffer | +| `g p` | Select last paste | +| `g s` | sleep N seconds | +| `g t` | next tag page | +| `g u` | make motion text lowercase | +| `g ~` | swap case for Nmove text | +| `g ` | go to rightmost character | +| `g Ctrl-g` | show cursor info | + +#### Commands starting with `z` + +After pressing prefix `z` in normal mode, if you do not remember the mappings, you will see the guide +which will tell you the functional of all mappings starting with `z`. + +| Key Bindings | Descriptions | +| ------------ | --------------------------------------------- | +| `z ` | scroll screen N characters to left | +| `z +` | cursor to screen top line N | +| `z -` | cursor to screen bottom line N | +| `z .` | cursor line to center | +| `z ` | cursor line to top | +| `z =` | spelling suggestions | +| `z A` | toggle folds recursively | +| `z C` | close folds recursively | +| `z D` | delete folds recursively | +| `z E` | eliminate all folds | +| `z F` | create a fold for N lines | +| `z G` | mark good spelled (update internal wordlist) | +| `z H` | scroll half a screenwidth to the right | +| `z L` | scroll half a screenwidth to the left | +| `z M` | set `foldlevel` to zero | +| `z N` | set `foldenable` | +| `z O` | open folds recursively | +| `z R` | set `foldlevel` to deepest fold | +| `z W` | mark wrong spelled (update internal wordlist) | +| `z X` | re-apply `foldlevel` | +| `z ^` | cursor to screen bottom line N | +| `z a` | toggle a fold | +| `z b` | redraw, cursor line at bottom | +| `z c` | close a fold | +| `z d` | delete a fold | +| `z e` | right scroll horizontally to cursor position | +| `z f` | create a fold for motion | +| `z g` | mark good spelled | +| `z h` | scroll screen N characters to right | +| `z i` | toggle foldenable | +| `z j` | mode to start of next fold | +| `z k` | mode to end of previous fold | +| `z l` | scroll screen N characters to left | +| `z m` | subtract one from `foldlevel` | +| `z n` | reset `foldenable` | +| `z o` | open fold | +| `z r` | add one to `foldlevel` | +| `z s` | left scroll horizontally to cursor position | +| `z t` | cursor line at top of window | +| `z v` | open enough folds to view cursor line | +| `z w` | mark wrong spelled | +| `z x` | re-apply foldlevel and do "zV" | +| `z z` | smart scroll | +| `z ` | scroll screen N characters to right | + +## Advanced usage + +### Managing projects + +SpaceVim will find the root of the project when a `.git` directory or a `.project_alt.json` file is encountered in the file tree. + +Project manager commands start with `p`: + +| Key Bindings | Descriptions | +| ------------ | ----------------------------------------------------- | +| `SPC p '` | open a shell in project’s root (need the shell layer) | + +#### Searching files in project + +| Key Bindings | Descriptions | +| ------------ | ---------------------------------------- | +| `SPC p f` | find files in current project | +| `SPC p /` | fuzzy search for text in current project | +| `SPC p k` | kill all buffers of current project | +| `SPC p t` | find project root | +| `SPC p p` | list all projects | + +#### Custom alternate file + +To manager the alternate file of the project, you need to create a `.project_alt.json` file +in the root of your project. Then you can use command `:A` to jump to the alternate file of +current file. You can also specific the type of alternate file, for example `:A doc`. +With a bang `:A!`, SpaceVim will paser the configuration file additionally. If no type specificed, +the default type `alternate` will be used. + +here is an example of `.project_alt.json`: + +```json +{ + "autoload/SpaceVim/layers/lang/*.vim": { + "doc": "docs/layers/lang/{}.md", + "test": "test/layer/lang/{}.vader" + } +} +``` +### Bookmarks management + +Bookmarks manager is included in `tools` layer, to use following key bindings, you need to enable +`tools` layer: + +```toml +[[layers]] +name = "tools" +``` + +| Key Bindings | Descriptions | +| ------------ | ------------------------------- | +| `m a` | Show list of all bookmarks | +| `m m` | Toggle bookmark in current line | +| `m n` | Jump to next bookmark | +| `m p` | Jump to previous bookmark | +| `m i` | Annotate bookmark | + +As SpaceVim use above bookmarks mappings, so you cannot use `a`, `m`, `n`, `p` or `i` registers to mark current position, but other registers should work well. +If you really need to use these registers, you can map ` m` to `m` in your bootstrap function, +then you can use `a` registers via ` m a`. + +```viml +function! myspacevim#before() abort +nnoremap m m +endfunction +``` + +### Tasks + +To integrate with external tools, SpaceVim introduce a task manager system, +which is similar to vscode tasks-manager. There are two kinds of task configuration +file: global tasks configuration(`~/.SpaceVim.d/tasks.toml`) and local configuration(`.SpaceVim.d/tasks.toml`). + +| Key Bindings | Descriptions | +| ------------ | ----------------------------- | +| `SPC p t e` | edit tasks configuration file | +| `SPC p t r` | select task to run | + +this is basic task configuration for running `echo hello world`, and print results to runner windows. + +```toml +[my-task] + command = 'echo' + args = ['hello world'] +``` + +![task hello world](https://user-images.githubusercontent.com/13142418/74582981-74049900-4ffd-11ea-9b38-7858042225b9.png) + +To run task in the background, you need to set `isBackground` to `true`: + +```toml +[my-task] + command = 'echo' + args = ['hello world'] + isBackground = true +``` + +The task's properties have the following semantic: + +- **command**: the actual command to execute. +- **args**: the arguments passed to the command. can be omitted. +- **options**: override the defaults for `cwd`,`env` or `shell`. + +SpaceVim supports variable substitution in task, The following predefined variables are supported: + +- **\${workspaceFolder}**: - the project root directory +- **\${workspaceFolderBasename}**: - the parent directory name of current project root +- **\${file}**: - the path of current file +- **\${relativeFile}**: - the current file relative to project root +- **\${relativeFileDirname}**: - the current file's dirname relative to workspaceFolder +- **\${fileBasename}**: - the current file's basename +- **\${fileBasenameNoExtension}**: - the current file's basename without file extension +- **\${fileDirname}**: - the current file's dirname +- **\${fileExtname}**: - the current file's extension +- **\${cwd}**: - the task runner's current working directory on startup +- **\${lineNumber}**: - the current selected line number in the active file + +for example: Supposing that you have the following requirements: + +A file located at `/home/your-username/your-project/folder/file.ext` opened in your editor; +The directory `/home/your-username/your-project` opened as your root workspace. +So you will have the following values for each variable: + +- **\${workspaceFolder}**: - `/home/your-username/your-project` +- **\${workspaceFolderBasename}**: - `your-project` +- **\${file}**: - `/home/your-username/your-project/folder/file.ext` +- **\${relativeFile}**: - `folder/file.ext` +- **\${relativeFileDirname}**: - `folder` +- **\${fileBasename}**: - `file.ext` +- **\${fileBasenameNoExtension}**: - `file` +- **\${fileDirname}**: - `/home/your-username/your-project/folder` +- **\${fileExtname}**: - `.ext` +- **\${lineNumber}**: - line number of the cursor + +### Replace text with iedit SpaceVim uses a powerful iedit mode to quick edit multiple occurrences of a symbol or selection. @@ -1727,7 +1782,7 @@ SpaceVim uses a powerful iedit mode to quick edit multiple occurrences of a symb The default color for iedit is `red`/`green` which is based on the current colorscheme. -##### iedit states key bindings +#### iedit states key bindings **State transitions:** @@ -1778,45 +1833,6 @@ The default color for iedit is `red`/`green` which is based on the current color | `Ctrl-h` / `` | delete character before cursor | | `` | delete character after cursor | -#### Commenting - -Comments are handled by [nerdcommenter](https://github.com/scrooloose/nerdcommenter), it’s bound to the following keys. - -| Key Bindings | Descriptions | -| ------------ | ------------------------------------------------------- | -| `SPC ;` | comment operator | -| `SPC c h` | hide/show comments | -| `SPC c l` | toggle comment lines | -| `SPC c L` | comment lines | -| `SPC c u` | uncomment lines | -| `SPC c p` | toggle comment paragraphs | -| `SPC c P` | comment paragraphs | -| `SPC c s` | comment with pretty layout | -| `SPC c t` | toggle comment to line | -| `SPC c T` | comment to line | -| `SPC c y` | toggle comment and yank(TODO) | -| `SPC c Y` | yank and comment | -| `SPC c $` | comment current line from cursor to the end of the line | - -**Tips:** `SPC ;` will start operator mode, in this mode, you can use motion command to comment lines. -For example, `SPC ; 4 j` will comment current line and the following 4 lines. - -#### Multi-Encodings - -SpaceVim uses utf-8 as default encoding. There are four options for these case: - -- fileencodings (fencs): ucs-bom,utf-8,default,latin1 -- fileencoding (fenc): utf-8 -- encoding (enc): utf-8 -- termencoding (tenc): utf-8 (only supported in Vim) - -To fix messy display: `SPC e a` is the mapping for auto detect the file encoding. After detecting file encoding, you can run the command below to fix the encoding: - -```vim -set enc=utf-8 -write -``` - ### Code runner and REPL SpaceVim provides an asynchronously code runner plugin. In most language layer, @@ -1840,6 +1856,42 @@ These following features have been added to runner and repl plugin: - REPL support - Run selected code snippet +### Highlight current symbol + +SpaceVim supports highlighting of the current symbol on demand and add a transient state to easily navigate and rename these symbols. + +It is also possible to change the range of the navigation on the fly to: + +- buffer +- function +- visible area + +To Highlight the current symbol under point press `SPC s h`. + +Navigation between the highlighted symbols can be done with the commands: + +| Key Bindings | Descriptions | +| ------------ | ---------------------------------------------------------------------------- | +| `*` | initiate navigation transient state on current symbol and jump forwards | +| `#` | initiate navigation transient state on current symbol and jump backwards | +| `SPC s e` | edit all occurrences of the current symbol | +| `SPC s h` | highlight the current symbol and all its occurrence within the current range | +| `SPC s H` | go to the last searched occurrence of the last highlighted symbol | + +In highlight symbol transient state: + +| Key Bindings | Descriptions | +| ------------- | ------------------------------------------------------------- | +| `e` | edit occurrences (`*`) | +| `n` | go to next occurrence | +| `N` / `p` | go to previous occurrence | +| `b` | search occurrence in all buffers | +| `/` | search occurrence in whole project | +| `` | toggle highlight current occurrence | +| `r` | change range (function, display area, whole buffer) | +| `R` | go to home occurrence (reset position to starting occurrence) | +| Any other key | leave the navigation transient state | + ### Errors handling SpaceVim uses [neomake](https://github.com/neomake/neomake) to give error feedback on the fly. @@ -1877,121 +1929,14 @@ Custom sign symbol: | ` q n` | jump to next item in quickfix list | | ` q p` | jump to previous item in quickfix list | -### Managing projects -SpaceVim will find the root of the project when a `.git` directory or a `.project_alt.json` file is encountered in the file tree. - -Project manager commands start with `p`: - -| Key Bindings | Descriptions | -| ------------ | ----------------------------------------------------- | -| `SPC p '` | open a shell in project’s root (need the shell layer) | - -#### Searching files in project - -| Key Bindings | Descriptions | -| ------------ | ---------------------------------------- | -| `SPC p f` | find files in current project | -| `SPC p /` | fuzzy search for text in current project | -| `SPC p k` | kill all buffers of current project | -| `SPC p t` | find project root | -| `SPC p p` | list all projects | - -#### Custom alternate file - -To manager the alternate file of the project, you need to create a `.project_alt.json` file -in the root of your project. Then you can use command `:A` to jump to the alternate file of -current file. You can also specific the type of alternate file, for example `:A doc`. -With a bang `:A!`, SpaceVim will paser the configuration file additionally. If no type specificed, -the default type `alternate` will be used. - -here is an example of `.project_alt.json`: - -```json -{ - "autoload/SpaceVim/layers/lang/*.vim": { - "doc": "docs/layers/lang/{}.md", - "test": "test/layer/lang/{}.vader" - } -} -``` - -## Tasks - -To integrate with external tools, SpaceVim introduce a task manager system, -which is similar to vscode tasks-manager. There are two kinds of task configuration -file: global tasks configuration(`~/.SpaceVim.d/tasks.toml`) and local configuration(`.SpaceVim.d/tasks.toml`). - -| Key Bindings | Descriptions | -| ------------ | ----------------------------- | -| `SPC p t e` | edit tasks configuration file | -| `SPC p t r` | select task to run | - - -this is basic task configuration for running `echo hello world`, and print results to runner windows. - -```toml -[my-task] - command = 'echo' - args = ['hello world'] -``` - -![task hello world](https://user-images.githubusercontent.com/13142418/74582981-74049900-4ffd-11ea-9b38-7858042225b9.png) - -To run task in the background, you need to set `isBackground` to `true`: - -```toml -[my-task] - command = 'echo' - args = ['hello world'] - isBackground = true -``` - -The task's properties have the following semantic: - -- **command**: the actual command to execute. -- **args**: the arguments passed to the command. can be omitted. -- **options**: override the defaults for `cwd`,`env` or `shell`. - -SpaceVim supports variable substitution in task, The following predefined variables are supported: - -- **${workspaceFolder}**: - the project root directory -- **${workspaceFolderBasename}**: - the parent directory name of current project root -- **${file}**: - the path of current file -- **${relativeFile}**: - the current file relative to project root -- **${relativeFileDirname}**: - the current file's dirname relative to workspaceFolder -- **${fileBasename}**: - the current file's basename -- **${fileBasenameNoExtension}**: - the current file's basename without file extension -- **${fileDirname}**: - the current file's dirname -- **${fileExtname}**: - the current file's extension -- **${cwd}**: - the task runner's current working directory on startup -- **${lineNumber}**: - the current selected line number in the active file - - -for example: Supposing that you have the following requirements: - -A file located at `/home/your-username/your-project/folder/file.ext` opened in your editor; -The directory `/home/your-username/your-project` opened as your root workspace. -So you will have the following values for each variable: - -- **${workspaceFolder}**: - `/home/your-username/your-project` -- **${workspaceFolderBasename}**: - `your-project` -- **${file}**: - `/home/your-username/your-project/folder/file.ext` -- **${relativeFile}**: - `folder/file.ext` -- **${relativeFileDirname}**: - `folder` -- **${fileBasename}**: - `file.ext` -- **${fileBasenameNoExtension}**: - `file` -- **${fileDirname}**: - `/home/your-username/your-project/folder` -- **${fileExtname}**: - `.ext` -- **${lineNumber}**: - line number of the cursor - -## EditorConfig +### EditorConfig SpaceVim has supported [EditorConfig](http://editorconfig.org/), a configuration file to “define and maintain consistent coding styles between different editors and IDEs.” To customize your editorconfig experience, read the [editorconfig-vim package’s documentation](https://github.com/editorconfig/editorconfig-vim/blob/master/README.md). -## Vim Server +### Vim Server SpaceVim starts a server at launch. This server is killed whenever you close your Vim windows. @@ -2007,6 +1952,8 @@ Use `svc` to open a file in the existing Vim server, or use `nsvc` to open a fil ![server-and-client](https://user-images.githubusercontent.com/13142418/32554968-7164fe9c-c4d6-11e7-95f7-f6a6ea75e05b.gif) + + ## Achievements diff --git a/wiki/cn/Following-HEAD.md b/wiki/cn/Following-HEAD.md index c00e9544c..edf2bb4a3 100644 --- a/wiki/cn/Following-HEAD.md +++ b/wiki/cn/Following-HEAD.md @@ -7,6 +7,56 @@ +#### 新特性 + +- Add backgroud task support [#3351](https://github.com/SpaceVim/SpaceVim/pull/3351) +- Add file copy key binding [#3348](https://github.com/SpaceVim/SpaceVim/pull/3348) +- Add tasks support [#3346](https://github.com/SpaceVim/SpaceVim/pull/3346) +- Add bang support for Alt file command [#3331](https://github.com/SpaceVim/SpaceVim/pull/3331) +- Add lang#janet layer [#3330](https://github.com/SpaceVim/SpaceVim/pull/3330) +- Add lang#xquery layer [#3327](https://github.com/SpaceVim/SpaceVim/pull/3327) +- Add lang#lasso layer [#3314](https://github.com/SpaceVim/SpaceVim/pull/3314) +- Add lang#asepctj layer [#3313](https://github.com/SpaceVim/SpaceVim/pull/3313) +- Add lang#ring layer [#3311](https://github.com/SpaceVim/SpaceVim/pull/3311) +- Add type support for A plugin [#3308](https://github.com/SpaceVim/SpaceVim/pull/3308) +- Add lang#wdl layer [#3307](https://github.com/SpaceVim/SpaceVim/pull/3307) +- Add icons and git status to defx [#3303](https://github.com/SpaceVim/SpaceVim/pull/3303) +- Add chez dialect for lang#scheme layer [#3302](https://github.com/SpaceVim/SpaceVim/pull/3302) +- Add support for config alt file [#3283](https://github.com/SpaceVim/SpaceVim/pull/3283) +- Add blog about code runner and REPL [#2390](https://github.com/SpaceVim/SpaceVim/pull/2390) + +#### 问题修复 + +- fix: Make tmux layer use statusline_iseparator and added separators. [#3342](https://github.com/SpaceVim/SpaceVim/pull/3342) +- Fix(lsp): multiple language server registration bug [#3338](https://github.com/SpaceVim/SpaceVim/pull/3338) +- Fix compile info [#3329](https://github.com/SpaceVim/SpaceVim/pull/3329) +- Fix lua runtime path [#3317](https://github.com/SpaceVim/SpaceVim/pull/3317) +- Fix runner and repl [#3305](https://github.com/SpaceVim/SpaceVim/pull/3305) +- Fix python runner [#3304](https://github.com/SpaceVim/SpaceVim/pull/3304) +- Fix shell key binding [#3293](https://github.com/SpaceVim/SpaceVim/pull/3293) +- Fix code runner [#3292](https://github.com/SpaceVim/SpaceVim/pull/3292) +- Fix minor typo 'opjects' -> 'objects' [#3284](https://github.com/SpaceVim/SpaceVim/pull/3284) +- Fix spc s a j text [#3281](https://github.com/SpaceVim/SpaceVim/pull/3281) + +#### 未知 + +- Remove plugins [#3352](https://github.com/SpaceVim/SpaceVim/pull/3352) +- Ale owership transferred from w0rp to dense-analysis [#3345](https://github.com/SpaceVim/SpaceVim/pull/3345) +- Replace markdown preview plugins [#3337](https://github.com/SpaceVim/SpaceVim/pull/3337) +- Rust layer enhancement [#3336](https://github.com/SpaceVim/SpaceVim/pull/3336) +- Improve general doc [#3333](https://github.com/SpaceVim/SpaceVim/pull/3333) +- Update ring.md [#3328](https://github.com/SpaceVim/SpaceVim/pull/3328) +- Type: change php to C/C++ [#3325](https://github.com/SpaceVim/SpaceVim/pull/3325) +- Improve lang#r layer [#3322](https://github.com/SpaceVim/SpaceVim/pull/3322) +- Skip home directory [#3321](https://github.com/SpaceVim/SpaceVim/pull/3321) +- feat: Add icons and git status to defx. [#3320](https://github.com/SpaceVim/SpaceVim/pull/3320) +- Improve project manager plugin [#3316](https://github.com/SpaceVim/SpaceVim/pull/3316) +- Improve flygrep [#3312](https://github.com/SpaceVim/SpaceVim/pull/3312) +- Update Wiki [#3310](https://github.com/SpaceVim/SpaceVim/pull/3310) +- Update doc [#3306](https://github.com/SpaceVim/SpaceVim/pull/3306) +- Improve scheme layer [#3299](https://github.com/SpaceVim/SpaceVim/pull/3299) +- Improve lint [#3291](https://github.com/SpaceVim/SpaceVim/pull/3291) +- Update branch name via job [#3280](https://github.com/SpaceVim/SpaceVim/pull/3280) diff --git a/wiki/en/Following-HEAD.md b/wiki/en/Following-HEAD.md index 169cecdc3..6b780258c 100644 --- a/wiki/en/Following-HEAD.md +++ b/wiki/en/Following-HEAD.md @@ -11,59 +11,54 @@ The next release is v1.3.0: #### New Features -- Add lang#goby layer [#3055](https://github.com/SpaceVim/SpaceVim/pull/3055) -- Add ~ keybinding for iedit [#3046](https://github.com/SpaceVim/SpaceVim/pull/3046) -- add fish script support [#3033](https://github.com/SpaceVim/SpaceVim/pull/3033) -- Add: add new layer lang#j [#3032](https://github.com/SpaceVim/SpaceVim/pull/3032) -- Add vertical split support [#2999](https://github.com/SpaceVim/SpaceVim/pull/2999) -- Add debug support for powershell [#2961](https://github.com/SpaceVim/SpaceVim/pull/2961) -- Add additional bindings from coc.nvim for c layer [#2967](https://github.com/SpaceVim/SpaceVim/pull/2967) -- Add Leader f f to fzf layer [#2971](https://github.com/SpaceVim/SpaceVim/pull/2971) - -#### Feature Changes - -- Change: rename tags layer to gtags layer [#3030](https://github.com/SpaceVim/SpaceVim/pull/3030) -- Change: fix csharp layer and update doc (#2935). [#3007](https://github.com/SpaceVim/SpaceVim/pull/3007) +- Add backgroud task support [#3351](https://github.com/SpaceVim/SpaceVim/pull/3351) +- Add file copy key binding [#3348](https://github.com/SpaceVim/SpaceVim/pull/3348) +- Add tasks support [#3346](https://github.com/SpaceVim/SpaceVim/pull/3346) +- Add bang support for Alt file command [#3331](https://github.com/SpaceVim/SpaceVim/pull/3331) +- Add lang#janet layer [#3330](https://github.com/SpaceVim/SpaceVim/pull/3330) +- Add lang#xquery layer [#3327](https://github.com/SpaceVim/SpaceVim/pull/3327) +- Add lang#lasso layer [#3314](https://github.com/SpaceVim/SpaceVim/pull/3314) +- Add lang#asepctj layer [#3313](https://github.com/SpaceVim/SpaceVim/pull/3313) +- Add lang#ring layer [#3311](https://github.com/SpaceVim/SpaceVim/pull/3311) +- Add type support for A plugin [#3308](https://github.com/SpaceVim/SpaceVim/pull/3308) +- Add lang#wdl layer [#3307](https://github.com/SpaceVim/SpaceVim/pull/3307) +- Add icons and git status to defx [#3303](https://github.com/SpaceVim/SpaceVim/pull/3303) +- Add chez dialect for lang#scheme layer [#3302](https://github.com/SpaceVim/SpaceVim/pull/3302) +- Add support for config alt file [#3283](https://github.com/SpaceVim/SpaceVim/pull/3283) +- Add blog about code runner and REPL [#2390](https://github.com/SpaceVim/SpaceVim/pull/2390) #### Bug Fixs -- Fixed typo 'yarked' to 'yanked' [#3059](https://github.com/SpaceVim/SpaceVim/pull/3059) -- Fix keybindings for GitGutter Hunks [#3049](https://github.com/SpaceVim/SpaceVim/pull/3049) -- Fix install script [#3048](https://github.com/SpaceVim/SpaceVim/pull/3048) -- Fixed output error where open file by flyGrep [#3041](https://github.com/SpaceVim/SpaceVim/pull/3041) -- Fix #2897 [#3021](https://github.com/SpaceVim/SpaceVim/pull/3021) -- Fix: fugitive blame [#3006](https://github.com/SpaceVim/SpaceVim/pull/3006) -- fix shortcuts/docs about marking spelling [#3003](https://github.com/SpaceVim/SpaceVim/pull/3003) -- fix typos [#3000](https://github.com/SpaceVim/SpaceVim/pull/3000) -- fix a map bug cscope[#2952](https://github.com/SpaceVim/SpaceVim/pull/2952) -- Fix: Issue #2948 function call update from deoplete#mappings#smart_close_p… [#2954](https://github.com/SpaceVim/SpaceVim/pull/2954) -- Fix errors in Go layer shortcuts in the documentation [#2955](https://github.com/SpaceVim/SpaceVim/pull/2955) -- fix a map bug cscope[#2953](https://github.com/SpaceVim/SpaceVim/pull/2953) -- Fix typo [#2965](https://github.com/SpaceVim/SpaceVim/pull/2965) -- Fix typo in edit.md [#2970](https://github.com/SpaceVim/SpaceVim/pull/2970) +- fix: Make tmux layer use statusline_iseparator and added separators. [#3342](https://github.com/SpaceVim/SpaceVim/pull/3342) +- Fix(lsp): multiple language server registration bug [#3338](https://github.com/SpaceVim/SpaceVim/pull/3338) +- Fix compile info [#3329](https://github.com/SpaceVim/SpaceVim/pull/3329) +- Fix lua runtime path [#3317](https://github.com/SpaceVim/SpaceVim/pull/3317) +- Fix runner and repl [#3305](https://github.com/SpaceVim/SpaceVim/pull/3305) +- Fix python runner [#3304](https://github.com/SpaceVim/SpaceVim/pull/3304) +- Fix shell key binding [#3293](https://github.com/SpaceVim/SpaceVim/pull/3293) +- Fix code runner [#3292](https://github.com/SpaceVim/SpaceVim/pull/3292) +- Fix minor typo 'opjects' -> 'objects' [#3284](https://github.com/SpaceVim/SpaceVim/pull/3284) +- Fix spc s a j text [#3281](https://github.com/SpaceVim/SpaceVim/pull/3281) #### Unmarked PRs -- Update crystal layer [#3067](https://github.com/SpaceVim/SpaceVim/pull/3067) -- Denite fix [#3066](https://github.com/SpaceVim/SpaceVim/pull/3066) -- Refactor lua initialization [#3065](https://github.com/SpaceVim/SpaceVim/pull/3065) -- deoplete and denite backward compatibility [#3058](https://github.com/SpaceVim/SpaceVim/pull/3058) -- Update hint desc [#3050](https://github.com/SpaceVim/SpaceVim/pull/3050) -- detach iedit plugin [#3047](https://github.com/SpaceVim/SpaceVim/pull/3047) -- urlescape spaces in font names [#3042](https://github.com/SpaceVim/SpaceVim/pull/3042) -- Googlegroups [#3040](https://github.com/SpaceVim/SpaceVim/pull/3040) -- Naming rules [#3037](https://github.com/SpaceVim/SpaceVim/pull/3037) -- Python file head [#3036](https://github.com/SpaceVim/SpaceVim/pull/3036) -- Improve file head support [#3034](https://github.com/SpaceVim/SpaceVim/pull/3034) -- Update cscope layer [#3023](https://github.com/SpaceVim/SpaceVim/pull/3023) -- Ctrlp message [#3022](https://github.com/SpaceVim/SpaceVim/pull/3022) -- Improve: make ctrlp layer works better [#3015](https://github.com/SpaceVim/SpaceVim/pull/3015) -- plugin install failed to call \_append_buf_line in WIN10 [#3011](https://github.com/SpaceVim/SpaceVim/pull/3011) -- Update manager.vim [#3010](https://github.com/SpaceVim/SpaceVim/pull/3010) -- Website: Add git-plugin documentation to git layer [#3005](https://github.com/SpaceVim/SpaceVim/pull/3005) -- Version [#2956](https://github.com/SpaceVim/SpaceVim/pull/2956) -- Update version to v1.2.0-dev [#2732](https://github.com/SpaceVim/SpaceVim/pull/2732) -- On Windows, send CTRL+r if '+' register is not given [#2950](https://github.com/SpaceVim/SpaceVim/pull/2950) +- Remove plugins [#3352](https://github.com/SpaceVim/SpaceVim/pull/3352) +- Ale owership transferred from w0rp to dense-analysis [#3345](https://github.com/SpaceVim/SpaceVim/pull/3345) +- Replace markdown preview plugins [#3337](https://github.com/SpaceVim/SpaceVim/pull/3337) +- Rust layer enhancement [#3336](https://github.com/SpaceVim/SpaceVim/pull/3336) +- Improve general doc [#3333](https://github.com/SpaceVim/SpaceVim/pull/3333) +- Update ring.md [#3328](https://github.com/SpaceVim/SpaceVim/pull/3328) +- Type: change php to C/C++ [#3325](https://github.com/SpaceVim/SpaceVim/pull/3325) +- Improve lang#r layer [#3322](https://github.com/SpaceVim/SpaceVim/pull/3322) +- Skip home directory [#3321](https://github.com/SpaceVim/SpaceVim/pull/3321) +- feat: Add icons and git status to defx. [#3320](https://github.com/SpaceVim/SpaceVim/pull/3320) +- Improve project manager plugin [#3316](https://github.com/SpaceVim/SpaceVim/pull/3316) +- Improve flygrep [#3312](https://github.com/SpaceVim/SpaceVim/pull/3312) +- Update Wiki [#3310](https://github.com/SpaceVim/SpaceVim/pull/3310) +- Update doc [#3306](https://github.com/SpaceVim/SpaceVim/pull/3306) +- Improve scheme layer [#3299](https://github.com/SpaceVim/SpaceVim/pull/3299) +- Improve lint [#3291](https://github.com/SpaceVim/SpaceVim/pull/3291) +- Update branch name via job [#3280](https://github.com/SpaceVim/SpaceVim/pull/3280)