Linux vi/vim/编辑器使用介绍(详细)
尘嫣慕曦 2024-10-11 17:07:03 阅读 57
今天给伙伴们分享一下Linux 命令行基本语法和获取帮助,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
一、vi/vim/编辑器介绍
Vim的发布最早可以追溯到1991年,英文全称为Vi Improved。它也是Vi编辑器的提升版本,其中最大的改进当属添加了代码着色功能,在某些编程场景下还能自动修正错误代码。
vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。
vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用,全兼容vi,最明显的区别是vim可以语法加亮。
通常情况下已经默认安装好了 vi 或 Vim 文本编辑器,只需要通过vim命令就可以直接打开vim编辑器。
Vim编辑器中设置了3种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效地操作文本,就必须先搞清这3种模式的操作区别以及模式之间的切换方法。
二、vi/vim打开文件
<code>[root@edenluo.com ~]# vim 文件名
1、创建文件
2、打开文件
3、编辑文件
三、vi/vim工作模式
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及设置编辑环境。
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作。而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。Vim中无法直接从输入模式切换到末行模式。
1、命令模式详解
<code>光标定位:h j k l 分别对应左h下j上k右l方向键
ctrl+g 显示文件信息,统计行号(数)
ctrl+b 屏幕往前移动一页
ctrl+f 屏幕往后移动一页
ctrl+u 屏幕往后移动半页
ctrl+d 屏幕往前移动半页
0或者^ 定位光标到当前行的开始
$ 定位光标到当前行的结尾
gg、1G 移动到文章首行
G 定位到文本底部
3G 进入第三行
dd 删除(剪切)当前光标所在行
数字+dd 删除多行
D 删除当前光标以后的内容
d^ 删除当前光标之前的内容
yy 复制当前光标所在行
数字+yy 复制多行
p 粘贴
P 粘贴当前光标所在行上一行
u undo撤销
ctrl+r 回滚撤销
shift+v 可视行模式
ctrl+v 可视块模式
2、编辑模式详解
进入编辑模式
[i]:在当前字符前插入字符
[I]:在当前行行首插入字符
[a]:在当前字符后插入字符
[A]:在当前行行末插入字符
[o]:在当前行下插入新的一行,从行首输入文字
[O]:在当前行上插入新的一行,从行首输入文字
编辑内容
从编辑模式进入命令模式:ESC
3、末行模式详解
:set nu 显示行号
:set nonu 取消行号
:set ts=4 设置一个制表符(tabstop)的长度是 4
:set sw=4 vim 在缩进代码时的缩进量(shiftwidth)为 4
:set si 自动缩进
:set ci
自动缩进
在vi中自动缩进的选项一般有以下的几种:
autoindent: 在这种缩进形式中,新增加的行和前一行有相同的缩进形式。
smartindent: 在这种缩进模式中,每一行都和前一行有相同的缩进量,同时能够正确的识别出{ 和},当遇到右花括号(}),则取消了缩进形式。此外还增加了识别C语言关键字的功能。如果一行是以#开头的,那么这种格式将会被特殊对待而不采用缩进格式。这种缩进格式强于autoindent。
cindent:这是C语言的缩进形式,采用这样的缩进方式的程序语言有:C,C++,Java等。当采用这种缩进格式时,vi就会自动的采用标准的C语言形式。这种缩进格式强于smartindent。
可以用如下命令进行缩进形式的设置:
:set autoindent(ai)
:set smartindent(si)
:set cindent(ci)
替换
s
:s/world/nice/ 替换当前光标所在行匹配到的第一个内容
:%s/world/nice/ %表示替换所有行匹配到的第一个内容(每一行只给一次匹配机会)
:%s/world/nice/g 替换行内所有关键字,匹配当前文件所有能匹配到的都给替换了
:3s/world/nice/ 替换指定行
:3,10s/world/nice/ 第3行到第10行
:3,4s/^/#/ 每行行首加指定内容
:,8s/hello/hi/从当前行到第8行
:5,10 s/.*/#&/ 5-10前加入#字符 (.*整行 &引用查找的内容)
:w 保存
:q 退出
:wq 保存退出
:x 保存退出 //快捷键ZZ (大写的)
:wq! 强制保存退出
4、命令模式中最常用命令
命令 | 作用 |
---|---|
dd | 删除(剪切)光标所在整行 |
5dd | 删除(剪切)从光标处开始的5行 |
yy | 复制光标所在整行 |
5yy | 复制从光标处开始的5行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步的操作 |
p | 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面 |
5、末行模式中最常用命令
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:q! | 强制退出(放弃对文档的修改内容) |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该命令 |
:整数 | 跳转到该行 |
😒/one/two | 将当前光标所在行的第一个one替换成two |
😒/one/two/g | 将当前光标所在行的所有one替换成two |
:%s/one/two/g | 将全文中的所有one替换成two |
?字符串 | 在文本中从下至上搜索该字符串 |
/字符串 | 在文本中从上至下搜索该字符串 |
如果有版帮助,帮忙免费的关注一下**公众号「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。