Vim 简明教程

VIM 基础教程

image-20220409215819206

前言

最难的不是如何学习 VIM,而是一直使用 VIM。

尽管网上有非常多的 VIM 教程,大多数教程要么是过于直白、要么是过于基础。从这篇文章中你可以学习到 VIM 的操作逻辑,使用 VIM 实现你现在使用的编辑器的编辑技巧。当然,最好的文档还是 VIM 的帮助文档,如果有耐心看的话,可以把它当成一个字典或者百科全书。

VIM 配置

image-20220409223302743

这篇文章不会详细介绍 VIM 如何配置,但是有一些重要配置可以提高编辑体验,有必要介绍一下。安装好 VIM 之后,VIM 的配置文件位置:

vim ~/.vimrc

下面是一些推荐配置:

  • 重映射 ESC 按键:ESC 用来退出编辑模式,但是位于键盘边缘,不太容易按。所以可以输入 jk 代替 ESC。

    inoremap jk <ESC>
    
  • 修改 Leader Key

    Leader Key 用来触发快捷键。默认的 Leader Key 是 \,不太容易按。而 ' 就在小拇指右边。

    let mapleader = "'"
    

有了上面两个配置,手基本上不会离开键盘太远。

下面是一些特别推荐的配置:

syntax on # highlight syntax
set number # show line number
set noswapfile # disable the swapfile
set hlsearch # highlight the search
set ignorecase # ignore case in search
set incsearch # show search results as you type
  • 重映射 CAPSLOCK:这不是 VIM 的配置,CAPSLOCK 可以说是键盘上最没用的按键,建议映射为 ESC 或者 Ctrl。这个映射可以在操作系统层面上实现。

  • 插件管理:建议尽量保持原有的插件管理,不要使用第三方插件管理器。在 VIM 8.x 版本上,插件管理非常简单,只需要把插件复制到下面的文件夹即可:

    ~/.vim/pack/{插件文件夹名字,可以随意取}/start/{插件名字}
    

VIM 的语言

使用 VIM 的方式思考会大幅提高你的编辑效率。VIM 就像一门语言,包括名词、动词、形容词/副词。这些术语在 VIM 的技术实现上不是准确的,但是可以帮助理解 VIM 的操作逻辑。

动词

动词就是要采取的动作,可以作用于名字上。比如:

  • d: delete,删除
  • c: change,修改
  • y: yank,复制
  • v: visual,可视化选择(V 选择行,v 选择字符)

形容词/副词

这类词解释应该按什么方式完成动作。比如:

  • i: inside,内部
  • a: around,周围
  • NUM: 数字
  • t: 搜索目标,在目标前面停止
  • f: 搜索目标,在目标上面停止
  • /: 查找字符串(正则)

名词

名词就是要作用的对象,比如:

  • w: word,单词
  • s: sentence,句子
  • ): sentence,另外一种方式
  • p: paragraph,段落
  • },paragraph,另外一种方式
  • t,tag,标签(HTML或者XML)
  • b: block,代码块

名字用作动词

名字也可以用作动词,可以用于以某个单位移动光标。

生成句子

组合动词、形容词/副词、名字可以生成一个合法的句子。比如:

删除两个单词

d2w

在句子内部修改(删除当前句子并且进入插入模式)

cis

复制所在的段落

yip

修改直到下一个尖括号(删除直到下一个尖括号,并且进入插入模式)

ct<

这里 to 的目标是 < ,实际上可以是任何元素,比如 yt., dt. 等等。

开始使用 VIM

VIM 编辑文件的基础操作:

  • vim file: 使用 vim 打开 file
  • :w: 保存修改
  • :q!: 退出 vim,不保存修改
  • :wq: 保存修改并退出
  • :saveas ~/somepath: 在指定目录保存文件
  • ZZ,等价于 :wq

在文本中搜索

字符串搜索

使用 / 可以进行搜索,输入想要搜索的内容然后按下回车。

搜索 include

/include

image-20220409233433904

一旦搜索完毕,使用 n 跳转到下一个搜索结果,使用 N 跳转到上一个搜索结果。可以使用 ? 从反向查找字符串。

跳转到指定字符

跳转到下一个 < 上

f<

跳转到下一个 < 的前面

t<

修改直到下一个,

ct,

搜索总结

  • /{string},搜索指定字符串
  • t, 跳转到某个字符前
  • f,跳转到某个字符上
  • *****,搜索当前位置的单词
  • n,字符串搜索中,跳转到下一个
  • N,字符串搜索中,跳转到上一个
  • ;,字符搜索中,跳转到下一个
  • ,,字符搜索中,跳转到上一个

移动光标

  • j,向下移动
  • k,向上移动
  • h,向左移动
  • l,向右移动

需要多加练习,刚开始不是很习惯。

行内移动

  • 0,移动到行首
  • $,移动到行尾
  • ^,移动到第一个非空白字符
  • t",移动到下一个 " 前
  • f",移动到下一个 " 上

以单词为单位移动

  • w,移动一个单词
  • b,向后一个一个单词
  • e,移动到单词末尾

大写指令会忽略掉某些字符分隔符。

  • W,移动一个单词,忽略分隔符
  • B,前后移动一个单词,忽略分隔符

在段落间移动

  • ),移动一个句子
  • },移动一个段落

移动屏幕

  • H,移动到屏幕顶端
  • M,移动到屏幕中间
  • L,移动到屏幕底部
  • gg,移动到文件顶部
  • G,移动到文件底部
  • ^U,向上移动半个屏幕
  • ^D,向下移动半个屏幕
  • ^F,向上翻页
  • ^B,向下翻页

来回跳转

  • Ctrl+i,跳转到前一个位置
  • Ctrl+o,跳转到后一个位置

其他动作

  • :line_number,跳转到指定行
  • ^E,向上滚动一行
  • ^Y,向下滚动一行

修改文本

现在开始使用 VIM 进行编辑。

VIM 模式

vimmodes

  • 正常模式:一开始就处于正常模式。正常模式又叫做命令模式,通常用来输入命令。
  • 插入模式:修改文本的模式,有很多从正常模式切换到插入模式的方法。
  • 可视化模式:选择文本的一种模式,与正常模式相似,只不过光标的移动会选中文本。可视化模式的目的是可以在选中的文本上执行命令,非常方便。
  • 扩展模式:从底部输入 : ,可以执行很多功能强大的命令。

基础修改/插入选项

修改文本的方式有 修改(c)插入(i)附加(a)

  • i,insert,在光标之前插入
  • a,append,在光标之后插入
  • I,在行首插入
  • A,在行尾插入
  • o,在下一行插入新行
  • O,在上一行插入新行
  • r,替换光标位置的字符
  • R,替换光标位置的字符,但是保持继续输入状态
  • cm,比如 cw,cs,cp

// TODO
挖坑,以后再填

posted @ 2022-05-12 20:05  whxway  阅读(665)  评论(0编辑  收藏  举报