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工作模式

命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

输入模式:正常的文本录入。

末行模式:保存或退出文档,以及设置编辑环境。

第4章 Vim编辑器与Shell命令脚本第4章 Vim编辑器与Shell命令脚本

在每次运行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
?字符串 在文本中从下至上搜索该字符串
/字符串 在文本中从上至下搜索该字符串

如果有版帮助,帮忙免费的关注一下**公众号「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。