Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 —— 维基百科
首先,vim下的工作模式有三种:
命令模式、插入模式、编辑模式
- 命令模式:缺省进入的是命令模式,插入,移动之类的命令
- 插入模式:在此模式下可以编辑文档,就像在记事本或者word中一样
- 编辑模式:对文本进行操作做一些额外的设置,比如为文档设置行号,替换字符串,保存退出等;编辑模式下的命令执行完之后自动就回到命令模式了
模式之间的切换如图:
以下是各种命令,必须在命令模式下输入
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命令的执行结果导入到当前正在编辑的文件中光标所在处
命令拆分:
(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插入到光标所在处
(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
写入配置文件时可以省略命令前面的“:”
好啦,以上命令基本上够日常操作使用
原文链接:https://www.f2er.com/bash/391453.html