0 初识vim

0.1 简介

在这个蔚蓝色的星球上,流传着两大神器的传说:Emacs是神的编辑器,而Vim是编辑器之神。

VIM , 全称 Vi Improved , Vi的增强版 。

Vi 在 1976 年发布,奉行 Unix 传统的“Do one thing and do it well”哲学,每个程序只做一件事但做到最好,通过程序之间的配合得到强大的功能。

Emacs则奉行“Everything at reach”设计哲学,通过强大的扩展性,达到在一个软件里做所有的事。Emacs可以用来编辑文档、时间管理、浏览图片、阅读pdf、听音乐、写程序、运行程序、调试程序、接受发送邮件、看新闻组、玩游戏、管理系统、Telnet/FTP、版本控制、写LaTex…被称为“伪装成编辑器的操作系统”。

江湖中有一句话: “ 世界上的程序员分三种,一种使用Emacs,一种使用Vim,剩余的是其它” 。

0.2 模式

vim有5中基本模式,分别是

  • Normal Mode 也就是最一般的普通模式,默认进入vim之后,处于这种模式。
  • Visual Mode 一般译作可视模式,在这种模式下选定一些字符、行、多列。 在普通模式下,可以按v进入。
  • Insert Mode 插入模式,其实就是指处在编辑输入的状态。普通模式下,可以按i进入。
  • Select Mode 在gvim下常用的模式,可以叫作选择模式吧。用鼠标拖选区域的时候,就进入了选择模式。 和可视模式不同的是,在这个模式下,选择完了高亮区域后,敲任何按键就直接输入并替换选择的文本了。 和windows下的编辑器选定编辑的效果一致。普通模式下,可以按gh进入。 ps:这种模式好无用啊
  • Command-Line/Ex Mode 就叫命令行模式和Ex模式吧。两者略有不同,普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令, 使用vim的各种强大功能。普通模式下按Q进入Ex模式,其实就是多行的Command-Line模式。 ps:经常使用EX模式的都是神阶vimer

注:本文中所说的快捷键若无特殊说明则是Normal Mode下的模式

1 vim install

1.1 windows

在github中下载window环境的.zip安装包

https://github.com/vim/vim-win32-installer/releases

解压后添加环境变量,右键vim.exe,打开属性,复制位置中的路径至path变量

1.2 macOS

利用homebrew安装

1
自己查吧 我也忘了

1.3 VSCode-Vim插件配置

在setting.json中新增:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 // INSERT模式下键位绑定
"vim.insertModeKeyBindings": [
	{
		"before":["j","j"],
		"after":["<Esc>"]
	},{
		"before":["x","x"],
		"after":["<Esc>","$","a",";"]
	}
],
// NORMAL模式下键位绑定
"vim.normalModeKeyBindingsNonRecursive":[
	{
        "before": ["l","e"],
        "after": ["$"]
	},
	{
        "before": ["l","b"],
        "after": ["0"]
	}
],
// 可视模式下键位绑定
"vim.visualModeKeyBindingsNonRecursive":[
	{
        "before":["l","e"],
        "after":["$"]
	},
	{
        "before":["l","b"],
        "after":["0"]
	}
],

2 vim 基本操作

操作描述 键位 备注
移动光标 hjkl
删除字符 x
插入字符 i(光标前)、a(光标后)、A(行末) 进入INSERT模式
从光标处删除到单词末尾 dw(下一个单词起始)、de(仅末尾) 可指定删除次数,如d2w
从光标处删除到行末 d$
至行首或行尾 0(行首)、$(行尾)、^(行内容开头)
删除(剪切)整行 dd 可指定行数,如d2d2dd
ddp本行与下一行替换位置
撤销 u(撤销上次指令)、U(恢复整行状态)
重做 ctrl+r
粘贴 p
替换字符 r(替换单个字符)、R(连续替换多个)
更改 c4ec2wc0c$ d,支持添加数字重复次数
显示当前光标位置及文件状态信息 ctrl+g
至文件开头或末尾 gg(开头)、G(末尾)
查找字符串 /(向后查询)、?(向前查询) n移至下一处,N移至上一处
查找配对括号 %
替换命令 :s/old/new(替换光标所在行的第一个匹配) :s/old/new/g全行替换
:%s/old/new/g全局替换
:%s/old/new/gc全局自定义替换
另存为 :w FILENAME
行插入 o(下行插入)、O(上行插入)
复制 y复制选中部分 y$复制光标到行末的部分
yw复制光标到单词结尾的部分
yy复制当前整行
设置查询选项 :set xxx :set ic查找时忽略大小写
:set is查找短语时显示部分匹配
:set hls高亮显示全部匹配短语
在选项前加no可关闭选项
自动补全命令 Tab
替换字符(并进入输入模式) s(删除单个字符并进入输入模式)、S(删除整行并进入输入模式)
选中 v(进入可视模式选中光标经过的部分)、V(进入可视模式并选中光标经过的全部行)
跳转至第n行 :n
查找最近的字符 f(向后找)、F(向前找)
移动光标至页面不同位置 H(页面顶部)、M(页面中部)、L(页面底部)
合并两行 J 即删除两行间换行符
调整缩进 <(反缩进)、>(正缩进) NORMAL模式下
翻页 ctrl+b(下一整页)、ctrl+f(上一整页) ctrl+d(翻下半页)、ctrl+u(翻上半页)
光标位置 zz(移动光标所在行至屏幕中央) zt(屏幕最上)、zb(屏幕最下)
滚轮回滚 ctrl+e(向下回滚一行)、ctrl+y(向上回滚一行)