目录
vim是什么
所有的类Unix系统(如Linux)都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转, 主动的以字体颜色辨别语法的正确性, 等方便编程的功能特别丰富,在程序员中被广泛使用.
vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
vim的使用
vim有12种模式. 但我们基本上只用到 3 种, 即
命令模式(command mode), 输入模式(Insert mode)和 底行模式(last line mode)
命令模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段以及进入 输入模式 , 或者进入底行模式
用户刚刚启动 vim,便进入了命令模式。
此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i, I /shift+i, o, a, O/shift+o, A/shift+a都可以切换到输入模式, 以输入字符, 但进入之后光标位置不同。后面详解介绍
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
另外:
小写字母按键, 小写字母与Shift组合(大写字母), Enter,回车键,换行 , 方向键,在文本中移动光标 , Home/End,移动光标到行首/行尾, Page Up/Page Down,上/下翻页, 这些按键在命令模式下也可以移动操作
输入模式
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们用的最频繁的编辑模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- Enter,回车键,换行
- Back Space,退格键,删除光标前一个字符
- Delete,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- Home/End,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底行模式
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入 :help vim-modes
在命令模式下按下 : (英文冒号)就进入了底行命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
- wq 保存并退出
- ! 强制执行(不能单独使用, 需要加在上面三个命令之后配合使用)
- ESC,随时退出底行模式,切换到命令模式
命令模式指令集
进入插入模式
- i : 按 i 进入插入模式后是从光标当前位置开始输入文件(最常用)
- I / shift+i: 按I进入插入模式后,从光标所在行的行首(第一个字符之前)开始输入
- a :按a进入插入模式后,从目前光标所在位置的下一个位置开始输入文字
- A/shift+a:按A进入插入模式后,从光标所在行的最后一个字符之后开始输入
- o :进入插入模式后,插入新的一行到当前光标所在行的下面,从行首开始输入文字。
- O/shift+o:进入插入模式后,插入新的一行到当前光标所在行的上面,从行首开始输入文字。
光标移动
下面的命令只移动光标, 不会进入插入模式
-
k, j, h, l : vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母k, j, h, l, 分别控制光标上下左右移一格
, (╯-_-)╯╧╧ - G/shift+g:移动到文章的最后一行的行首[重要]
- $:移动到光标所在行的行尾[重要]
- ^:移动到光标所在行的“行首”[重要]
-
w:光标跳到下个字的开头[重要](如下光标在I 处, 在命令模式下按四下w依次效果如下)
- 按 e:光标跳到下个字的字尾(如下光标在I 处, 在命令模式下按四下e依次效果如下)
- 按 b:光标回到上个字的开头[重要](如在下面第一张图灰色区域内, 则都会回到 l 处)
- 按「#l」:"#"代表数字, 按一个数字和小写l, 光标从当前位置向后#个位置, 如下图 按 5l :
-->
注意 : 前面的w, e, b前面都可以搭配数字使用, 前面加几, 相当于我们手动按几次键盘 - gg:光标回到所编辑文件的开头[重要]
- ctrl + b:屏幕往“后”移动一页
- ctrl + f :屏幕往“前”移动一页
- ctrl + u : 光标往“前”移动半页
- ctrl + d : 光标往“后”移动半页
删除
#代表数字
- x :每按一次,删除光标所在位置的一个字符[重要]
- 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
- X/shift+x :大写的X,每按一次,删除光标所在位置的“前面”一个字符
- 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
- dd :删除光标所在行[重要]
- 「#dd」:从光标所在行开始(往下)删除#行[重要]
复制
复制粘贴
#代表数字
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中, 此处的w与光标移动中的w为相同的作用。
- 「#yw」:复制#个字到缓冲区
- 「yy」:复制光标所在行到缓冲区。[重要]
- 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
- 注意: 所有与“y”有关的复制命令都必须与p/P配合才能完成复制与粘贴功能.[重要]
- 「p」: 将缓冲区内的字符粘贴到光标所行的下面.
- 「P/shift+p」: 将缓冲区内的字符粘贴到光标所行的下面.
注意, 此处的复制粘贴是在命令模式下执行的, ctrl + insert复制, shfit + insert粘贴是Xshell的复制粘贴方法, 在插入模式下可以使用
撤销
撤销误操作
#代表数字
- 「u」:误执行一个命令,可以马上按下u,回到上一个操作. 按多次“u”可以执行多次回复。[重要]
- 「#u」:误执行#个命令,可以马上按下「#u」,回到#个操作之前。
- 「ctrl + r」: 撤销的恢复[重要]
实例:
按两遍x, --> 再按两遍u撤销-->
再按ctrl + r -- >
可以看到恢复到了撤销之前的亚子
替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符(光标移到哪, 我们就可以替换哪个字符),直到按下ESC结束替换。[重要]
更改
删除并进入插入模式
#代表数字
「cw」:删除当前光标到字尾处的字符, 并进入输入模式
「c#w」:例如,「c3w」表示更改3个字(先删除当前光标往后三个字, 再进入输入模数修改)
跳至指定的行
#代表数字
ctrl+ g :列出光标所在行的行号, 以及所在行的是文件行数的百分之几。[重要]
#G : 例如,「15G」,表示移动光标至文章的第15行行首
末行模式命令集
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按 : 冒号即可进入末行模式。
- 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。[重要]
- 「#」: #号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行
- 「/关键字」: 查找字符,从开头往下查, 先按 / 键 ,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按 n 会从前往后寻找到您要的关键字为止。
- 「?关键字」:查找字符,开结尾往上查, 先按 ? 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会从后往前寻找到您要的关键字为止。
- 「w」: 保存文件, 在冒号输入字母 w 就可以将文件保存起来
- 「q」:按 q 就是退出,如果无法离开vim,可以在 q 后跟一个 ! 强制离开vim。
- 「wq」:一般建议离开时,搭配 w 一起使用,这样在退出的时候还可以保存文件。
小结
vim有三种常用模式
命令模式
插入模式
底行模式其中, 命令模式与底行模式中的命令较多, 文中只是罗列了一些常用命令, 要熟练使用还得多使用vim编辑文本或代码
最后来张图令人头大的图