什么是vi/vim
Vi/vim是一个强大的文本编辑器,是Linux中最常用的文本编辑器,它的作用的是建立、编辑或修改、显示文本内容。
Vi/vim的三种工作模式:
Vi和vim的使用
使用之前我要说明一件事情就是vi和vim的命令比较多,这里给出一些记忆的方法,希望对大家有所帮助。
首先是一个文本的结构,别看它很简单,但是很多人容易忽略,
1. 文本结构,文本由行组成,行由每一个字符组成,所以vi/vim编辑器中操作的东西,不是多行,就是一行中的多个字符,希望大家带着这个思路来阅读下面编辑器的使用
2. 操作文本分成几大类,就是光标移动,搜索替换,删除,复制,黏贴,保存,退出,撤销等,下面将会按照这个顺序给大家讲解
正常模式:
移动光标
移动光标-一行中的字符 | |
h或← | 光标向左移动一个字符 |
j或↓ | 光标向下移动一个字符 |
k或↑ | 光标向上移动一个字符 |
l或→ | 光标向右移动一个字符 |
n<space> | n是数字,表示向右移动这一行的n个字符 |
0或者Home | 数字0,移动到这一行的最前面的字符处 |
$或者End | 移动到这一行的最后字符处 |
移动光标-多行操作 | |
ctrl+f(forward) | 屏幕向下移动一页 |
ctrl+b(backward) | 屏幕向上移动一页 |
ctlr+d | 屏幕向下移动半页 |
ctlr+u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格字符的上一行 |
H (head) | 光标移动到这个屏幕最上方的那一行的第一个字符 |
M(Middle) | 光标移动到这个屏幕的中央的那一行的第一个字符 |
L(low) | 光标移动到这个屏幕的最下方的那一行的第一个字符0 |
G | 移动到这个文本的最后一行 |
nG | n为数字,移动到这个文本 |
gg | 移动到这个文件的第一行(常用) |
n<Enter> | n是数字,光标向下移动n行(常用) |
搜索和替换
搜索和替换功能 | |
/string | 光标向下寻找一个名字为string的字符串 |
?string | 光标向上寻找一个名字为string的字符串 |
:n1,n2/string1/string2/g | 在n1和n2行之间寻找string1的字符串,找到之后用string2来替换 |
:n1,n2/string1/string2/gc(confirm) | 在n1和n2行之间寻找string1的字符串,找到之后用询问是否用string2来替换 |
:1,$s/string1/string2/g | 在第1行和最后一行之间寻找string1的字符串,找到之后用string2来替换 |
:1,$s/string1/string2/gc | 在第1行和最后一行之间寻找string1的字符串,找到之后询问是否用string2来替换 |
n | n是英文按键,代表重复前一个动作,比如重复执行查找字符串和替换操作,和上面的搜索和替换命令配套 |
N | N是英文按键,代表执行相反的操作,比如上一个命令是向下查询,那么它就向上,和搜索和替换命令配套使用 |
删除、赋值和粘贴
删除-一行中的字符 | |
x,X | x是删除光标位置的下一个字符,X是删除光标所在位置的上一个字符 |
nx | n为数字,连续删除后面n个字符 |
d$ | 删除光标所在位置到这一行的最后一个字符 |
d0 | 数字0,删除光标所在位置,到该行的第一个字符 |
删除-多行 | |
dd | 删除光标所在的那一行 |
ndd | n为数字,删除光标所在行的下n行(不包括本行) |
d1G | 删除光标所在行的到第一行的数据 |
dG | 删除光标所在行到最后一行的数据 |
复制-一行中的字符 | |
y0 | 数字0,复制光标所在位置到该行的行首 |
y$ | 复制光标所在位置到该行的行尾 |
复制-多行 | |
yy | 复制光标所在的那一行 |
nyy | 复制光标所在行的下n行 |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
粘贴 | |
p,P | p将复制的数据在光标的下一行贴上,P将复制的数据在光标的上一行贴上 |
撤销 | |
u | 复原前一个动作,相当于win的(ctrl+z),常用 |
ctrl+r | 重做上一个动作,可以和u配套使用,一直撤销 |
.(小数点) | 小数点,重复前一个动作,一般用来重复删除,贴上的操作 |
输入模式
输入模式 | |
i,I | i进入输入模式,并且从光标所在处输入,I从光标所在处的前一个位置输入 |
a,A | 进入输入模式:a是从光标所在处的后一个字符输入,A是从光标所在行的最后一个字符输入 |
o,O | 进入输入模式:o为在光标所在行的下一行输入一个新的行,O为目前光标所在行的上一行输入一个新的行 |
r,R | 进入取代模式,就是你输入的数字会代替当前光标所在的字符。r只会取代光标所在字符一次,R是一致取代光标所在的字符处。一直到按下ESC |
ESC | 退出输入模式,回到正常模式 |
0或者Home | 数字0,移动到这一行的最前面的字符处 |
$或者End | 移动到这一行的最后字符处 |
命令模式
命令模式 | |
:w | 将编辑的数据保存 |
:w! | 将编辑的数据,强制保存到这个文件中 |
:q | 离开编辑器 |
:q! | 强制退出,不保存曾经修改过的文件 |
:wq | 先保存。然后退出 |
ZZ | 大写的ZZ,如果档案没有改动,那么不保存退出,如果文件改动,就保存退出 |
:w [filename] | 将文档另存为filename的文件 |
:n1,n2 w [filename] | 将n1到n2的内容保存到filename这个文件中 |
:r [filename] | 将filename中的文件中的数据,读入本文件光标所在行的行后面 |
:! 命令 | 暂时离开vi指令到,指令行模式下,比如:! ls / 这样就可以在vi下面查看根路径的目录了,不用来回切换指令和编辑模式 |
:set nu | 设置显示行号,前面的有关行号的操作,通常和这个一起用 |
:set nonu | 取消行号 |
来源:CSDN
作者:swf_shixinshou
链接:https://blog.csdn.net/swf_shixinshou/article/details/80081708