🐆neovim使用笔记

光标移动

  • 基础: h、j、k、l对应←↓↑→,gg、G跳转到文档头、尾。
  • word跳转: w、e跳转到后一个“word的开头、结尾”,b跳转到前一个“word的开头”。不含除_外的标点符号。
  • WORD跳转:W、E跳转到后一个“WORD的开头、结尾”,B跳转到前一个“WORD的开头”。“WORD”以空格为单位。
  • 注:
    • “word”的描述很繁琐,但是含义很简单,故不多赘述。
    • 以上快捷键都可以与数字搭配使用。
    • 基础移动会以方向的尽头终止,如100l若超过该行剩余字符数则会移动到该行末尾。
    • 但是,word跳转的语义是“上一个、下一个”,只要没有到文档头尾,就不会终止跳转。
  • 根据字符跳转:f、F分别表示后一个字符、前一个字符(行内)。例如2fs表示跳转到后面第二个"s"的位置。

复制、粘贴、剪切

  • 基础: y <motion>复制,d <motion>删除,c <motion>删除并进入插入模式,p、P在光标的右侧、左侧粘贴。

    描述 成员
    inclusive motion 仅有顺序,包含边界 e
    exclusive motion 顺序,仅不包含结尾
    逆序,仅不包含开头
    w、l
    b、h
    • 文档头尾、一行的头尾都会有特殊,以上描述以移动的“预期”效果为基础,例如,文档最后一个word上再按w只会移动到该word的末尾,但是“预期”会移动到下一个的开头。故依然会包含整个word。
    • 表格里的开头、结尾是移动方向的头和尾,不是顺序方向。
  • 行级操作:

    命令 效果
    yy 复制一整行
    dd 删除一整行
    y j/k 包含当前行到目标行
    d j/k 同理
    p、P 在下一行、上一行粘贴
  • text object操作: <verb> <prep> <text object>

    • prep: innner,around

    • 常用文本对象

      文本对象 作用范围 示例命令 效果
      iw / aw 单词(word) ciw 修改当前单词(不含空格)
      iW / aW 大单词(WORD,含标点) diW 删除当前大单词(如 “hello!”)
      is / as 句子(sentence) vas 选择当前句子
      ip / ap 段落(paragraph) dap 删除当前段落(含空行)
      i" / a" 双引号内内容 yi" 复制引号内文本(不含引号)
      i' / a' 单引号内内容 ci' 修改单引号内文本
      i` / a` 反引号内内容 di` 删除反引号内代码
      i( / a(
      (ib / ab)
      圆括号内内容 ci( 修改括号内文本(不含括号)
      i[ / a[ 方括号内内容 vi[ 选择方括号内文本
      i{ / a{
      (iB / aB)
      花括号内内容 di{ 删除代码块内容(不含 {})
      it / at XML/HTML 标签内容 cit 修改标签内文本(如 <div>内容</div>
      i< / a< 尖括号内内容(如泛型) di< 删除 <T> 内部内容

其它常用命令、快捷键

命令:e(dit)

打开文件,相对路径、绝对路径都可以。

自动补全

  • <C-n><C-p>:在插入模式下,向前、向后自动补全。

注释

  • Normal模式下,使用gcc注释/取消注释当前行,gc注释/取消注释选中区域。

悬浮文档

  • Normal模式下,快捷键K可以查看光标下的函数、变量等的文档。
  • 打开悬浮文档后,可以使用<C-f><C-b>翻页。

排版

  • 1./2./3.等有序列表的下层域需要缩进4个空格或者2个Tab
  • */-/+等无序列表的下层域需要缩进2个空格或者1个Tab