vim 是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。
转载://https://www.wangt.cc/2019/09/fa6e891029/
一、基础使用
1.打开,新建文件
$> vi hello.c //打开,新建一个叫hello.c的文件
2.进入 vi 后,光标处于文件中特定的某行上,可在 vi 命令上加上行号和文件名,
$> vi +5 hello.c
进入 vi ,光标处于文件最末行,则只需去掉命令中+后面的数字 n 即可
$> vi + hello.c
3.模式匹配
进入 vi ,光标就处于文件中第一个与指定模式串相匹配的那行上开头。
$> vi +/模式字符串 文件名$> vi +/main hello.c
二、理论概述
1命令模式(操作模式)
按esc键进入,如果不确 定自己在什么模式,多按几下esc
1)插入
```xml
o 可以在光标下面新建一行(不论在该行的那个位置)
O 在光标上面新建一行
a 在光标后面插入
A 在当前行的末尾输入文本
i 进入编辑模式,在光标前面插入
I 在当前行前输入文本
```
2)移动光标
h 光标左移一个字符
k 光标上移一行
j 光标下移一行
l 光标右移一个字符
w 光标右移至下一个单词的字首
W 光标右移到下一个空格分割单词的字首
e 光标右移至本单词的字尾
E 光标右移至下一个空格分割的字尾
b 光标左移至上一个单词的字首
B 光标左移到上一个空格分割单词的字首
{ 光标向前移至上一个段落的开头
} 光标向后移至下一个段落的开头
$ 调转到行尾
0 调转至行首
gg 文章开头
G 文章结尾
nG 调转到第n行
3)复制、剪切、粘贴
yw 将从光标开始往后到空格为止(包含空格)(复制一个单词)复制(之后仍处于命令模式)
y0 将从光标开始到行首的所有字符复制(之后仍处于命令模式)
y$ 将从光标开始到行末的所有字符复制(之后仍处于命令模式)
Y同y$
y( 复制到上一句开始的所有字符
y) 复制到下一句开始的所有字符
y{ 复制到上一段开始的所有字符
y} 复制到下一段开始的所有字符
yy 复制当前行
nyy 复制从当前行后开始数n行
x 将光标处显示的字符移到缓冲区(之后仍处于命令模式)
X 将光标显示的光标之前的字符移到缓冲区(之后仍处于命令模式)
dw 将从光标开始往后到空格为止(包含空格)(删除一个单词)移到缓冲区(之后仍处于命令模式)
dG 将光标所在行到文末的所有行删除
cw 将从光标开始往后到空格为止(包含空格)(删除一个单词)移到缓冲区,之后进入编辑模式
ce 同cw
cb 将从光标开始往前到空格为止(包含空格)(删除一个单词)移到缓冲区,之后可以直接输入新的文本
d0 将从光标开始到行首的所有字符移到缓冲区(之后仍处于命令模式)
d$ 将从光标开始到行末的所有字符移到缓冲区(之后仍处于命令模式)
D 同d$
d( 删除到上一句开始的所有字符
d) 删除到下一句开始的所有字符
d{ 删除到上一段开始的所有字符
d} 删除到下一段开始的所有字符
d)
c$ 将从光标开始到行末的所有字符移到缓冲区,之后进入编辑模式
C 同c
$dd 将当前行移到缓冲区(剪切操作)(之后仍处于命令模式)
ndd 将从当前行往后开始数n行移到缓冲区
cc 将当前行移到缓冲区(剪切操作),之后进入编辑模式
ncc 将从当前行往后开始数n行移到缓冲区,之后进入编辑模式
p 光标下一行开始粘贴一行/光标之后字符串
P 光标上一行开始粘贴一行/光标之前字符串
4)替换
r 替换单个字符,光标显示的那个
R 一直替换字符,直到按esc截至
5)撤销
u 撤销上一步
U 撤销到上一次保存
6)查找
/ 光标处向后查找字符
? 光标处向前查找字符
n 显示搜索命令定位到的下一个字符串
N 显示搜索结果定位到的上一个字符串
b 光标移动到当前单词/上一个单词的开始
w 光标移动到下一个单词的开始
e 光标移动到当前单词/下一个单词的末尾
7)文本选择
v 按字选择
V 按行选择
8)文本移动
n>> 光标当前行及其下面共n行都右移 8 个空格
n<< 光标当前行及其下面共n行都左移 8 个空格
9)重复上一步
. 重复上一步命令,减少重复操作
10)滚屏命令
<C-u> <PgUp> 将屏幕向前(文件头方向)翻滚半屏
<C-d> <PgDn> 将屏幕向后(文件尾方向)翻滚半屏
<C-b> 将屏幕向文件首方向翻滚一整屏
<C-f> 将屏幕向文件尾方向翻滚一整屏
11)保存退出
ZZ 同末行命令模式下的 :wq
注意:所输入的命令并不回显在屏幕上。
若输入不是vim的合法的指令,Vim会鸣笛报警
2编辑模式
撤销
3末行命令模式(ex 转义模式)
这些操作如设置快捷键等退出之后再次进入就不管用了,若要永久起作用就写配置文件
-
1)新建、打开、保存、退出
- 进入末行命令行模式
:e filename 创建新文件,在同一个目录
:n filename 加载其他文件,在同一个目录
:w 相当于
:w filename 另存为一个新的文件
:w!
:w! filename
:q
:q!
:wq
:wq! 不是所有人都可以使用,只有文件所有者与root才能在文件仅r–的情况下使用
:x 强制退出
2)跳转、删除、撤销、导入
:n 调转到改行
:n1,n2d 删除从n1到n2的行
:e! 撤销到上一次保存的结果
:r /etc/issue 在光标处导入一个新文件
:!命令 在不退出vi的情况下执行命令
:r !date //将文本编辑时间直接输入到光标所在位
3)替换
:imj 将第 i 行替换到第 j 行下一行
:10m5 //将第10行放到第5行后面
:%s/要替换的字符串/新的字符串/g 进行全文替换
/* % 表示全文 * $ 表示文件尾 * . 当前行 */ :.,$s/prinft/printf/g //将当前行到结尾当中的prift替换成printf
:n1,n2s/要替换的字符串/新的字符串/g 在n1到n2之间替换,不询问
:1,4s/^/#/g //在1到4行的行首插入
:n1,n2s/要替换的字符串/新的字符串/c 在n1到n2之间替换,询问
:1,4s/^/#/c //在1到4行的行首插入,并且询问
**
二、vim的一些小技巧
**
1.Vim的分割窗口split命令
:split 水平分割
:vsplit 垂直分割
:split hello.c //分割窗口打开hello.c:new //分割形式新建文件
:close 关闭窗口
vim -o one.txt two.txt three.txt //终端下使用的,就是一次性打开3个文件并使用分割形式显示
<C-w> 窗口间跳转
<C-w> h 跳转到左边的窗口
<C-w> j 跳转到下面的窗口
<C-w> k 跳转到上面的窗口
<C-w> l 跳转到右边的窗口
<C-w> t 跳转到最顶上的窗口
<C-w> b 跳转到最底下的窗口
2.Vim的文件间切换命令
//vim还未启动,同时打开多个文件vim file1 file2 ... filen //可以打开所有想要打开的文件//vim启动以后,想打开其他文件:open file
:bn—下一个文件
:bp—上一个文件
3.Vim的便捷设置
:set nu 显示行号
:set nonu 不显示行号
:set hlsearch 搜索的词显示高亮
:set nohlsearch 搜索的词显示高亮
:syntax on 语法高亮
:syntax off 语法取消高亮
3.Vim定义快捷键
:map I# ctrl加上v在加上需要定义的快捷键(这里举例是p)定义该快捷键是等价于在命令模式将每一行行首添加一个#
Vim的基本操作
:map iyangbingxue19990502@gmail.com 定义插入邮箱地址,并退回到命令模式
Vim的基本操作
:ab mymail yangbingxue19990502@gamil.com 在文中将mymail替换成yangbingxue19990502@gmail.com 只要敲击完之后按“Space”或者”Enter”就会替换
Vim的基本操作
:unab mymail 取消mymail关联
Vim的基本操作
三、永久生效
在用户的家目录下创建.vimrc将操作写入即可(里面只能放一些编辑模式的命令)
针对root用户
#> vi /root/.vimrc //针对root用户 set nu 设置行号 map ^p I# //定义快捷键 ab mymail yangbingxue19990502@gamil.com //定义快捷键
针对普通用户Tony
#> vi /home/Tony/.vimrc (针对普通用户Tony) set nu 设置行号 map ^p I# //定义快捷键 ab mymail yangbingxue19990502@gamil.com //定义快捷键