Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 —— 维基百科
首先,vim下的工作模式有三种: 命令模式、插入模式、编辑模式
- 命令模式:缺省进入的是命令模式,插入,移动之类的命令
- 插入模式:在此模式下可以编辑文档,就像在记事本或者word中一样
- 编辑模式:对文本进行操作做一些额外的设置,比如为文档设置行号,替换字符串,保存退出等;编辑模式下的命令执行完之后自动就回到命令模式了
模式之间的切换如图:
-
1. 创建并打开文件:
-
$ vi filename
小白注意:‘$’符号不是手动输入的,命令行中会自动给
以下是各种命令,必须在命令模式下输入
2. 插入命令:
命令 |
含义 |
a |
在 光标后 插入文本 |
A |
在 行末 插入文本 |
i |
在 光标前 插入文本 |
I |
在 本行开始 插入文本 |
o |
在 光标下 插入新行 |
O |
在 光标上 插入新行 |
3.定位命令:
命令 |
含义 |
k、向上箭头 |
向 上 移动 |
j、向下箭头 |
向 下 移动 |
h、向左箭头 |
向 左 移动 |
l、向右箭头 |
向 右 移动 |
$ |
移至 行尾 |
0 |
移至 行首 |
H |
移至 屏幕上 第一行 |
M |
移至 屏幕上 中间行 |
L |
移至 屏幕上 最后一行 |
gg |
移至 文档 第一行 |
G |
移至 文档 最后一行 |
nG |
移至 文档 第n行 |
:n |
移至 文档 第n行 |
命令 |
含义 |
备注 |
:set nu |
在文档中设置行号 |
①nu是number缩写②:代表进入编辑模式 |
:set nonu |
在文档中取消行号 |
大部分取消命令都是在设置命令前加“no” |
4.删除命令
命令 |
含义 |
x |
删除光标所在 处 字符 |
nx |
删除光标所在 处后n个 字符 |
dd |
删除光标所在 行 |
ndd |
删除 n行 (光标所在行为第一行) |
dG |
删除光标所在 行到文本末尾 的内容 |
D |
删除光标所在 处到行尾 的内容 |
:n1,n2d |
删除 指定范围 行,包括n1和n2行,如(:44,50d) |
5. 复制和剪切
命令 |
含义 |
yy、Y |
复制 当前行 |
nyy、nY |
复制 当前行以下n行 |
dd |
剪切 当前行(看得到的效果就是删除,看不到的是同时又拷贝到了剪切板上) |
ndd |
剪切 当前行以下n行 |
p、P |
粘贴在当前光标 所在行(P)(原来内容向下移动) 或者 下一行(p) |
6. 替换和取消命令
命令 |
含义 |
r |
替换光标所在 处 字符(命令模式下,按一下r,再按想替换成的字符) |
R |
从光标所在处开始替换,知道按Esc键终止 |
u |
取消上一步操作(只要没有保存过文档,这个操作就可以一直做,类似于win下的撤退键,保存之后被写入内存就没法改了) |
7. 搜索替换命令
命令 |
含义 |
/string |
搜索指定字符串,默认严格区别大小写 |
:set ic |
忽略大小写 |
n、N |
搜索指定字符串的下一个出现位置(n从上往下,N从下往上) |
:%s/old/new/g |
全文替换old字符串为new字符串(g代表不需要询问确认,c代表需要询问确认) |
:n1,n2s/old/new/g |
在一定范围(第n1行到第n2行)内替换old字符串为new字符串 |
8. 保存退出命令
命令 |
含义 |
:wq |
write quit 保存后退出 |
shift+ZZ |
等价于:wq |
:wq! |
权限不够时强行保存退出,只有文件所有者和管理员root才可以 |
:q! |
不保存退出 |
:w |
保存不退出 |
:w test/a.bak |
另存为 |
9. 应用技巧
(1):r !date 把date命令的执行结果导入到当前正在编辑的文件中光标所在处 命令拆分:
- :r /etc/issue 把这个文件的内容导入到当前正在编辑的文件中光标所在处
- :!命令 在vi中可以执行任何命令而不需要退出vi
(2)定义快捷键 :map 快捷键 触发命令
注意:下面快捷键写法^p不是先按一个^,再按p,有两种按法 ① 先 ctrl+v ,再 ctrl+p ② ctrl+v+p
:map ^p I#< ESC> 快捷键ctrl+p触发跳到行首进行插入模式(I),插入#(#),之后再退回到命令模式(< ESC>)(ESC 和 <之间没有空格,不加空格就被当成标签处理了,显示不出来,我就加了个空格,只为显示出来)
:map ^z address@qq.com 快捷键ctrl+z触发将address@qq.com插入到光标所在处
:map ^B 0x ctrl+B触发删除行首,0是在命令模式下跳到行首,x是删除光标所在处字符
(3)连续行注释
- :n1,n2s/^/#/g 在连续行(n1到n2)行首加上#,^代表行首
- :n1,n2s/#//g 去掉连续行(n1到n2)的#,就是将#替换为空
- #n1,n2s/^#//g 去掉连续行(n1到n2)行首的#
- :n1,n2s/^////g /使用的转义符,让/符号代表它本来的意思
(4)替换 :ab mymail mailAddress@qq.com 之后你输入的所有mymail都会自动变为mailAddress@qq.com,而之前的mymail并不会受到影响 :unab mymail mailAddress@qq.com 取消这一设置
10. 永久保存 vi中在某个文档下的设置不会被保存,在你退出文档之后会被自动取消,要想保存,需要写入vi配置文件中,配置文件存放在用户宿主目录下(非root用户默认在/home/userName目录下,我们可以直接用~表示) vi ~/.vimrc 写入配置文件时可以省略命令前面的“:”
好啦,以上命令基本上够日常操作使用 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|