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 |
文档信息
