Vim在路上
0. 目标
- 掌握Vim的基本操作,光标移动、文本插入、删除、复制、粘贴、查找、替换、保存退出
1. 安装
Linux/Ubuntu 环境下:
sudo apt-get install vim
对于Ubuntu,系统自带的默认文本编辑工具是Vi,或者Vim默认运行的是Vi的兼容模式,方向键和退格键不能用。Vi(visual interface)在行编辑器ex命令的基础上的改进,是ex的可视化操作接口,直接的可视化编辑文本,比使用纯命令行处理文本方便很多。而Vim(Vi Improved)针对Vi做了很多改进,增加了多级撤销、多窗口操作、关键字自动补全等功能,甚至可以通过插件来扩展和配置更多的功能。
2. Vim 工作模式
Vim 支持多种工作模式:
- 普通模式:打开文件时的默认模式,在其它模式下通过按下
ESC键返回到普通模式; - 插入模式:按下i/o/a键进入插入模式,进行文本编辑操作;
- 命令行模式:在普通模式下输入
:进入插入模式,可在该模式下进行相关设置如显示行号set nu; - 可视化模式:在普通模式之下按
v进入,该模式下可以实现文本的选中,在此之上对选中文件进行复制、剪切、删除、粘贴等文本操作; - 替换模式:在普通模式下通过光标选中一个字符,然后按
r键,再输入一个字符,可将选中的字符替换。
3. Vim常用命令
在使用Vim打开文件后按F1或:help回车,可以查看在线帮助文档help.txt。
输入 vimtutor 可以阅读VIM教程,如下图
完成该教程的内容就可以基本掌握Vim的使用啦!!!
常用指令
1. 移动光标、修改 相关操作
-
光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
h(左移)j(下行)k(上行)l(右移) -
欲进入 Vim 编辑器(从命令行提示符),请输入:
vim 文件名 <回车> -
欲退出 Vim 编辑器,请输入
ESC:q!<回车>放弃所有改动。
或者输入ESC:wq<回车>保存改动。 -
在正常模式下删除光标所在位置的字符,请按:
x -
欲插入或添加文本,请输入:
i输入欲插入文本ESC在光标前插入文本
A输入欲添加文本ESC在一行后添加文本
特别提示:按下 ESC 键会带您回到正常模式或者撤消一个不想输入或部分完整
的命令。
2. 删除相关操作
-
欲从当前光标删除至下一个单词,请输入:
dw -
欲从当前光标删除至当前行末尾,请输入:
d$ -
欲删除整行,请输入:
dd -
欲重复一个动作,请在它前面加上一个数字:
2w -
在正常模式下修改命令的格式是:
operator [number] motion
其中:
operator- 操作符,代表要做的事情,比如d代表删除
[number]- 可以附加的数字,代表动作重复的次数
motion- 动作,代表在所操作的文本上的移动,例如w代表单词(word),
$代表行末等等。 -
欲移动光标到行首,请按数字0键:
0 -
欲撤消以前的操作,请输入:
u(小写的u)
欲撤消在一行中所做的改动,请输入:U(大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R
3. 置入类命令、替换类命令、更改类命令
- 要重新置入已经删除的文本内容,请按小写字母
p键。该操作可以将已删除的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置于当前光标所在行的下一行。 - 要替换光标所在位置的字符,请输入小写的
r和要替换掉原位置字符的新字符即可。 - 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。比如输入
ce可以替换当前光标到单词的末尾的内容;输入c$可以替换当前光标到行末的内容。 - 更改类命令的格式是:
-
`c [number] motion`
4. 定位及文件状态、搜索类命令、配对括号的查找、替换命令
-
CTRL-G用于显示当前光标所在位置和文件状态信息。
G用于将光标跳转至文件最后一行。
先敲入一个行号然后输入大写G则是将光标移动至该行号代表的行。
gg用于将光标跳转至文件第一行。 -
输入
/然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。
输入?然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。
完成一次查找之后按n键是重复上一次的命令,可在同一方向上查
找下一个匹配字符串所在;或者按大写N向相反方向查找下一匹配字符串所在。
CTRL-O带您跳转回较旧的位置,CTRL-I则带您到较新的位置。 -
如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。
-
在一行内替换头一个字符串
old为新的字符串new,请输入:s/old/new
在一行内替换所有的字符串old为新的字符串new,请输入:s/old/new/g
在两行内替换所有的字符串old为新的字符串new,请输入:#,#s/old/new/g
在文件内替换所有的字符串old为新的字符串 new,请输入:%s/old/new/g
进行全文替换时询问用户确认每个替换需添加c标志:%s/old/new/gc
5. 引入外部命令
:!command用于执行一个外部命令command。
请看一些实际例子:
(MS-DOS) (Unix)
:!dir:!ls- 用于显示当前目录的内容。
:!del FILENAME:!rm FILENAME- 用于删除名为FILENAME的文件。:w FILENAME可将当前VIM中正在编辑的文件保存到名为FILENAME的文
件中。v motion:w FILENAME可将当前编辑文件中可视模式下选中的内容保存到文件
FILENAME中。:r FILENAME可提取磁盘文件FILENAME并将其插入到当前文件的光标位置
后面。:r !dir可以读取dir命令的输出并将其放置到当前文件的光标位置后面。
6. 插入、复制粘贴、替换、搜索等操作
- 输入小写的
o可以在光标下方打开新的一行并进入插入模式。
输入大写的O可以在光标上方打开新的一行。 - 输入小写的
a可以在光标所在位置之后插入文本。
输入大写的A可以在光标所在行的行末之后插入文本。 e命令可以使光标移动到单词末尾。- 操作符
y复制文本,p粘贴先前复制的文本。 - 输入大写的
R将进入替换模式,直至按ESC键回到正常模式。 - 输入
:set xxx可以设置xxx选项。一些有用的选项如下:
icignorecase查找时忽略字母大小写
isincsearch查找短语时显示部分匹配
hlshlsearch高亮显示所有的匹配短语
选项名可以用完整版本,也可以用缩略版本。 - 在选项前加上
no可以关闭选项::set noic
7. 获取帮助信息、创建启动脚本、补全功能
- 输入
:help或者按键或键可以打开帮助窗口。 - 输入
:help cmd可以找到关于cmd命令的帮助。 - 输入
CTRL-WCTRL-W可以使您在窗口之间跳转。 - 输入
:q以关闭帮助窗口 - 您可以创建一个
vimrc启动脚本文件用来保存您偏好的设置。 - 当输入 : 命令时,按
CTRL-D可以查看可能的补全结果。
按 <TAB> 可以使用一个补全。