.
微型宏: 重复上一次(插入命令 至 <Esc>
)录制动作
;
重复 t/T/f/F
@
| 命令 | 作用 |
| :------------ | :------------------- |
| @{register}
| 重复寄存器中的宏命令 |
| @:
| 重复任意 Ex 命令 |
| @@
| 重复@命令 |
:&
重复:substitute
| 目的 | 操作 | 重复 | 回退 |
| :----------------------- | :---------------------- | :--- | :--- |
| 做出一个修改 | {edit}
| .
| u
|
| 在行内查找下一指定字符 | f{char}/t{char}
| ;
| ,
|
| 在行内查找上一指定字符 | F{char}/T{char}
| ;
| ,
|
| 在文档中查找下一处匹配项 | /pattern<CR>
| n
| N
|
| 在文档中查找上一处匹配项 | ?pattern<CR>
| n
| N
|
| 执行替换 | :s/target/replacement
| &
| u
|
| 执行一系列修改 | qx{changes}q
| @x
| u
|
| 复合命令 | 等效的长命令 |
| :------- | :----------- |
| C | c$
|
| s | cl
|
| S | ^c
|
| I | ^i
|
| A | $a
|
| o | A<CR>
|
| O | ko
|
操作符命令 + 动作命令 (范围), Operator + {Motion}
:
:h operator. :h :map-operator.
| 命令 | 作用 |
| :--- | :------------------------------------- |
| c
| 修改 |
| d
| 删除 |
| y
| 复制到寄存器 |
| g~
| 反转大小写 |
| gu
| 转换为小写 |
| gU
| 转换为大写 |
| >
| 增加缩进 |
| <
| 减小缩进 |
| =
| 自动缩进 |
| !
| 使用外部程序过滤 {motion}
所跨越的行 |
a
(all)/i
(in)/t
(til).e.g $
/2l
/aw
/ap
或 /patterns
.
/patterns
.0
/$
: 行首/尾.i
/a
.| 分隔符文本对象 | 选择区域 |
| :------------- | :------------------------------ |
| a)
或 ab
| 一对圆括号 (parentheses)
|
| i)
或 ib
| 圆括号 (parentheses)
内部 |
| a}
或 aB
| 一对花括号 {braces}
|
| i}
或 iB
| 花括号 {braces}
内部 |
| a]
| 一对方括号 [brackets]
|
| i]
| 方括号 [brackets]
内部 |
| a>
| 一对尖括号 <angle brackets>
|
| i>
| 尖括号 <angle brackets>
内部 |
| a'
| 一对单引号 'single quotes'
|
| i'
| 单引号 'single quotes'
内部 |
| a"
| 一对双引号 "double quotes"
|
| i"
| 双引号 "double quotes"
内部 |
| a` | 一对反引号 `backTicks` |
| i` | 反引号 `backTicks` 内部 |
| at
| 一对 XML 标签 <xml>tags</xml>
|
| it
| XML 标签内部 |
| 范围文本对象 | 选择范围 |
| :----------- | :----------------- |
| iw
| 当前单词 |
| aw
| 当前单词及一个空格 |
| iW
| 当前字串 |
| aW
| 当前字串及一个空格 |
| is
| 当前句子 |
| as
| 当前句子及一个空格 |
| ip
| 当前段落 |
| ap
| 当前段落及一个空行 |
| 复合命令 | 等效的长命令 |
| :------- | :----------- |
| C
| c$
|
| s
| cl
|
| S
| ^c
|
| I
| ^i
|
| A
| $a
|
| o
| A<CR>
|
| O
| ko
|
{register}{operator}{motion}
/ <C-r>{register}
:
| 寄存器符号 | 作用 | 使用范例 |
| :---------- | :------------------------ | :------------------------------ |
| ""
| 无名寄存器 | e.g yiw
/ diw
|
| "a
~ "z
| 有名寄存器 | e.g "ayiw
|
| "0
| 复制专用寄存器 | e.g yiw
+ diw
+ "0p
|
| "_
| 黑洞寄存器/有去无回寄存器 | e.g "_diw
|
| "+
| 系统剪贴板寄存器 | e.g "+p
/ InsertMode <C-r>+
|
| "*
| 上次高亮文本寄存器 | e.g "+p
/ InsertMode <C-r>*
|
| "=
| 表达式寄存器 | e.g "+p
/ InsertMode <C-r>=
|
| "%
| 当前文件名 | |
| "#
| 轮换文件名 | |
| ".
| 上次插入的文本 | |
| ":
| 上次执行的 Ex 命令 | |
| "/
| 上次查找的模式 | |
:reg {register}
显示寄存器内容
{number}{register}d/s/x{motion}
.
{number}{register}y{motion}
.
{number}{register}p{motion}
.
*
选中包含光标处字符的单词
| 命令 | 光标动作 |
| :------------ | :-------------------------------- |
| %
| 跳转至下一个配对的范围符号 |
| j
| 向下移动一个实际行 |
| gj
| 向下移动一个屏幕行 |
| k
| 向上移动一个实际行 |
| gk
| 向上移动一个屏幕行 |
| w
| 正向移动到下一单词的开头 |
| b
| 反向移动到当前单词/上一单词的开头 |
| e
| 正向移动到当前单词/下一单词的结尾 |
| ge
| 反向移动到上一单词的结尾 |
| 0
| 移动到实际行的行首 |
| g0
| 移动到屏幕行的行首 |
| $
| 移动到实际行的行尾 |
| g$
| 移动到屏幕行的行尾 |
| ^
| 移动到实际行的第一个非空白字符 |
| g^
| 移动到屏幕行的第一个非空白字符 |
| _
| first char of line |
| g_
| last char of line |
| H
| jump to top of screen |
| M
| jump to middle of screen |
| L
| jump to bottom of screen |
| zt
| current line to top of screen |
| zz
| current line to middle of screen |
| zb
| current line to bottom of screen |
| <C-u>/<C-d>
| 翻半页 |
| <C-b>/<C-f>
| 翻半页 |
| gd
| jump to definition |
| gi
| jump to last insert position |
| #
| jump to previous same word |
| *
| jump to next same word |
:set path?
查看'path'值
| 命令 | 作用 |
| :------------------------------------- | :------------------------------ |
| [count]G
| 跳转到指定的行号 |
| /pattern<CR>
/?pattern<CR>
n
N
| 跳转到下一个/上一个模式出现之处 |
| %
| 跳转到匹配的括号所在之处 |
| (
)
| 跳转到上一句/下一句的开头 |
| {
}
| 跳转到上一段/下一段的开头 |
| gf
| 跳转到光标下的文件名 |
| gg
| 文首 |
| G
| 文尾 |
| <N>gg
| jump to line |
| <N>%
| jump to percent of file |
| <C-]>
| 跳转到光标下关键字的定义之处 |
| `{mark}
| 跳转到一个位置标记 |
m{alpha}
标记当前光标处, 标记名为 alpha
.
| 位置标记 | 跳转到 |
| :---------- | :------------------------------- |
| `{alpha}
| 自定义标记处 |
| `` | 当前文件中上次跳转动作之前的位置 |
| `.
| 上次修改的地方 |
| `^
| 上次插入的地方 |
| `[
| 上次修改或复制的起始位置 |
| `]
| 上次修改或复制的结束位置 |
| `<
| 上次高亮选区的起始位置 |
| `>
| 上次高亮选区的结束位置 |
| 命令 | 作用 |
| :---- | :----------------------------------- |
| ]s
| 跳到下一处拼写错误 |
| [s
| 跳到上一处拼写错误 |
| z=
| 为当前单词提供更正建议 |
| zg
| 把当前单词添加到拼写文件中 |
| zw
| 把当前单词从拼写文件中删除 |
| zug
| 撤销针对当前单词的 zg
或 zw
命令 |
| 命令 | 光标动作 |
| :--- | :-------------------------------- |
| w
| 正向移动到下一单词的开头 |
| b
| 反向移动到当前单词/上一单词的开头 |
| e
| 正向移动到当前单词/下一单词的结尾 |
| ge
| 反向移动到上一单词的结尾 |
| ;
| 重复/f/F/t/T |
| ,
| 撤销/f/F/t/T |
<C-a>/<C-x>
: 查找数字,递增/减数字
| 原字符 | 作用 | 范例 |
| :---------- | :--------------------------------- | :---------------- |
| \c
| 忽略大小写 | |
| \C
| 大小写敏感 | |
| \v
| 开启 very magic 模式(可省略转义符) |
| <
与 >
| \v 模式下的单词定界符 | |
| %(
与 )
| 分组符 | /\v%(And\|D)rew
|
| \V
| 开启原义模式(可省略转义符): |
| \w
| 匹配单词类字符(alpha,number,_
) | |
| \W
| 匹配非单词字符 | |
| \x
| 匹配十六进制数[0-9a-fA-F]
| |
| \s
| 匹配空白符/
换行符 | |
| \zs
| 界定一个匹配的开始 | |
| \ze
| 界定一个匹配的结束 | |
置于 patterns 末尾
| Flags | 作用 |
| :---- | :-------------------------------------------------------- |
| /g
| 全局 |
| /e
| 光标至匹配词末尾 |
| /c
| 确认或拒绝每一处修改 |
| /n
| 会抑制正常的替换行为,只报告本次 substitute 命令匹配的个数 |
| /e
| 屏蔽错误提示 |
| /&
| 重复上次 flags |
:h gU
gU{motion}
: 小写转大写 e.gUaw.r{char}
: 替换光标所在字符.gr{char}
.R/gR
进入替换模式.>{motion}
e.g >G: 缩进全文
={motion}
gg=G
自动缩进全文
\\{motion}
vim-commentary 插件
\\\
注释行.\\ap
注释段落.<C-r>
: 前进命令.<C-o>
: 进入临时 normal 模式.:h digraphs-default :h digraph-table :digraphs
| 命令 | 作用 |
| :-------------------- | :----------------------------------------- |
| <C-v>{123}
| 以十进制字符编码插入字符 |
| <C-v>u{1234}
| 以十六进制字符编码插入字符 |
| <C-v>{nonDigit}
| 按原义插入非数字字符 |
| <C-k>{char1}{char2}
| 插入以二合字母 {char1}{char2}
表示的字符 |
| 命令 | 作用 |
| :------ | :----------------------- |
| <C-h>
| 删除前一个字符(同退格键) |
| <C-w>
| 删除前一个单词 |
| <C-u>
| 删至行首 |
<C-r>{register}
粘贴<C-r><C-p>{register}
智能粘贴| 寄存器 | 作用 | | :----- | :---------------------------------------------- | | 0 | 普通寄存器 | | = | 算术寄存器: 在下方输入表达式后,自动粘贴运算结果 |
| 命令 | 作用 |
| :-------- | :-------------------------------------- |
| v
| 激活面向字符的可视模式 |
| V
| 激活面向行的可视模式 |
| <C-v>
| 激活面向列块的可视模式 |
| gv
| 重选上次的高亮选区 |
| shift-v
| select current line |
| gq
| split selected line into multiple lines |
:h ex-cmd-index
黑魔法列表:
:normal
将 Ex 命令与 Normal 指令结合在一起的黑魔法:args
文件列表:argdo {ExCommands}
对存于文件列表的所有文件执行 Ex 命令:global
对 patterns 执行 EX 命令| 命令 | 作用 |
| :---------------------------------------------- | :-------------------------- |
| :edit/:write
| 读写文件 |
| :tabnew
| 创建新标签页 |
| :split
| 分割窗口 |
| :prev/:next
| 前/后标签页 |
| :bprev/:bnext
| 前/后缓冲区列表 |
| :copy
| 命令对快速复制一行非常好用 |
| :[range]delete [x]
| 删除范围内的行到寄存器 x 中 |
| :[range]yank [x]
| 复制范围的行到寄存器 x 中 |
| :[line]put [x]
| 在行后粘贴寄存器 x 中的内容 |
| :[range]copy/t/co{address}
| 行拷贝到 {address}
行之下 |
| :[range]move/m {address}
| 行移动到 {address}
行之下 |
| :[range]join
| 连接指定范围内的行 |
| :[range]normal {commands}
| 每一行执行命令 {commands}
|
| :[range]substitute/{pattern}/{string}/[flags]
| {pattern}
替换 {string}
|
| :[range]global/{pattern}/[cmd]
| 对指定范围内匹配 |
| :shell
| 打开内置 shell |
| :!{commands}
| 执行外部命令 |
| :args {argList}
| 文件列表 |
| :argdo {ExCommands}
| 对文件列表中的文件执行命令 |
| :grep
| |
| :vimgrep
| |
| :make
| |
cnoremap <expr> %% getcmdtype( ) == ':' ? expand('%:h').'/' : '%%'
<C-d>
.
<C-r><C-w>
: 将光标所在单词粘贴至命令行.
q/
或 q
: 弹出历史记录窗口.
{start}, {end}
..
表示当前行, $
表示最后一行, %
表示所有行./start_pattern/,/end_pattern/
| 符号 | 地址 |
| :--- | :--------------------------- |
| 1
| 文件的第一行 |
| $
| 文件的最后一行 |
| 0
| 虚拟行, 位于文件第一行上方 |
| .
| 光标所在行 |
| 'm
| 包含位置标记 m 的行 |
| '<
| 高亮选区的起始行 |
| '>
| 高亮选区的结束行 |
| %
| 整个文件 (:1,$
的简写形式) |
1
: 第 1 行.%
: 所有行.2,$
: 第 2 行 - 最后一行./<html>/,/<\/html>/
: 标签 html 所有行.@
: 重复命令.<C-o>
撤销命令.| 命令 | 作用 |
| :--------------------- | :------------------------------------------------- |
| :shell
| 启动一个 shell (输入 exit
返回 Vim) |
| :!{cmd}
| 在 shell 中执行 {cmd}
|
| :read !{cmd}
| 在 shell 中执行 {cmd}
, 将标准输出插入到光标下方 |
| :[range]write !{cmd}
| 在 shell 中执行 {cmd}
, 以 [range]
为其标准输入 |
| :[range]!{filter}
| 使用外部程序 {filter}
过滤指定的 [range]
|
:[range]s[substitute]/{pattern}/{string}/[flags]
| 原字符 | 作用 |
| :---------- | :--------------------------------- |
| \c
| 忽略大小写 |
| \C
| 大小写敏感 |
| \v
| 开启 very magic 模式(可省略转义符) |
| <
与 >
| \v
模式下的单词定界符 |
| %(
与 )
| 分组符 |
| \V
| 开启原义模式(可省略转义符) |
| \w
| 匹配单词类字符(alpha,number,_
) |
| \W
| 匹配非单词字符 |
| \x
| 匹配十六进制数 [0-9a-fA-F]
|
| \s
| 匹配空白符/换行符 |
| \zs
| 界定一个匹配的开始 |
| \ze
| 界定一个匹配的结束 |
置于 patterns 末尾
| Flags | 作用 | | :---- | :-------------------------------------------------------- | | /g | 全局 | | /e | 光标至匹配词末尾 | | /c | 确认或拒绝每一处修改 | | /n | 会抑制正常的替换行为,只报告本次 substitute 命令匹配的个数 | | /e | 屏蔽错误提示 | | /& | 重复上次 flags |
| /c 后选项 | 作用 |
| :-------- | :-------------------------------- |
| y | 替换此处匹配 |
| n | 忽略此处匹配 |
| q | 退出替换过程 |
| l | “last” —— 替换此处匹配后退出 |
| a | “all” —— 替换此处与之后所有的匹配 |
| <C-e>
| 向上滚动屏幕 |
| <C-y>
| 向下滚动屏幕 |
| 符号 | 作用 |
| :--------------- | :-------------------------------------------------------- |
| \r
| 插入一个换行符 |
| \t
| 插入一个制表符 |
| \\
| 插入一个反斜杠 |
| \1
| 插入第 1 个子匹配 |
| \2
| 插入第 2 个子匹配(以此类推,最多到\9
) |
| \0
| 插入匹配模式的所有内容 |
| &
| 插入匹配模式的所有内容 |
| ~
| 使用上一次调用 :substitute
时的 {string}
|
| \={Vim script}
| 执行 {Vim Script}
表达式, 将返回结果作为替换 {string}
|
:[range] global[!] /{pattern}/[ExCommands]
.:g/{start}/ .,{finish} [cmd]
.':g/re/d' 删除所有的匹配行 ':v/re/d' 只保留匹配行 追加存储 TODO 项至 a 寄存器
:g/TODO/yank A
>:reg a
built-in fuzzy file search :find
or :tabnew
set nocompatible
set number
syntax on
filetype plugin indent on
" :find filepath
" :tabnew filepath
" :tabp :tabn
" :b partOfFilepath
" :ls
set path+=**
set wildmenu
set wildmode=list:longest,full
:ls
to list opened file, :b
to jump to specific file
| 命令 | 作用 |
| :----------------------------- | :--------------- |
| :b{bufferNumber/bufferName}
| 跳转至指定缓冲区 |
| :bd{bufferNumber/bufferName}
| 删除指定缓冲区 |
| 命令 | 作用 |
| :--------- | :--------------------------------------- |
| :w[rite]
| 把缓冲区内容写入磁盘 |
| :e[dit]!
| 把磁盘文件内容读入缓冲区(即回滚所做修改) |
| :qa[ll]!
| 关闭所有窗口,摒弃修改而无需警告 |
| :wa[ll]!
| 把所有改变的缓冲区写入磁盘 |
| 命令 | 作用 |
| :----------------- | :------------------------------------------ |
| <C-w>s
| 水平切分当前窗口, 新窗口仍显示当前缓冲区 |
| <C-w>v
| 垂直切分当前窗口, 新窗口仍显示当前缓冲区 |
| :sp[lit] {file}
| 水平切分当前窗口, 并在新窗口中载入 {file}
|
| :vsp[lit] {file}
| 垂直切分当前窗口, 并在新窗口中载入 {file}
|
| 命令 | 作用 |
| :------------------ | :--------------- |
| <C-w>w/<C-w><C-w>
| 在窗口间循环切换 |
| <C-w>h
| 切换到左边的窗口 |
| <C-w>j
| 切换到下边的窗口 |
| <C-w>k
| 切换到上边的窗口 |
| <C-w>l
| 切换到右边的窗口 |
:h window-moving
| 命令 | 作用 |
| :------------------ | :--------------------------------- |
| <C-w>=
| 使所有窗口等宽、等高 |
| <C-w>_
| 最大化活动窗口的高度 |
| <C-w>\|
| 最大化活动窗口的宽度 |
| [N]<C-w>_
| 把活动窗口的高度设为 [N]
行 |
| [N]<C-w>\|
| 把活动窗口的宽度设为 [N]
列 |
| :windo lcd {path}
| 设置当前标签页的所有窗口的工作目录 |
| Ex 命令 | Normal 命令 | 作用 |
| :--------- | :---------- | :------------------------------ |
| :clo[se]
| <C-w>c
| 关闭活动窗口 |
| :on[ly]
| <C-w>o
| 只保留活动窗口,关闭其他所有窗口 |
| 命令 | 作用 |
| :---------------------- | :----------------------------------- |
| :tabe[dit] {filename}
| 在新标签页中打开 {filename}
|
| <C-w>T
| 把当前窗口移到一个新标签页 |
| :tabc[lose]
| 关闭当前标签页及其中的所有窗口 |
| :tabo[nly]
| 只保留活动标签页, 关闭所有其他标签页 |
| Ex 命令 | Normal 命令 | 作用 |
| :--------------- | :---------- | :-------------------------- |
| :tabn[ext] {N}
| {N}gt
| 切换到编号为 {N}
的标签页 |
| :tabn[ext]
| gt
| 切换到下一标签页 |
| :tabp[revious]
| gT
| 切换到上一标签页 |
-重排标签页
:tabmove [N] - N 为 0 时,当前标签页移至首;N 省略时,至尾
| Ex 命令 | 作用 |
| :------------ | :---------------------------------------- |
| :edit ./:e.
| 打开文件管理器,并显示当前工作目录 |
| :Explore/:E
| 打开文件管理器,并显示活动缓冲区所在的目录 |
| 命令 | 作用 |
| :-------------------- | :-------------------------------------------------- |
| q{register}
| 开始录制宏,并将其保存到指定寄存器,再次按 q 结束录制 |
| {number}@{register}
| 命令执行指定寄存器的内容 |
| @@
| 重复 @
命令 |
register
为小写时,覆盖录制宏;register
为大写时, 追加录制宏.
git clone https://github.com/VundleVim/Vundle.vim ~/.vim/bundle/Vundle.vim
:PluginInstall
:find
.:AirlineTheme {theme}
.:colorscheme {theme}
.set nocompatible
set number
syntax on
filetype plugin indent on
set shiftwidth=4
set softtabstop=4
set spell spelllang=en_us
scriptencoding utf-8
set mouse=a
set mousehide
set ignorecase
set smartcase
" :find filepath
" :tabnew filepath
" :tabp :tabn
" :b partOfFilepath
" :ls
set path+=**
set wildmenu
set wildmode=list:longest,full
" NERDtree like setup for netrw
let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 4
let g:netrw_altv = 1
let g:netrw_winsize = 25
" let g:netrw_list_hide=netrw_gitignore#Hide()
" let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
augroup ProjectDrawer
autocmd!
autocmd VimEnter * :Vexplore
augroup END
" ctags setup
command! MakeTags !ctags -R .
" colorschemes config
colorscheme Monokai
" airline config
" set laststatus=2
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
" CtrlP config
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_working_path_mode = 'ra'
let g:ctrlp_user_command = 'find %s -type f'
need compile and config
sudo apt-get install build-essential cmake python-dev python3-dev
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'
" ^] jump
" g^] for ambiguous tags
" ^t jump back
command! MakeTags !ctags -R .
| 命令 | 作用 |
| :----------------- | :------------------------------------------------------ |
| <C-]>
| 跳转到匹配当前光标所在关键字的第一处标签 |
| g<C-]>
| 跳转至匹配当前光标所在的关键字 |
| :tag {keyword}
| 跳转到匹配 {keyword}
的第一处标签 |
| :tjump {keyword}
| 提示用户从匹配 {keyword}
的多处标签中指定一处进行跳转 |
| :pop
或 <C-t>
| 反向遍历标签历史 |
| :tag
| 正向遍历标签历史 |
| :tnext
| 跳转到下一处匹配的标签 |
| :tprev
| 跳转到上一处匹配的标签 |
| :tfirst
| 跳转到第一处匹配的标签 |
| :tlast
| 跳转到最后一处匹配的标签 |
| :tselect
| 提示用户从标签匹配列表中选择一项进行跳转 |
| QuickFix 命令 | 作用 | | :------------ | :--------------------------- | | :cnext | 跳转到下一项 | | :cprev | 跳转到上一项 | | :cfirst | 跳转到第一项 | | :clast | 跳转到最后一项 | | :cnfile | 跳转到下一个文件中的第一项 | | :cpfile | 跳转到上一个文件中的最后一项 | | :cc N | 跳转到第 n 项 | | :copen | 打开 QuickFix 窗口 | | :cclose | 关闭 QuickFix 窗口 |
In insert mode
| 命令 | 补全类型 |
| :----------- | :--------------- |
| <C-n>
| 普通关键字 |
| <C-x><C-n>
| 当前缓冲区关键字 |
| <C-x><C-i>
| 包含文件关键字 |
| <C-x><C-]>
| tag 关键字 |
| <C-x><C-k>
| 字典查找 |
| <C-x><C-l>
| 整行补全 |
| <C-x><C-f>
| 文件名补全 |
| <C-x><C-o>
| 全能(Omni)补全 |
可供弹出式菜单使用的命令
| 按键操作 | 作用 |
| :----------------- | :----------------------------------------------- |
| <C-n>
| 使用来自补全列表的下一个匹配项 (next 匹配项) |
| <C-p>
| 使用来自补全列表的上一个匹配项 (previous 匹配项) |
| <Down>
| 选择来自补全列表的下一个匹配项 |
| <Up>
| 选择来自补全列表的上一个匹配项 |
| <C-y>
| 确认使用当前选中的匹配项 (yes) |
| <C-e>
| 还原最早输入的文本(从自动补全中 exit) |
| <C-h>
(与 <BS>
) | 从当前匹配项中删除一个字符 |
| <C-l>
| 从当前匹配项中增加一个字符 |
| {char}
| 中止自动补全并插入字符 {char}
|
[q
/]q
/[Q
/]Q
.:help
:
:help ^n
: <C-n>
docs in normal mode.:help i_^n
: <C-n>
docs in insert mode.:help c_^n
: <C-n>
docs in commandLine mode.:helpgrep command
: search docs includes command
.Can't open swap or backup file:
:set directory?
directory.${whoami}
.set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
set fileformats=unix,dos,mac
set enc=utf8
set fencs=utf8,gbk,gb2312,gb18030
set termencoding=utf-8
<leader><leader> w
: start of word forwards.<leader><leader> b
: start of word backwards.<leader><leader> j
: start of line forwards.<leader><leader> k
: start of line backwards.| Motion Command | Description |
| ----------------------------------- | ------------------------------------- |
| <leader><leader> s <char>
| Search character |
| <leader><leader> f <char>
| Find character forwards |
| <leader><leader> F <char>
| Find character backwards |
| <leader><leader> t <char>
| Til character forwards |
| <leader><leader> T <char>
| Til character backwards |
| <leader><leader> w
| Start of word forwards |
| <leader><leader> b
| Start of word backwards |
| <leader><leader> l
| Matches begin & end of word forwards |
| <leader><leader> h
| Matches begin & end of word backwards |
| <leader><leader> e
| End of word forwards |
| <leader><leader> ge
| End of word backwards |
| <leader><leader> j
| Start of line forwards |
| <leader><leader> k
| Start of line backwards |
| <leader><leader> / <char>... <CR>
| Search n-character |
| <leader><leader><leader> bdt
| Til character |
| <leader><leader><leader> bdw
| Start of word |
| <leader><leader><leader> bde
| End of word |
| <leader><leader><leader> bdjk
| Start of line |
| <leader><leader><leader> j
| JumpToAnywhere motion |
sudo snap install nvim --classic
git clone https://github.com/LunarVim/LunarVim
bash LunarVim/utils/installer/install.sh
mv ~/.config/nvim ~/.config/NVIM.BAK
git clone https://github.com/NvChad/NvChad ~/.config/nvim
nvim +'hi NormalFloat guibg=#1e222a' +PackerSync
# html cssls jsonls
npm i -g vscode-langservers-extracted
# tsserver
npm i -g typescript typescript-language-server
# volar: Vue SFC
npm install -g @volar/vue-language-server
:LspInstall typescript
:TSInstall html css javascript typescript tsx vue json jsonc yaml bash
<leader>
is set to <SPACE>
.<SPACE>ch
: view key mappings.<SPACE>uu
: update NvChad.<SPACE>ff
: find files.<SPACE>/
: comments.<CTRL>n
: file tree.<CTRL>h
: switch window.<CTRL>j
: switch window.<CTRL>k
: switch window.<CTRL>l
: switch window.<TAB>
: switch buffer.| Key mapping | Action | Notes |
| ----------- | ------------------------ | ---------------------------------- |
| jk
| ESC to normal mode | |
| <SHIFT>t
| open a new buffer | |
| <SPACE>x
| close current buffer | (hides a terminal) |
| <TAB>
| cycle active buffer | <SHIFT><TAB>
for previous buffer |
| <CTRL>n
| open NvimTree explorer | <ENTER>
to select |
| <SPACE>uk
| view key mappings | |
| <SPACE>uu
| update NvChad | |
| <SPACE>/
| toggle commenting a line | |
| <SPACE>ff
| find a file | Telescope picker |
| <SPACE>gs
| git status | Telescope picker |
~/.config/nvim/lua/colors/init.lua
: Loads syntax theme and highlights.~/.config/nvim/lua/colors/highlights.lua
: All highlights definition.~/.config/nvim/lua/core/mappings.lua
: All key mappings.~/.config/nvim/lua/core/options.lua
: All options.~/.config/nvim/lua/plugins/init.lua
: Plugins configuration.~/.config/nvim/lua/plugins/packerInit.lua
: Packer
configuration.~/.config/nvim/lua/plugins/config/*.lua
: Configs of various plugins.-- ~/.config/nvim/lua/custom/chadrc.lua
local M = {}
-- make sure you maintain the structure of `core/default_config.lua` here,
-- example of changing theme:
M.ui = {
theme = "onedark", -- default theme
}
M.plugins = {
default_plugin_config_replace = {
nvim_treesitter = {
ensure_installed = {
"html",
"css",
"scss",
"javascript",
"typescript",
"vue",
"lua",
"rust",
"vim",
"latex",
"markdown",
"jsonc",
},
}
},
options = {
lspconfig = {
setup_lspconf = "custom.lspconfig",
},
},
install = {
{ "williamboman/nvim-lsp-installer" },
}
}
return M
-- ~/.config/nvim/lua/custom/lspconfig.lua
local M = {}
M.setup_lsp = function(attach, capabilities)
local lspconfig = require "lspconfig"
-- lspservers with default config
local servers = { "html", "cssls", "tsserver", "volar", "rust_analyzer" }
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = attach,
capabilities = capabilities,
flags = {
debounce_text_changes = 150,
},
}
end
end
return M
local M = {}
M.setup_lsp = function(attach, capabilities)
local lsp_installer = require "nvim-lsp-installer"
lsp_installer.settings {
ui = {
icons = {
server_installed = "" ,
server_pending = "",
server_uninstalled = "✗",
},
},
}
lsp_installer.on_server_ready(function(server)
local opts = {
on_attach = attach,
capabilities = capabilities,
flags = {
debounce_text_changes = 150,
},
settings = {},
}
-- Basic example to edit lsp server's options.
-- Disabling tsserver's inbuilt formatter.
if server.name == 'tsserver' then
opts.on_attach = function(client, bufnr)
client.resolved_capabilities.document_formatting = false
vim.api.nvim_buf_set_keymap(
bufnr,
"n",
"<space>fm",
"<cmd>lua vim.lsp.buf.formatting()<CR>",
{}
)
end
end
server:setup(opts)
vim.cmd [[ do User LspAttachBuffers ]]
end)
end
return M