Lazyvim常用操作集锦
Contents
本篇博客列举和整理了一些Lazyvim常用的操作。
有一个好的工具很重要,熟练使用这个工具同样重要
本篇吸收和整理博主PDCXS以及我本人对于Lazyvim(后简称为vim,当然你不能把vim、lazyvim、neovim混为一谈)的使用技巧和理解,分为多个板块记录下来便于查阅、复习以及回顾。
Warning
切莫死记硬背,我所列出来的多为典型且常用的键位映射,请融会贯通地运用lazyvim
的提示信息进行学习和掌握。
如熟知了<cib>
的使用场景,那么<ciw>
、<cif>
、<ciq>
自然也会运用。
编辑模式
- Dashboard / kanban -
k
- Normal -
n
- Insert -
i
- Command -
c
- Search -
s
- Find -
f
- Fold -
z
特别的,INSERT模式有如下几种进入方式:
<i>
: 在前一位置进入<a>
: 在后一位置进入(这在行末尾进行编辑操作时非常有用)<I>
: 在行首第一个非空白字符前进入<A>
: 在行末进入<o>
: 在当前行下方新建一行进入<O>
: 在当前行上方新建一行进入<gi>
: 回到上次退出INSERT模式时光标的位置
COMMAND模式有如下几个常用命令:
- wq: 保存退出
- q!: 强制退出
- e [PATH]: 编辑[PATH]的文件
FIND模式可以匹配模式并且进行进一步的操作:
<f>
: 向下匹配查找<F>
: 向上匹配查找<t>
: 向下匹配查找并移动光标到匹配字符的前一项
Example
|
|
在 (^int x
处经过<dt)>
后变为
|
|
解析:
<d>
: 进入删除模式<t)>
: 向下匹配)
,并移动光标至int ^y)
删除()
内的内容有其他更智能及方便的方式,如dib
、<cib>
。
Z模式是一个扩展模式,常用的操作有:
<zz>
: 将当前行放置在屏幕正中
基本光标操作
键位 | 描述 | 模式 |
---|---|---|
<ctl-d> |
向下滚动半个屏幕 | n |
<ctl-u> |
向上滚动半个屏幕 | n |
<ctl-f> |
向下滚动一个屏幕 | n |
<ctl-b> |
向上滚动一个屏幕 | n |
<COUNT-j> |
向下移动COUNT行 | n |
<COUNT-k> |
向上移动COUNT行 | n |
<COUNT-G> |
到达COUNT行 | n |
<w> |
以单词为单位向下移动(至单词首字母) | n |
<e> |
以单词为单位向下移动(至单词末字母) | n |
<b> |
以单词为单位向上移动(至单词首字母) | n |
<ge> |
以单词为单位向上移动(至单词首字母) | n |
<W> |
忽略标点符号以单词为单位向下移动(至单词首字母) | n |
<E> |
忽略标点符号以单词为单位向下移动(至单词末字母) | n |
<0> |
移动到行首 | n |
<g_> |
移动到行末最后一个非空字符 | n |
<gg> |
移动到文件第一行 | n |
<G> |
移动到文件最后一行 | n |
<ctl-o> |
跳转到上一次编辑的地方 | n |
<ctl-i> |
跳转到下一次编辑的地方(撤销跳转) | n |
基本文件操作
键位 | 描述 | 模式 |
---|---|---|
<space-e> |
打开/关闭项目文件浏览器 | k |
<H> |
显示隐藏文件及文件夹 | k |
<HI> |
显示.git/ | I |
<ctl-h> |
移动至项目文件浏览器 | k |
<ctl-l> |
移动至编辑器 | k |
<e PATH> |
编辑PATH 的文件 |
c |
<space-w> |
window相关操作 | n |
<space-qq> |
退出nvim程序 | n |
<ctl-r> |
查看寄存器内容 | i |
<"> |
查看寄存器内容 | n |
<反引号> |
查看标签(便于快速跳转) | n |
<u> |
撤销 | n |
<ctl-r> |
回滚(和撤销相反的操作) | n |
基本文本操作
vim
支持如下的输入:
<count><verb><count><motion>
<count>
: 数字<verb>
: 通俗来讲即为“光标”<motion>
: 有一个模式切换到另一个模式,记为一个"motion"
Example
尝试在
Normal
模式按4
再进入INSERT
模式输入米4达
,再退出进入Normal
模式,看看会发生什么?键位 | 描述 | 模式 |
---|---|---|
<.> |
重复上一次的操作 | n |
<D> |
删除当前到行末的所有字符 | n |
<dta> |
删除当前到字符a 的所有字符(不包括a ) |
n |
<dfa> 或<dsa> 或<cfa> |
删除当前到字符a 的所有字符(包括a ) |
n |
<COUNT-dd> |
删除COUNT 行 |
n |
<x> |
删除当前字符 | n |
<COUNT-ri> |
将后COUNT 个字符替换为i |
n |
<J> |
拼接当前行与下一行(不保留下一行行首空格) | n |
<gJ> |
拼接当前行与下一行(保留下一行行首空格) | n |
<gUU> |
将该行单词变为大写字母 | n |
SHIFT-反引号 |
更改当前光标的字符大小写 | n |
Tip
一般情况下,当重复两次MOTION
即对本行进行操作。
如dd
删除本行,UU
将本行变为大写字母。
Macro
宏,能够记录当前的操作并自决执行操作,请看案例
Example
|
|
依次进行如下操作:
<qq>
: 开启Macro
记录,并编辑绑定q
键位的宏,在编辑器右下角会显示"recording @q"字样- 进入搜索模式找到
is
,再执行<cw>
将is
改为was
,执行<n>
跳转到下一个匹配项,接着执行q
退出Macro
记录 <Q>
: 此时Macro
会重复“第二步”的步骤,修改一个匹配项并跳转至下一个匹配项。
修改后结果如下:
|
|
Macro
可与以下的功能进行结合
键位 | 描述 | 模式 |
---|---|---|
<ctl-a> |
num++ | n |
<ctl-x> |
num– | n |
<qQ> |
将原先录制在Q 键位的宏的基础上继续录制 |
n |
Tip
<ctl-a>
与<ctl-x>
可以结合dial
插件实现日期的增加或减少。代码操作
在方向上:
<[>
:往前跳转<]>
:往后跳转
后续仅以<]>
为例进行解释
键位 | 描述 | 模式 |
---|---|---|
<[> 及 <]> |
代码块跳转功能 | n |
<]%> |
匹配下一个任意未配对的符号(如 ( 、{ ) |
n |
<]]> |
跳转到下一次光标所位于的 reference 出现的位置 |
n |
<]c> |
跳转到下一个 class 所在的位置 |
n |
<]a> |
跳转到下一个参数声明所在的位置 | n |
<]f> |
跳转到下一个函数所在的位置 | n |
<]m |
跳转到下一个函数体的开始位置 | n |
<]d> |
跳转到下一个诊断(如 ERROR ) |
n |
<]e> |
跳转到下一个 ERROR |
n |
<]w> |
跳转到下一个 WARNING |
n |
<]h> |
跳转到下一个 git 改动的地方(HUNK ) |
n |
<]i> |
下一个相同缩进的代码块(Python等解释性语言适用) | n |
<]s> |
下一个拼写错误 | n |
<z=> |
给出修复拼写错误的建议 | n |
<zg> |
将该单词添加至白名单 | n |
<]t> |
跳转到下一个特殊注释(如 NOTE /HACK /BUG ) |
n |
<ci-KEY> |
改变(删除)KEY 包裹内或 KEY 代表类型的字符串 |
n |
<ca-KEY> |
改变(删除)KEY 包裹内容(包括包裹符) |
n |
<d2ib> |
删除第二层级的代码块 | n |
<yR-SEARCH> |
从远程复制内容(无须切换光标) | n |
<gsai> |
添加括号 | n |
<%> |
当光标位于括号时跳转到配对的括号 | n |
说明:使用
<space-u>
开启/关闭拼写检查功能
同样的,<c-KEY1-KEY2>
可应用到<y-KEY1-KEY2>
实现灵活复制
复制、粘贴与寄存器
键位 | 描述 | 模式 |
---|---|---|
<p> |
在当前光标下一个字符位置粘贴 | n |
<P> |
在当前光标上一个字符位置粘贴 | n |
<yR> |
使用Remote模式进行复制 | n |
<space-c> |
code 相关操作 |
n |
<space-s"> |
搜索寄存器内容 | n |
<D> |
删除本行并将内容存入寄存器- |
n |
<space-p> |
打开yanky 插件 |
n |
<[y> |
粘贴上一次put 的内容(可多次使用) |
n |
<>p> |
粘贴内容并增进缩进 | n |
<<p> |
粘贴内容并减少缩进 | n |
|
|
Register
能够与yank
结合,将记录存入寄存器并通过键盘映射,实现灵活拷贝。
Example
<"syS-KEY>
<"s>
: 将键位<s>
映射到寄存器<S-KEY>
: 打开搜索模式并选择需要拷贝的内容
<"sp>
: 打开寄存器选择键位<s>
存储的内容并进行拷贝
当把
<_>
映射到寄存器时,意味着不要将该记录存入寄存器
Neovim相关术语
- Window
- 屏幕中的一块区域,用来显示
buffer
中的内容 - 也被称为
pane
或者split
- 屏幕中的一块区域,用来显示
- buffer
- 已经被打开的文件,可以被查看和编辑
- 如果一个
buffer
在不同的地方显示,则对应完全相同的内容
- fold
buffer
中折叠的代码
- tab/layout
- 整个屏幕的布局
Buffer
键位 | 描述 | 模式 |
---|---|---|
<space-b> |
buffer相关操作 | n |
<Shift-h> |
移动至左侧buffer | n |
<Shift-l> |
移动至右侧buffer | n |
Window
键位 | 描述 | 模式 |
---|---|---|
<space-w> |
window相关操作 | n |
<Ctl-s> |
横向分割window | d |
<Ctl-v> |
竖向分割window | d |
<space-w-s> |
横向分割window | n |
<space-w-v> |
竖向分割window | n |
<space--> |
横向分割window | n |
<space-|> |
竖向分割window | n |
<space-w-d> |
删除当前window | n |
<ctl-方向键> |
切换window | n |
Tab
键位 | 描述 | 模式 |
---|---|---|
<space-tab> |
tab相关操作 | n |
Fold
键位 | 描述 | 模式 |
---|---|---|
<z-a> |
开启折叠代码功能 | n |
<z-c> |
折叠一层代码 | n |
<z-o> |
打开代码 | n |
<z-r> |
打开一层代码 | n |
文档信息