Vim入门指南
什么是Vim
Vim是从vi发展出来的一个文本编辑器。其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开源方式下发行的自由软件。
Vim有什么用
1. 对硬件没有要求
-
基本上所有的Linux \ Unix上都会预装,适合各种恶劣的环境
-
低配电脑跑起来也很流畅
-
不需要依赖GUI,继承了 Unix 哲学, 一切都是文本
-
SSH连接或者在Terminal下的时候可以方便进行简单的代码和配置修改
-
不用鼠标,只需要一把48键键盘,甚至方向键也不需要
2. 高度扩展、定制性
-
任务自动化/脚本化
-
丰富的插件,完全可以打造成一个属于自己的VS Code
日常的Vim
诚然,用Vim开发的话,作为一个文本编辑器在复杂环境下是比不上IDEA,VS这种IDE方便的。
但是现在的Vim已经不仅仅是一个编辑器了,在VS Code和IDEA中都有Vim的插件在其中,使用了Vim插件之后,变可以享受到Vim方式的高效以及IDE的便捷了。
不需要手指离开键盘指法的位置就可以移动光标,复制粘贴,查找
而且还可以快速定位目标位置,快速修改整行等等操作
把鼠标扔到一边吧!
vi/vim 的使用
Vim有四种模式:正常模式(Normal),编辑模式(Insert、Replace),可视模式(Visual) 和 底线命令模式(Last line mode)
移动、插入和删除等基本使用
移动
^
k 提示: h 的键位于左边,每次按下就会向左移动。
< h l > l 的键位于右边,每次按下就会向右移动。
j j 键看起来很象一支尖端方向朝下的箭头。
v
插入
-
i
(insert) 当前字符前插入 -
a
(append) 当前字符后插入 -
A
(Append) 行尾添加字符
a
、i
和 A
都会带您进入插入模式,惟一的区别在于字符插入的位置。
o
在光标 下方 打开新的一行O
在光标 上方 打开新的一行
删除
x
删除光标所在位置的字符
撤消类命令
输入 u
(undo) 来撤消最后执行的命令
输入大写的 U
(Undo) ,恢复到该行的原始状态
输入CTRL-R
可以重做被撤消的命令
光标定位及搜索
定位及文件状态
e
移动光标到下一步不完整的单词w
移动光标到下一个单词b
移动光标到上一个单词$
移动光标到行尾^
移动光标到行首
行与段落的移动
:set nu
打开行号
{
, }
移动光标到上下一个空行
输入 CTRL-G
显示当前编辑文件中当前光标所在行位置以及文件状态信息。
输入大写 G
可以使得当前光标直接跳转到文件最后一行。
输入gg
可以使得当前光标直接跳转到文件第一行。
输入行号,然后输入大写 G
,跳转到对应行
搜索类命令
正常模式下输入 /关键词
要查找同上一次的字符串,只需要按 n
(next) 键。要向相反方向查找同上一次的字符串,请输入大写 N
即可。
如果您想逆向查找字符串,请使用 ?
代替 /
进行。
要回到您之前的位置按 CTRL-O
重复按可以回退更多步。CTRL-I
会跳转到较新的位置。
配对括号的查找
输入 %
可以移动到配对的另一个括号
组合
使用计数指定动作
在动作前输入数字会使它重复那么多次。
-
2w
使光标向前移动两个单词 -
3e
使光标向前移动到第三个单词的末尾 -
0
(数字零) 移动光标到行首
删除更多
许多改变文本的命令都由一个操作符和一个动作构成。
使用删除操作符 d 的删除命令的格式如下:
d motion
其中:
d - 删除操作符。
motion - 操作符的操作对象(在下面列出)。
因此:
de
会从当前光标位置删除到单词末尾。dw
删除该单词d$
从当前光标删除到行末
使用计数以删除更多
输入 d2w
以删除两个单词
删除整一个当前行
输入 dd
可以删除整一个当前行。
当然你也可以带上数字,输入 2dd
删除两行。
粘贴和替换
复制粘贴文本
使用操作符 y
复制文本,使用 p
粘贴文本
配合前面说过的组合可以有:
-
yy
复制整行 -
y2j
复制2行 -
y$
复制到行尾
剪切 - 删除后粘贴
输入 dd
将会删除当前行,删除行会暂存到 Vim 中
输入 p
将该行粘贴到光标下一行
更改类操作
输入 r
和要替换成的字符当前字符
使用c更改更多
c [number] motion
动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。
cw
/ce
更改文本直到一个单词的末尾cc
更改整行c2w
更改2个单词
替换模式
输入大写的R
进入 替换模式
替换命令
-
s/thee/the
请注意该命令只改变光标所在行的第一个匹配串。 -
:s/thee/the/g
则是替换全行的匹配串,该行中所有的 "thee" 都会被改变。 -
:#,#s/old/new/g
其中 #,# 代表的是替换操作的若干行中首尾两行的行号。 -
:%s/old/new/g
则是替换整个文件中的每个匹配串。 -
:%s/old/new/gc
会找到整个文件中的每个匹配串,并且对每个匹配串 提示是否进行替换。
IO以及命令
在 VIM 内执行外部命令的方法
输入 :!
, 这样就允许您执行外部的 shell 命令了。
关于保存文件的更多信息
请输入 :w FILENAME
以 FILENAME 为文件名保存整个文件
一个具有选择性的保存命令
v motion :w FILENAME
使用v选择代码,然后按 : 字符。您将看到屏幕底部会出现 :'<,'> 。
现在请输入 w TEST
,其中 TEST
是一个未被使用的文件名。确认您看到了:'<,'>w TEST
之后按 <回车>
键。
提取和合并文件
:r TEST
将前面创建的名为 TEST
的文件提取进来。
您还可以读取外部命令的输出。例如, :r !ls
可以读取 ls
命令的输出,并把它放置在光标下面。
命令补全
命令时,按 CTRL-D
可以查看可能的补全结果。
按 <TAB>
可以使用一个补全。
设置类命令的选项
输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:
'ic' 'ignorecase' 查找时忽略字母大小写
'is' 'incsearch' 查找短语时显示部分匹配
'hls' 'hlsearch' 高亮显示所有的匹配短语
选项名可以用完整版本,也可以用缩略版本。
帮助
你可以通过 <HELP>
键, <F1>
键或者 :help
命令来打开帮助
提供一个正确的参数给 :help
命令,您可以找到关于该主题的帮助。如:
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
CTRL-W CTRL-W
(两次) 可以使您在窗口之间跳转
尾巴
vim 教程到此就结束了。本教程只是为了简明地介绍一下 Vim 编辑器,但已足以让您很容易使用这个编辑器了。毋庸质疑,vim还有很多很多的命令,本教程所介
绍的距离完整的差得很远。
所以您要精通的话,还望继续努力哦。下一步您可以阅读 Vim 的用户手册,使用的命令是: :help user-manual