Vim编辑器使用技巧

此文章适合学生、泛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的工作状态及各模式间的关系

Vim编辑器使用技巧_第1张图片

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 显示所欲可以设置的选项
保存及退出
命令 描述
: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/\/net/g (s代表search,g代表所有,用net替换所有的network)

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

你可能感兴趣的:(Linux系统配置,vim,编辑器,linux,运维)