此文章适合学生、泛linux领域开发运维人员、linux爱好者阅读,希望通过此文章可以帮助大家更轻松的使用vim编辑器。

        vim编辑器是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。vim是自由软件。vim普遍被推崇为类vi编辑器中最好的一个,功能非常强大。尤其在linux操作系统领域,有良好的vim编辑器的使用技巧,工作效率往往会大大提升。

        vim编辑器是vi编辑器的升级版,不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。vi 编辑器是所有 Unix 及 Linux 系统下的标准编辑器,对 Unix 及 Linux 系统的任何版本,vi 编辑器是完全相同的。

目录

一、安装vim编辑器

二、vim编辑器基本使用

1、命令模式(正常模式,一般模式):

2、插入模式(编辑模式)

3、底行模式(尾行模式,命令行模式)

三、vim编辑器高级技巧

1、解决vim编辑器乱码问题

2、批量注释和取消注释批量注释和取消注释

3、多行缩进

4、查找替换字符


一、安装vim编辑器

vim的工作状态及各模式间的关系

linux默认安装了vi编辑器(但是并不一定是vim),可以在命令行界面键入vim,检查是否安装。

yum install vim -y                #redhat系列安装方法
apt install vim -y                #debin系列安装方法

二、vim编辑器基本使用

vim编辑器有三种模式:命令模式,插入模式,底行模式。

1、命令模式(正常模式,一般模式):

直接用vim打开文本,此时为命令模式(正常模式),此时可以移动光标,复制粘贴,删除,替换,模式切换等操作,但是不能编辑。(你的所有输入都是命令)

光标移动
命令描述
ctrl+b屏幕往后翻一页
ctrl+f 屏幕往前翻一页
ctrl+u屏幕往后翻半页
ctrl+d屏幕往前翻半页
h,j,k,l(上 左 下 右)上,左,下,右
nw  或 nW向后移动n个词(默认为1个)
nb  或  nB向前移动n个词(默认为1个)
ne  或  nE向后移动到n个词的末尾字符(默认为1个)
n+下移n行,行首
n-上移n行,行尾
n$光标向下移动n行,定位到行尾
^ 或  0光标移动至行首
gg光标移动至文章开头
G光标移动至文章末尾
(      )光标移动至句首   句尾
{       }光标移动至段落开头    结尾
H光标移动至屏幕顶行
M光标移动至屏幕中间行
L光标移动至屏幕底行
%50跳转到文件中间
shift+*定位到与当前光标所在单词相同的词
删除文本
命令描述
nx删除光标位置后面n个字符(默认1个)
nX删除光标位置前面n个字符(默认1个)
ndd删除光标所在行向下n行(默认1行)
d$删除至行尾

d^

删除至行首
ggdG删除所有内容
ggyG复制所有内容
dG删除光标之后所有内容
撤销,恢复,重复
命令描述
u撤销上一步操作,可撤销多次
ctrl+r恢复上一步被撤销的操作(反取消)
.重复执行上次命令
复制文本
命令描述
y复制至行首

y$

复制至行尾
nyy复制从光标所在行向下n行文字(默认1行)
p

粘贴到光标所在位置

P粘贴到光标前位置
保存及退出
命令描述

ZZ

:x

:wq

直接退出vim编辑器
批量操作
命令描述
shift+v行选中
ctrl+v列选中
先选中然后按=自动格式化对齐代码

2、插入模式(编辑模式):

一般模式可以复制粘贴删除,但要编辑,需按下i,I,o,O,a,A,r,R等字母,才会进入编辑模式,按下按钮后,屏幕左下方会出现 INSERT 或REPACE等字样,如果要回到 命令模式,按 Esc键。

插入,删除
命令描述
i 或 I 在当前行的第一个非空字符之前进入编辑模式
o在当前行下新插入一行,光标移动至行首,进入编辑模式
O在当前行上面新插入一行,光标移动至行首,进入编辑模式
在光标之后进入编辑模式

A        

在行尾进入编辑模式
ctrl+n自动补全内容(多用在编写shell脚本中使用)
Esc回退到命令模式

3、底行模式(尾行模式,命令行模式):

在一般模式下输入“:”或“/”就可以将光标移到末行,在此模式中,可以搜寻数据,读取,存盘,大量字符替换,退出vi,显示行号等。

跳行
命令描述
:n跳转到第n行
字符串搜索和替换
命令描述

:/str/

/str

从当前往右移动到有str的地方

:?str?

?str

从当前往左移动到有str的地方
/^abc查找已abc为行首的行
/abc$查找已abc为行尾的行
:/str/w file将包含有str的行写到文件file中
:/str1/,/str2/w file将从str1开始到str2结束的内容写入到file文件中
:s/str1/str2/将找到的第一个str1替换为str2
:s/str2/str2/g将当前行找到的所有str1替换为str2
:n1,n2s/str1/str2/g将从n1行至n2行找到的所有的str1替换为str2
:1,.s/str1/str2/g将从第1行至当前行的所有str1替换为str2
:.,$s/str1/str2/g将从当前行至最后一行的所有str1替换为str2
:1,$s/str1/str2/gc将从第1行至最后一行的所有str1替换为str2,并在替换前询问
文本的复制、移动和删除
命令描述
:n1,n2 co n3将n1行至n2行复制到n3后面
:n1,n2 m n3将n1行至n2行移动到n3后面
:d删除当前行
:nd删除第n行
:n1,n2 d删除n1行至n2行
:.,$d删除当前行至最后一行
:/str1/,/str2/d删除从str1开始至str2为止的内容
文件相关命令
命令描述
:w当前编辑的内容存盘
:w file当前编辑的内容写到file中
:n1,n2w file从n1行至n2行写到file中
:nw file第n行写到文件file中
:1,.w file从第1行至当前行写到file中
:.,$w file从当前行至最后一行写到file中
:r file打开另一个文件file
:e file新建file文件
:f file当前文件改名为file
执行Shell命令
命令描述
:!Cmd运行Shell命令Cmd
:n1,n2 w !Cmd将n1行至n2行做为Cmd命令的输入,若不指定行则整个文件做为Cmd的输入
:r !Cmd将命令运行的结果写入光标所在行的下一行(命令不能是别名)
vim环境配置
命令描述
:set autoindent自动缩进
:set noautoindent取消自动缩进
:set number在编辑文件时显示行号
:set nonumber不显示行号
:set list        显示隐藏字符  (比如换行符$)
:set ruler在屏幕底部显示光标所在的行,列位置
:set noruler不显示行,列位置
:set nohls取消永久高亮
:set hls打开永久高亮
:noh取消当前高亮内容
:set tabstop=value设置显示制表符的空格字符个数
:set wrapmargin=value设置显示器的右页边。当输入进入所设置的页边时,编辑器自动回车换行
:set显示设置的所有选项
:set all显示所欲可以设置的选项
:set paste                    粘贴方式插入数据(粘贴带有缩进文本的时候贴别好用)
保存及退出
命令描述
:q退出

:wq

:x

ZZ

保存并退出
:q!不保存强制退出
:w filename另存到filename文件

三、vim编辑器高级技巧

1、解决vim编辑器乱码问题

vim /etc/vimrc
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1

2、批量注释和取消注释批量注释和取消注释

批量注释(批量插入相同字符同理)

​方法1:​
1. ctrl+v进入VISUAL BLOCK(可视块)模式
2. 按 j (向下选取列)或者 k (向上选取列)或者上下方向键
3. 按shift + i 进入编辑模式然后输入你想要插入的字符(#)
4. 按两次esc就可以实现批量插入字符

​方法2:​
命令行模式下,输入 " : 首行号,尾行号 s /^/字符/g "实现批量插入字符。如 输入:1,3s/^/#/g,在1到3行首插入#

批量取消注释

​方法1:​
1. ctrl+v进入VISUAL BLOCK(可视块)模式
2. 按 j (向下选取列)或者 k (向上选取列)或者上下方向键
3. 直接(不用进入编辑模式)按 x 或者 d 就可以直接删去,再按esc退出

​方法2:​
命令行模式下,输入 " : 首行号,尾行号 s /^字符//g "实现批量删除字符。如 输入::1,3s/^#//g,在1到3行首删除#

3、多行缩进

按v进入visual状态,选择多行,用>或<缩进或缩出

4、查找替换字符

/关键字:先按/键,再输入要查找的字符串,可一直按n往后继续查找(按N往反方向查找)
?关键字:先按?键,再输入要查找的字符串,可一直按n往后继续查找(按N往反方向查找)
替换匹配字符串:%s/network/net/g (s代表search,g代表所有,用net替换所有的network)
替换整字:%s/\<network\>/net/g (s代表search,g代表所有,用net替换所有的network)

此文章如有不妥之处,欢迎各位大佬留言,评论。

Logo

更多推荐