vim运维日常必备操作技巧(常用的全有)

一、说明

掌握vim的操作技巧能让运维的工作事半功倍,本文将罗列出运维日常使用到的操作技巧,不太常用的操作,本文没有收集,有高要求有兴趣的可以百度查阅vim专题

二、常用技巧

1)普通模式:移动光标的操作

指令作用
G或者(Shift+g)光标瞬移到文件的最后一行
gg光标瞬移到文件的第一行,命令等同于“1G”
0(数字0)或者^光标瞬移到当前行的行首
$标瞬移到当前行的行尾
b光标瞬移到当前位置的单词的单词首字母处
e光标瞬移到当前位置的单词的单词尾字母处
w光标瞬移到当前位置的单词的下一个单词的单词首字母处
f+字母光标往右瞬移到指定的“字母处”,如果指定的字母有重复,则默认跳转到从左至右的第一个
F+字母光标往左瞬移到指定的“字母处”,如果指定的字母有重复,则默认跳转到从右至左的第一个
num+回车键光标从当前行位置向下移动num行(num是数字)
num+gg光标移动到文件的第num行,命令等同于“num+G”
H或者(Shift+h)光标瞬移到当前窗口最上面的那一行
M或者(Shift+m)光标瞬移到当前窗口中间的那一行
L或者(Shift+l)光标瞬移到当前窗口最下面的那一行
h或者←光标向左移动一个字符
j或者↓光标向下移动一个字符
k或者↑光标向上移动一个字符
l或者→光标向右移动一个字符
<光标所在的一整行向左缩进
>光标所在的一整行向右缩进

2)普通模式:搜索与替换操作

指令作用
:/dabiaoge从光标位置开始,向下搜索名为dabiaoge的字符串
:?dabiaoge从光标位置开始,向上搜索名为dabiaoge的字符串
r用光标选中字符,按下“r”,并输入替换的新内容,则可以把选中的字符修改成新内容
n从光标位置开始,向下重复前一个搜索动作
N从光标位置开始,向上重复前一个搜索动作
:g/A/s//B/g把全文符合A的内容全部替换成B,斜线都是分隔符,可用"@"和"#"代替(注意中间s后面是两个斜线)
:%s/A/B/g把全文符合A的内容全部替换成B,斜线都是分隔符,可用"@"和"#"代替(这个操作和“g/A/s//B/g”一模一样的效果)
:num1,num2s/A/B/gc在第num1行和第num2行之间寻找A,并且把全部的A替换成B(后面的gc的c表示再次确定,如果确认就输入y,也可以不用c,如果直接就是g,则是不用确定并且立即生效)

3)普通模式:复制、粘贴、删除等操作

指令作用
yy复制光标当前所在的一整行
num+yy复制从光标所在行的这一行起向下的num行(光标所在的行为第一行)
小p、大P小p表示将已复制的数据粘贴到光标所在行的下一行;而大P表示将已复制的数据粘贴到光标所在行的上一行
dd删除当前光标所在的一整行
num+dd删除从光标所在行开始向下的num行(光标所在的行为第一行)
u撤销(回滚)前一个执行过的操作
.就一个点号,表示重复前一个执行过的操作

4)普通模式:日常高技巧的操作

指令作用
daw删除光标所在单词以及单词前的一个空格(d就是删除的指令,aw就是光标所在单词加上前一个空格)
gUgU把光标所在行的一整行的小写字母全部转成大写字母(原本就有的大写字母则是忽略)
gugu把光标所在行的一整行的大写字母全部转成小写字母(原本就有的小写字母则是忽略)
g~g~把光标所在行的一整行的字母大小写互相调换,大写变小写,小写变大写
gU+t+字母gU就是转为大写的操作指令,“t+字母”就是是表示重新定义光标在这一行的位置,而这个字母就是新的光标位置,如果同一行内有多个相同字母,则默认是第一个,表示从光标现在位置开始到“指定字母”这个位置止,之间的凡是小写的字母全部转成大写字母
gu+t+字母gu就是转为小写的操作指令,“t+字母”就是是表示重新定义光标在这一行的位置,而这个字母就是新的光标位置,如果同一行内有多个相同字母,则默认是第一个,表示从光标现在位置开始到“指定字母”这个位置止,之间的凡是大写的字母全部转成小写字母
g~+t+字母g~就是转为大小写互掉的操作指令,“t+字母”就是是表示重新定义光标在这一行的位置,而这个字母就是新的光标位置,如果同一行内有多个相同字母,则默认是第一个,表示从光标现在位置开始到“指定字母”这个位置止,之间的所有字母大小写互掉
Ctrl+a(快捷键)把光标所在的数字加1
num+Ctrl+a把光标所在的数字加num(num是数字,不能是负数、0还有小数,必须是正整数)

5)进入编辑模式的命令(一共就六种进入编辑模式的命令键)

指令作用
i在当前光标所在处开始进入编辑模式
a在当前光标所在处的下一个字符处开始进入编辑模式
I在当前光标所在行的行首的第一个非空格符处开始进入编辑模式(与A正好相反)
A在当前光标所在行的行尾最后一个字符处开始进入编辑模式(与I正好相反)
O在当前光标所在行的上一行插入新的一行(也就是把当前光标所在的行下移一行,但是光标还在这一行,并且光标移动到行首)
o不是数字0,是字母o,表示在当前光标所在行的下一行插入新的一行(与O正好相反)
Esc退出编辑模式,切回到命令模式

6)命令行模式的命令

指令作用
:wq或者x退出并保存
:wq!或者x!退出并强制保存,“!”为强制的意思
:q!强制退出,但不保存
:num1,num2 w filename将第num1行到第num2行的内容保存到filename这个文件(filename文件无须提前创建)
:num1,num2 co num3将第num1行到第num2行的内容复制到第num3行的下面
:num1,num2 m num3将第num1行到第num2行的内容移动(剪切)到第num3行的下面
:!任意命令表示暂时离开vim页面,转到执行的那个命令的页面,例如:!ls /root
:set nu所有行都显示行号
:set nonu取消行号(与“set nu”相反)
:vs filename以垂直分屏的方式显示,会左右显示当前文件和filename文件的内容
:sp filename以水平分屏的方式显示,会上下显示当前文件和filename文件的内容
:,$d注意最前面有个逗号,表示删除当前光标所在行以及后面的所有行(光标所在的那一行也删除)
:num,.d注意num和d之间有个逗号和点,表示删除第num行到光标所在行的内容(光标所在的那一行也删除)

7)可视化模式

....................
可视化模式类型分为三种字符可视化、行可视化、块可视化
在普通模式下:按v(小写),进入字符可视化
按V(大写,也可以Shift+v),进入行可视化
按“Ctrl+v”,进入块可视化
什么是可视化?就是一种控制选择粒度的方案。
字符可视化选择粒度是一个字符,就是以字符为单位,一次选择一个字符
行可视化选择粒度是一整行,就是为行为单位,一次选择一行
块可视化最强大的选择粒度,没有选择单位,可自由选择,选择完的区域形成一个块,所以叫块可视化

下面罗列工作中用到可视化最常用的操作:

把连续的几行代码在行首部注释掉

步骤指令作用
num1+gg把光标定位到需要注释掉的几行代码的首行的行首
Ctrl+v进入块可视化
num2+gg把光标定位到需要注释掉的几行代码的末行的行首(如果行数不多,就连续按↓或者j,直到末行为止即可)
Shift+i”或者I在第一个非空格符处开始进入编辑模式
输入“#”一般的注释符是“#”号,这里也可以输入其他的注释符
按Esc退出如果行数比较多,按下Esc不能立即给所选的所有行加上#号,需要等待1~2秒即可

既然有一次性注释的方法,那么也就有一次性取消注释的方法

步骤指令作用
num1+gg把光标定位到需要取消注释掉的几行代码的首行的行首
Ctrl+v进入块可视化
num2+gg把光标定位到需要取消注释掉的几行代码的末行的行首 //如果行数不多,就连续按↓或者j,直到末行为止即可
执行d删除即可删除所有的“#”

把连续的几行代码在行尾部加上相同字符(比如C++代码是在行尾部加“;”才能生效):

步骤指令作用
num1+gg把光标定位到需要加“;”的几行代码的首行的行首
Ctrl+v进入块可视化
num2+gg把光标定位到需要注释掉的几行代码的末行的行首 //如果行数不多,就连续按↓或者j,直到末行为止即可
$光标瞬移到当前行的行尾
“Shift+a”或者A在最后一个非空格符处开始进入编辑模式
输入“;”添加“;”
按Esc退出如果行数比较多,按下Esc不能立即给所选的所有行加上;号,需要等待1~2秒即可

一次性删除N行代码(我知道可用Ndd完成,这里用行可视化完成)

步骤指令作用
num1+gg把光标定位到需要删除的几行代码的首行的行首
“Shift+v”或者V进入行可视化
num2+gg把光标定位到需要删除掉的几行代码的末行的行首 //如果行数不多,就连续按↓或者j,直到末行为止即可
执行d删除可删除所有的被选中行

一次性删除所选内容(这个用Ndd可完成不了,这里用块可视化完成)

步骤指令作用
num1+gg把光标定位到需要删除内容的起始行的行首
f+字母/数字跳转到需要删除部分的起始位置
Ctrl+v进入块可视化
num2+gg把光标定位到需要删除部分的末尾部分所在行的行首 //如果行数不多,就连续按↓或者j,直到末行为止即可
再次执行“f+字母/数字”跳转到需要删除部分的结尾位置
说明如果行数不是太多,需要删除的部分全部在一个窗口内,则不用④和⑤那么麻烦,直接使用“← ↓ ↑→”方向键来选定需要删除的区域即可
执行“d”删除可删除所有的被选中部分

既然有添加和删除,那么一定也有替换

步骤指令作用
num1+gg把光标定位到需要替换内容的起始行的行首
f+字母/数字跳转到需要替换部分的起始位置
Ctrl+v进入块可视化
num2+gg把光标定位到需要替换部分的末尾部分所在行的行首 //如果行数不多,就连续按↓或者j,直到末行为止即可
再次执行“f+字母/数字”跳转到需要替换部分的结尾位置
说明如果行数不是太多,需要替换的部分全部在一个窗口内,则不用④和⑤那么麻烦,直接使用“← ↓ ↑→”方向键来选定需要替换的区域即可
执行“r”替换命令
输入新的字符输入完即可

转载于:https://blog.51cto.com/zpf666/2336137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值