Contents

Lazyvim常用操作集锦

本篇博客列举和整理了一些Lazyvim常用的操作。

有一个好的工具很重要,熟练使用这个工具同样重要

Info

https://user-images.githubusercontent.com/292349/213446185-2db63fd5-8c84-459c-9f04-e286382d6e80.png

Lazyvim是一个现代化、强力neovim的配置管理软件,大大降低了neovim的配置难度和入门门槛。

本篇吸收和整理博主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
1
void func(int x, int y)

(^int x 处经过<dt)>后变为

1
void func()

解析:

  • <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
1
2
3
4
5
This is a line
This is a line
This is a line
This is a line
This is a line

依次进行如下操作:

  • <qq>: 开启Macro记录,并编辑绑定q键位的宏,在编辑器右下角会显示"recording @q"字样
  • 进入搜索模式找到 is,再执行<cw>is改为was,执行<n>跳转到下一个匹配项,接着执行q退出Macro记录
  • <Q>: 此时Macro会重复“第二步”的步骤,修改一个匹配项并跳转至下一个匹配项。

修改后结果如下:

1
2
3
4
5
This was a line
This was a line
This was a line
This was a line
This was a line

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
1
2
// 清空s键位寄存器内容
let @s=""

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

文档信息

版权声明:署名—非商业性使用—禁止演绎 4.0 协议国际版