¶vim常用键
verb + noun
(cperator [number] motion/object)
¶命令
:e file
:打开文件:enew
:e
:重新加载当前文件:wq
,:x
:x
等于wq
vim +line_number path/to/file
:打开文件的指定行(省略line_number则位于文件末尾)!cmd
:执行外部命令
¶编辑
i
:光标前插入a
:光标后插入o
:下一行插入O
:上一行插入I
:当前行开头插入A
:当前行结尾插入u
:撤销上一次改动Ctrl-r
:重做U
:撤销当前行的所有改动
¶动作
-
y
:复制 -
p
:粘贴 -
d
:删除 -
c
:替换 -
x
:删除单个字符 -
r
:替换单个字符 -
R
:连续替换多个字符 -
~
:修改大小写 -
.
:重复上一次更改
¶移动
-
hjkl
:上下左右 -
gg
:首行 -
G
:最后一行 -
%
:移动到匹配的括号处 -
n%
:移动到文件的n%位置处 -
^
:当前行开头(第一个非空白字符) -
0
:当前行开头(第一个字符) -
$
:当前行结尾(最后一个字符) -
n|
:当前行的第n
列 -
b
:前一个word的结尾 -
w
:后一个word的开头 -
e
:后一个word的结尾 -
BWE
:WORD是除空白符外的字符序列,相比于word可以包含标点符号 -
fx
:移动到下一个字符x
(find) -
Fx
:移动到上一个字符x
-
;
:重复fF
移动 -
,
:反向移动 -
(
:前一个句子 -
)
:后一个句子 -
{
:前一个段落 -
}
:后一个段落 -
Ctrl-d
:向下滚动半个屏幕 -
Ctrl-f
:向下滚动一个屏幕 -
Ctrl-u
:向上滚动半个屏幕 -
Ctrl-b
:向上滚动一个屏幕 -
zt
:将当前行置于屏幕顶部 -
zz
:将当前行置于屏幕中央 -
zb
:将当前行置于屏幕底部 -
/
:正向搜索 -
?
:逆向搜索 -
n
:下一个匹配 -
N
:上一个匹配 -
*
:快速正向搜索当前单词 -
#
:快速逆向搜索当前单词 -
%s/regexp/replacement/g
:全局替换(不加g则只修改一次) -
%s/regexp/replacement/gc
:对每个替换都提问是否进行
¶对象
-
i object
: inner object -
a object
: around object -
w
: word -
p
: paragraph -
s
: sentence -
(
/)
: a pair of ( ) -
[
/]
: a pair of [ ] -
{
/}
: a pair of { } -
<
/>
: a pair of < > -
": a pair of " "
-
': a pair of ’ ’
-
: a pair of
`
¶多窗口浏览
- 向下切分:
:sp [file]
- 向右切分:
:vsp [file]
- 上下左右移动:
<Ctrl-h/j/k/l>
- 关闭当前窗口:
:q
¶折叠
za
:翻转折叠zR
:取消所有折叠zM
:执行所有折叠
¶选择模式
>
:右移<
:左移y
:复制d
:删除u
:小写化U
:大写化
¶选项
- 设置缩进大小:
:set shiftwidth=4
- 设置wrap:
set wrap
- 查看文件类型:
set filetype?
¶Neovim配置
¶安装
Ubuntu apt安装的版本较旧,所以选择自行安装最新版本(目前是0.9.5)。
1 | curl -LO https://github.com/neovim/neovim/releases/download/v0.9.5/nvim.appimage |
¶卸载
1 | sudo rm /usr/local/bin/nvim |
¶配置
¶起点
选择NvChad
作为配置的起点。
1 | git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim |
在custom/init.lua
中设置vim.g.mapleader = ","
,将<leader>
设置为逗号。
插件配置参考ayamir/nvimdots、lazyvim和BrunoKrugel/dotfiles。
下面只介绍涉及到快捷键或者命令的插件,作为备忘。
NvChadUpdate
:一键更新<Ctrl-s>
:保存文件<Ctrl-c>
:复制整个文件<leader>rn
:切换相对行号
¶插件管理
folke/lazy.nvim
:Lazy
:打开Lazy面板
¶用户界面
¶主题
<leader>th
:选择主题
选用aquarium
,并设置transparency=false
。
¶面板
设置load_on_startup=true
(可选)。
¶Buffer line
<Tab>
:下一个Buffer<S-Tab>
:上一个Buffer<leader>x
:关闭当前Buffer
¶工具
¶备忘单
<leader>ch
:打开备忘单
¶文件树
nvim-tree/nvim-tree.lua
:h nvim-tree-mappings-default
-
<Ctrl-n>
:打开/关闭文件树 -
NvimTreeFocus
,<leader>e
:聚焦 -
<CR>
:打开光标所在文件/进入文件夹 -
j
/k
:上下移动 -
a
:新建文件 -
d
:删除文件 -
r
:重命名文件 -
S
:搜索文件 -
<BS>
:关闭文件夹 -
q
:退出 -
<Tab>
:预览 -
c
:复制文件 -
p
:粘贴文件 -
x
:剪切文件
¶文件查找
nvim-telescope/telescope.nvim
-
<leader>ff
:查找文件 -
<leader>fw
:查找文件中的内容 -
<leader>fg
:查找时可以添加rg参数,此时搜索的文本需要用双引号包裹 ("foo" -i
大小写不敏感查找) -
<leader>gs
:AdvancedGitSearch
-
<leader>fz
:在当前文件中fzf -
<leader>th
:查找主题 -
<leader>cm
:查找git commit -
<leader>gt
:查找git status -
<leader>fa
:查找所有文件(包括隐藏文件) -
<leader>fb
:查找打开的Buffer中的文件 -
<leader>fh
:查找帮助文件 -
<Up>
/<Down>
或在Normal模式下j
/k
:上下移动 -
<C-u>
/<C-d>
:在预览窗口上下移动 -
<CR>
:选择 -
?
:打开快捷键面板
¶终端
<A-h>
:在下方打开/关闭一个终端<A-v>
:在右方打开/关闭一个终端<A-i>
:打开/关闭一个浮动终端
¶行跳转
nacro90/numb.nvim
:<number>
:跳转到某行,该插件可以提供实时预览功能
¶编辑
¶注释
numToStr/Comment.nvim
gcc
:切换当前行注释gc
:切换行注释gb
:切换块注释
¶高亮
nvim-treesitter/nvim-treesitter
-
增量选择功能:
<CR>
:扩大选择<BS>
:缩小选择
-
TSInstallInfo
:查看所有语言安装情况 -
TSEnable highlight
:开启语法高亮 -
TSUpdateSync
:更新 -
TSInstall lang
:安装 -
TSUninstall lang
:卸载
¶问题列表
folke/trouble.nvim
TroubleToggle
,<leader>tt
:打开/关闭问题列表
¶TODO 高亮
folke/todo-comments.nvim
-
TODO:
-
PERF:
-
NOTE:
-
FIX:
-
WARN:
-
TEST:
-
:TodoTrouble
,<leader>td
:列出所有todo -
:TodoTelescope
<leader>ts
:用telescope查找todo
这里有一个bug是只能查看当前所在文件夹下的todos,而不是打开的文件所在的文件夹下的todos(如果设置autochdir
,那么telescope插件又会出问题)。
¶快速跳转
folke/flash.nvim
根据位置提示快速跳转。
- 集成到了搜索 (
/
/?
) 中 - 集成到了
f
/t
/F
/T
中,再输入任意一个字符,按f
/t
/F
/T
或者;
/,
移动到下一个/上一个匹配 - 按
s
/S
(s
是全局,S
是treesitter中的所有父节点(还可以通过;
/,
扩大或缩小范围)),然后输入任意前缀
¶括号移动
andymass/vim-matchup
%
:除了原本的括号匹配(()[]{}
)跳转外,还在特定于语言的匹配单词间跳转(比如if和else)
¶语言
¶符号树
stevearc/aerial.nvim
<leader>a
:打开关闭aerial<leader>ta
:用telescope查找符号
¶格式化
stevearc/conform.nvim
<leader>fm
:格式化当前文件FormatEnable
:开启保存时自动格式化FormatDisable
:关闭保存时自动格式化ConformInfo
¶LSP
插件:neovim/nvim-lspconfig
(配置)、williamboman/mason.nvim
(安装管理)、williamboman/mason-lspconfig.nvim
LspInfo
:查看LSP状态LspRestart
:重启LSPLspStart
:启动LSPLspStop
:关闭LSPMason
:Mason面板MasonInstall <package>
,MasonUninstall
:Mason安装MasonUninstall <package>
,:MasonUninstall
:Mason卸载MasonUpdate
:Mason更新MasonLog
:Mason日志
Lsp快捷键:
K
:查看文档gr
:查看引用gd
:查看定义gi
:查看实现<leader>ca
:code action<leader>ra
:变量改名<leader>D
:类型<leader>
:签名
¶Glance
gD
:查看所有定义gM
:查看所有实现gY
:查看类型定义gR
:查看所有引用
¶Clangd Extension
ClangdSwitchSourceHeader
:在头文件和代码文件间切换ClangdInlayHints
ClangdAST
:显示选中代码段的ASTClangdSymbolInfo
:显示光标所在处的类型ClangdTypeHierarchy
:显示光标所在处的类层级关系
¶markdown
iamcco/markdown-preview.nvim
MarkdownPreviewToggle
,<F12>