【Linux】文本编辑器Vim[通俗易懂]

【Linux】文本编辑器Vim[通俗易懂]Linux文本编辑器Vim详细学习笔记

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

往期内容

Linux常用指令合集

Linux文本编辑器

Linux软件包管理

Linux用户管理

Linux权限管理

Vim常用操作

什么是Vim

Vim是一个全屏幕文本编辑器,是Linux/UNIX最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。

Vim没有菜单,只有命令。

Vim工作模式

在这里插入图片描述

如上图,vi+文件名进入文件,默认为命令模式。

[root@iZ2ze0xeiu8g6ub59nsq0bZ test]# vi ceshi

在命令模式下,所输入的字母都被当成命令,所以如果输入的字母并不是正确的命令,则需要继续输入。

若要进入插入模式,则需要输入命令i、a或o。

在这里插入图片描述

在命令模式下,若误删内容,可按u撤销删除。

在命令模式下按 可进入编辑模式,然后再输入想要执行的命令即可。

编辑模式的命令执行完后会自动恢复到命令模式。

下面再来详细介绍一下Vim的常用命令(命令模式下输入)

插入命令

a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行行首插入
o 在光标下插入新行
O 在光标上插入新行

定位命令

:set nu		设置行号
:set nonu	取消行号
gg			到第一行
G			到最后一行
nG			到第n行
:n			到第n行
$			移至行尾
0			移至行首

删除命令

x		删除光标所在处字符
nx		删除光标所在处后n个字符
dd		删除光标所在行,ndd删除n行
dG		删除光标所在行到文件末尾内容
D		删除光标所在处到行尾内容
:n1,n2d 删除指定范围的行

这里说一下最后一个命令

例如我要删除7-10行内容,可进行如下图操作

在这里插入图片描述

复制和剪切命令

yy		复制当前行
nyy		复制当前行以下n行
dd		剪切当前行
ndd		剪切当前行以下n行
p、P	    粘贴在当前光标所在行下或行上

替换和取消命令

r		取代光标所在处字符
R		从光标所在处开始替换字符,按Esc结束
u		撤销上一步操作
Ctrl+r	取消撤销

搜索和搜索替换命令

/string			搜索指定字符串
				搜索时忽略大小写:set ic

如下图,若要在文件中搜索关于ftp的内容,则输入/ftp再回车即可,按n切换到下一个含有该关键词的字符串。
在这里插入图片描述

搜出来的字符串是区分大小写的,若不区分大小写,则输入命令:set ic

在这里插入图片描述

全文替换指定字符串

:%s/原来字符串/替换后字符串/g

例如我要把文件中的ftp替换成study,操作如下图所示:

在这里插入图片描述

在一定范围内替换指定字符串

:n1,n2s/原来字符串/替换后字符串/g

例如我要把文件中40-50行的study替换成ftp,操作如下图所示:

在这里插入图片描述

保存和退出命令

:w		保存修改
:w name 另存为指定文件
:wq		保存修改并退出
ZZ		快捷键,保存修改并退出
:q!		不保存修改退出
:wq!	保存修改并退出(文件所有者及root可用)

这里说一下最后一个命令的作用

先查看一下,etc文件夹下services的权限

[root@iZ2ze0xeiu8g6ub59 /]# ll /etc/services
-rw-r--r--. 1 root root 670293 Jun  7  2013 /etc/services

可以发现,文件所有者是有写权限的,现在我们把写权限去掉

[root@iZ2ze0xeiu8g6ub59 /]# chmod 444 /etc/services
[root@iZ2ze0xeiu8g6ub59 /]# ll /etc/services
-r--r--r--. 1 root root 670293 Jun  7  2013 /etc/services

现在所有者没有写权限,那么如果要保存修改后的文件services,则需要输入:wq!强行保存修改。

在这里插入图片描述

Vim使用技巧

:r 	将某个文件导入到当前文件的光标所在位置

在这里插入图片描述

:!命令		可以在不退出Vim的情况下执行相应的系统命令

例如我在不退出Vim的情况下想知道命令mv的路径,则输入:!which ls即可,如下图。

在这里插入图片描述

上面两个命令的结合

如果我要将文件编辑结束时的时间导入到到文件中,则可以输入

:r !date

在这里插入图片描述

:map 快捷键 触发命令	#定义快捷键

来说说这个map如何使用,例如现在我要把光标所在行注释掉

在这里插入图片描述

一般来说可分为以下几步:

  1. 光标移到该行行首并进入插入模式,使用命令I
  2. 添加#注释
  3. Esc退出插入模式

如果要注释的行比较多,则会变得非常繁琐,下面我们输入命令,将Ctrl+P定义为以上几步的快捷键

在这里插入图片描述

现在只要在光标所在行输入Ctrl+p就能将该行注释

在这里插入图片描述

但如果我们定义的快捷键很多,记不住时,我们还可以用到替换,命令格式如下

:ab phone 12345678910	#在当前编辑文件下,我输入phone再回车就能变成电话号码

其实上面定义的快捷键或者是ab替换,都没有被系统保存下来,也就是说当我重新登录后就会失效。

那么我们需要将这些快捷键输入到每个用户的home目录下的配置文件里。

以root用户为例,创建一个配置文件.vimrc

[root@iZ2ze0xeiu8g6ub59 /]# vi /root/.vimrc

然后在配置文件中输入我们使用Vim时的一些常用命令和快捷键,保存即可。

在这里插入图片描述

笔记领取

Linux系列文章均已打包成PDF版本的笔记,关注公众号“大拨鼠Code”回复“Linux”领取,持续更新。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164522.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月26日 下午11:36
下一篇 2022年7月26日 下午11:36


相关推荐

  • Prophet 初学笔记[通俗易懂]

    Prophet 初学笔记[通俗易懂]本文介绍Prophet模型的简单调用。

    2022年6月19日
    57
  • Claude 4的五种强大应用方法

    Claude 4的五种强大应用方法

    2026年3月16日
    2
  • Avro的java实现

    Avro的java实现基于 ApacheAvro 1 10 2 版本的 Java 实现使用 IDEA 和 JDK1 8 来实现直接上代码工程目录 src main avro 文件夹是用来存放 schema 定义 avsc 文件和序列化结果文件 avrodcom donny avro 目录下是采用为 avsc 生成 Java 类的方式实现的代码 com donny schema 目录中是采用 schema 的方式 不需要为 avsc 生成 Java 类的方式实现的代码 pom xml 配置 xmlversion 1 0 encoding

    2026年3月16日
    2
  • route命令的使用详解[通俗易懂]

    route命令的使用详解[通俗易懂]Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设…

    2022年7月18日
    17
  • Kimi K2.5 全解析+一步API接入实战(Python完整代码)

    Kimi K2.5 全解析+一步API接入实战(Python完整代码)

    2026年3月12日
    3
  • java渗透测试框架_java编程

    java渗透测试框架_java编程(7)sqlmap(python脚本学习下)经典sql注入工具(这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来)抓几个sqlmap的包sqlmap功能很强大,这里就抓了一个结合burpsuitePOSTsqlmap的包(也可以用Burpsuitesqlmap插件http://www.freebuf.com/tools/6426.html)命令:…

    2022年8月12日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号