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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)普通模式:高难度的操作
d+aw               :删除光标所在单词以及单词前的一个空格(d就是删除的指令,aw就是光标所在单词加上前一个空格)
gUgU              :把光标所在行的一整行的小写字母全部转成大写字母(原本就有的大写字母则是忽略)
gU+t+字母      :gU就是转为大写的操作指令,“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”替换命令
⑦输入新的字符即可

以上是关于vim运维日常必备操作技巧(常用的全有)的主要内容,如果未能解决你的问题,请参考以下文章

第13章 linux系统管理技巧(日常运维管理技巧)

vim编辑器常用技巧

IDEA Intellij中vim插件使用小技巧

IdeaVim插件使用技巧--JetBrains Plugin Vim

电脑常用操作技巧_高手必备

提效小技巧——记录那些不常用的代码片段