1. 打开vim
#vim 文件名
#vim +20 文件名 //直接进入第20行
#vim +/hello 文件名 //直接进入 hello所在的行
2.插入命令
- i:在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
- I:在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行i命令
- a:在当前光标所在位置之后插入随后输入的文本
- A:在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
- o:在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
- O:在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
3. 光标移动命令
注: 以下命令的使用都是在命令模式下进行的。
- 以字符为单位移动:
上下左右键;
h、j、k、l、来控制方向;
- 以单词为单位移动
w:移动光标到下一个单词的单词首
b:移动光标到上一个单词的单词首
e:移动光标到下一个单词的单词尾
- 移动到行尾或行首
"$ " 移动到行尾;
“^” 或“0” 移动到行首;
对于 $ 命令来说,可以使用诸如"n$"之类的命令来将光标移至当前光标所在行的之后 n 行的行尾(n 为数字);对于"0"
命令来说却不可以,但可以用"n^"。
- 移动到一行的指定字符处(f 命令)
f命令加字符,可以将光标移动到该行输入字符所在的位置
- 移动到匹配的括号处(%命令)
将光标放到需要匹配的"(" 或 “{” 处,使用“%” 命令可以自动达到与之匹配的“)”或“}”处
- 移动到指定行处(nG 或:n 命令)
在命令模式下输入nG(n为数字,G为大写)或":n" ,光标会自动定位到指定行的行首。
4. 使用vim 进行编辑
- 查找指定字符串
“/要查找的字符串” : 从光标位置 向下查找指定字符串;
“?要查找的字符串”: 从光标位置向上查找指定字符串;
“/^nopes” : 查找以nopes为首的行
“/nopes$”:查找以nopes为尾的行
匹配的字符串有多个时,可按“n”键向下继续匹配查找,按“N”键向上继续匹配查找。
查找是区分大小写的,如果不想区分可输入“set ic” 命令 来忽略大小写。“set noic“ 来恢复区分大小写。
- 替换字符
小写"r"可以替换光标所在处的某个字符,将光标移动到想替换的单个字符处,按下"r"键,然后直接输入替换的字符
即可。
大写"R"可以从光标所在处开始替换字符,输入会覆盖后面的文本内容,直到按 Esc 键结束。
批量替换格式如下:
- 替换范围内的字符串::替换起始处,替换结束处s/源字符串/替换的字符串/g。
- 替换整篇文档的字符串::%s/源字符串/替换的字符串/g(如果不加g,则只替换每行第一个找到的字符串)。
eg:
:1,$s/root/liudehua/g
:%s/root/liudehua/g
:10,20s/root/liudehua/g
- 删除
命令模式下,
“x”键,删除光标所在处的单个字符;
“dd”键,删除光标所在行的整行;
“10dd” :删除光标所在行向下10行内容
- 粘贴
"p" 键: 用来粘贴。被删除的内容可以直接粘贴。
- 复制
“yy” 用来复制单行,或者在前面加上数字,来复制当前光标所在行的下面多行。
- 连接两行
“J” 用来将两行连接成一行;
sgsgssgdsgsgsg
aaaaaaaaaaaaa
使用“J” 变为
sgsgssgdsgsgsg aaaaaaaaaaaaa
- 撤销操作
“u” 键来撤销刚才执行的命令。
5.vim 常用设置
设置参数 | 含 义 |
:set nu :set nonu | 设置与取消行号。 |
:syn on :syn off | 是否依据语法显示相关的颜色帮助。在Vim中修改相关的配置文件或Shell脚本文件 时(如前面示例的脚本/etc/init.d/sshd),默认会显示相应的颜色,用来帮助排错。如果觉得颜色产生了干扰,则可以取消此设置 |
:set hlsearch :set nohlsearch | 设置是否将査找的字符串高亮显示。默认是hlsearch高亮显示 |
:set nobackup :set backup | 是否保存自动备份文件。默认是nobackup不自动备份。如果设定了:set backup,则会产生“文件名〜”作为备份文件 |
:set ruler :set noruler | 设置是否显示右下角的状态栏。默认是ruler显示 |
:set showmode :set noshowmode | 设置是否在左下角显示如“一INSERT--”之类的状态栏。默认是showmode显示 |
设置参数实在太多了,可以使用":set all"命令査看所有的设置参数。
6. Vim 多窗口编辑
- 打开第一个文件后,使用“:sp 另一个文件名” 来水平切分窗口;使用“:vs 另一个文件名” 来垂直切分窗口。
- 使用 “vim -o 文件1 文件2” 同时打开两个窗口。
“Ctrl+WW”: 来进行窗口切换;
“:r 被复制的文件名” : 将一个文件的内容全部复制到另一个文件中
7. Vim批量注释
:1,10s/^#/g //1-10行加注释#
:1,10s/^#//g //将行首的"#"替换为空,即删除。
表示在第 1~10 行行首加"#"注释。"^"意为行首。"g"表示执行替换时不询问确认。
添加"//"注释要稍微麻烦一些,":起始行,终止行 s/^/\/\//g",因为"/"前面需要加转义字符"\",所以写出来比较奇特,例如:
:1,5s/^/\/\//g