Vim编辑器使用技巧
此文章适合学生,泛linux领域运维人员,linux爱好者阅读,希望通过此文章可以帮助大家更轻松的使用vim编辑器。
此文章适合学生、泛linux领域开发运维人员、linux爱好者阅读,希望通过此文章可以帮助大家更轻松的使用vim编辑器。
vim编辑器是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。vim是自由软件。vim普遍被推崇为类vi编辑器中最好的一个,功能非常强大。尤其在linux操作系统领域,有良好的vim编辑器的使用技巧,工作效率往往会大大提升。
vim编辑器是vi编辑器的升级版,不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。vi 编辑器是所有 Unix 及 Linux 系统下的标准编辑器,对 Unix 及 Linux 系统的任何版本,vi 编辑器是完全相同的。
目录
一、安装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 | 在光标之后进入编辑模式 |
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 |
命令 | 描述 |
---|---|
:!Cmd | 运行Shell命令Cmd |
:n1,n2 w !Cmd | 将n1行至n2行做为Cmd命令的输入,若不指定行则整个文件做为Cmd的输入 |
:r !Cmd | 将命令运行的结果写入光标所在行的下一行(命令不能是别名) |
命令 | 描述 |
---|---|
: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)
此文章如有不妥之处,欢迎各位大佬留言,评论。
更多推荐
所有评论(0)