Linux—vi/vim命令详解(3000字)
R 用随后输入的文本取代从当前光标开始至后面的若干字符,若新输入的字符数超过原有对应字符数,则多出部分就附加在后面,直到按 Esc 退出取代模式。[数字] S :表示删除光标所在行的内容并进入插入模式开始输入,如果在之前加入数字,例如 5,则表示删除从当前光标开始往下 5 行内容并进入插入模式开始输入。[数字] s :表示删除当前光标字符并进入插入模式开始输入,如果在之前加入数字,例如 5,则表示
目录
vi/vim概念
vi 用来进入 vi 编辑器,vi 编辑器是所有 Unix 及 Linux 系统下标准的文本编辑器,它的强大不逊色于任何最新的文本编辑器
Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
vi/vim的三种模式
命令行模式(command mode)
每次使用命令编辑文件时,默认是命令行模式,可以控制屏幕光标的移动,字符或行的删除,移动复制某区段,
插入模式(Insert mode)
只有在插入模式下,才可以做文本输入
底行模式(last line mode)
只能从命令行模式切换到插入模式,可以将文件保存或退出,也可以设置编辑环境,如寻找字符串、列出行号等。
vi/vim常用命令
编辑文件/创建文件
使用 vi/vim 文件名 可以进行编辑文件或新建文件
切换到插入模式
在命令模式任意按 a、i 或 o 就能进入到插入模式编辑文件
切换到命令模式
按 Esc、双击 Esc 或 删除底行内容就能回到命令模式
切换到底行模式
切换到命令模式之后,输入 : 或者 / 进入底行模式
保存及退出
: w 文件名 (将文件以指定的文件名保存)
: wq (保存并退出)
: q! (不保存强制退出)
命令行模式的命令
进入插入模式
i,I :i 从光标当前位置开始输入;I 为在目前所在行的第一个非空格符处开始输入
a,A :a 从目前光标所在位置的下一个位置开始输入;A 为从光标所在行的最后一个字符处开始输入
o ,O:o 表示在光标所在的下面插入新的一行输入,;O 为在目前光标所在位置的上面插入新的一行开始输入
取代
r,R :r 用随后输入的一个字符取代光标所在的字符;R 用随后输入的文本取代从当前光标开始至后面的若干字符,若新输入的字符数超过原有对应字符数,则多出部分就附加在后面,直到按 Esc 退出取代模式
从插入模式切换为命令行模式
单击 Esc
双击 Esc
删除底行模式内容
移动光标
h 、j 、k 、l ,分别控制光标的左、下、上、右(也可以使用方向键),想要进行多次移动的话,例如向下移动 20 行,可以使用 20j 或 20↓ 的组合按键
ctrl b :屏幕往后移动一页
ctrl f :屏幕往前移动一页
ctrl u :屏幕往后移动半页
ctrl d :屏幕往前移动半页
0 :移到光标所在行首
G :光标移动到整个文本的末行,[行号] G:将光标移至指定行的首位
H :光标移动到当前屏幕的首行,[行号] H:将光标移至指定行的首位
M :光标移动到当前屏幕中间的首位
L :光标移动到当前屏幕的末行,[行号] L:光标移动到倒数的指定行首位
$ :移动到光标所在行的行尾
^ :移动到光标所在行的首位
w / W :光标跳到下段字行的首位
e / E :光标跳到当前行的行尾或下段字行的行尾
b / B :光标跳到当前行的首位获上段字行的首位
gg :光标移动到整个文本的首位
#| :# 为数字,光标移到该行的第 # 个位置
#<空格> :# 为数字,光标移动在光标后 # 位
[行数] + :光标移动到当前行的下一行或指定行的首位
- :光标移动到当前行的上一行
( 、{ :光标移动到整个文本的首位
) 、} :光标移动到整个文本的末尾
操作文本
复制 / 粘贴
yw :复制光标所在位置到行尾的字符
yy :复制光标所在行
#yy :# 为数字,复制光标所在向下 # 行
y1G :复制游标所在行到第一行的所有数据
yG :复制游标所在行到最后一行的所有数据
y0 :复制光标所在的那个字符到该行行首的所有数据
y$ :复制光标所在的那个字符到该行行尾的所有数据
dd :剪切光标所在行
#dd :# 为数字,剪切光标所在的向下 # 行
dG :剪切光标所在到最后一行的所有数据
d$ :剪切游标所在之后到行尾的字符
D :剪切光标位置到行尾的所有字符
d0(数字):剪切游标所在前一位字符到当前行首位
d1G :剪切光标所在到第一行的所有数据
dM :剪切从光标所在行至屏幕中间行的全部内容
p :在光标下一行粘贴
P :在光标上一行粘贴
删除
X :删除光标前的一个字符(相当于 backspace 键)
x :删除光标所在位置的字符
#x :# 为数字,删除从光标位置所在后 # 个字符
dd :删除光标所在行
#dd :# 为数字,删除光标所在的向下 # 行
dG :删除光标所在到最后一行的所有数据
d$ :删除游标所在之后到行尾的字符
D :删除光标位置到行尾的所有字符
d0(数字):删除游标所在前一位字符到当前行首位
d1G :删除光标所在到第一行的所有数据
dM :删除从光标所在行至屏幕中间行的全部内容
X :删除光标所在位置的前一个字符
#X :# 为数字,删除光标所在位置的前 # 个字符
文本功能
[行数] J :将光标所在行与下一行或设置指定的行数的数据结合成同一行,通过空白隔开
ctrl g :显示光标所在行的行号
u :撤销前一个动作
Ctrl r :重做上一个动作
. :重复前一个动作
其他功能
状态显示
Ctrl G :显示文件的状态信息,包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比
屏幕调零
[行号] z [行数] <回车> :将光标所在的行作为屏幕的首行
[行号] z [行数] . :将光标所在的行作为屏幕的中间行
[行号] z [行数] - :将光标所在的行作为屏幕的最末行
若给出行号,那么该行号所对应的行就作为当前行显示在屏幕的首行、中间行和最末行,若给出行数,则它规定了在屏幕上显示的行数
例:
10 z 20 <回车> :将文件中的第 10 行作为屏幕显示的首行,并一共显示 20 行
10 z . :将文件中的第 10 行作为屏幕显示的中间行,显示行数为整屏
10 z 5 - :将文件中的第 10 行作为屏幕显示的最末行,显示行数为 5 行
底行输入模式
保存文件
:w [file-name]:[ 以指定文件名称 ] 保存文件
:w! :强制保存文件
:wq [file-name] :[ 以指定文件名称 ] 保存文件并退出
:wq! :强制保存文件并退出
:q :退出文件
:q! :不保存文件并强制退出
:r [file-name] 在当前文件中读入另一个文件的数据加到光标所在行后面
:2,3 w [file-name] 将第 2 行 到第 3 行的内容保存成 filename 这个文件
行号
:set nu(number 缩写):显示行号
:set nonu :显示行号
:#(行号):输入 # 回车,就会跳到第 # 行的首位
搜索和替换
搜索
/ :向下查找,在 / 后输入要查找的内容
? :向上查找,在 ? 后输入要查找的内容
n :重复前一个搜索的动作
N :反向进行前一个搜索动作
替换
[数字] s :表示删除当前光标字符并进入插入模式开始输入,如果在之前加入数字,例如 5,则表示删除从当前光标开始的 5 位字符并进入插入模式开始输入
[数字] S :表示删除光标所在行的内容并进入插入模式开始输入,如果在之前加入数字,例如 5,则表示删除从当前光标开始往下 5 行内容并进入插入模式开始输入
:/%s/old/new/g :全文替换指定字符
c$ :删除从光标开始到该行末行的内容并进入插入模式
[数字] C :例如数字是 3,删除光标当前位置之后直到下面第 3 行内容并进入插入模式
[数字] cc :表示删除光标所在整行内容并进入插入模式;如果加上前面的数字,例如 5,则表示删除从光标当前行开始到第 5 行内容并进入插入模式
注释
方法一:块选择(vim)
批量注释
Ctrl v 进入块选择模式,然后移动光标选中你要注释的内容,再按 I 进入插入模式输入注释符号如 // 或 #,然后按两下 Esc,系统会自动将你选中的所有行都加上注释
取消注释
Ctrl v 进入块选择模式,选中你要删除的行注释符号按 d 即可删除注释
方法二:
:起始行号,结束行号s/^/注释符/g:在指定的行添加注释
例:
:10,20s#^#//#g:在 10 到 20 行添加 // 注释
:10,20s/^/#/g:在 10 到 20 行添加 # 注释
:起始行号,结束行号s/^注释符//g:取消指定行的注释
例:
:10,20s#^//##g:在 10 到 20 行删除 // 注释
:10,20s/#//g:在 10 到 20 行删除 # 注释
若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!
更多推荐
所有评论(0)