【Linux探索学习】第七弹——Linux的工具(二):Linux下vim编辑器的使用详解

Linux的工具(一): 【Linux探索学习】第六弹------Linux的工具(一):Ubuntu系统下的软件包管理器_ubuntu软件管理器-CSDN博客

前言:

在学习Linux之前,相信大家都或多或少的学习过一些计算机语言,比如C、C++等,也是用过一些编译软件,比如VSCode、VS2022等编译软件,这些软件都是在windows下的图形化编译软件,在Linux系统下不能直接使用这些软件,Linux下也有特定的编辑器和编译器,Vim(Vi IMproved)是 Linux 和 Unix 系统中最流行的文本编辑器之一。它是 Vi 编辑器的增强版,功能强大,灵活性高,广泛用于编写和编辑代码、文本文件等。本文将详细介绍 Vim 的基本概念、操作模式、常用命令以及一些高级功能。

注意:本文是所讲解的内容是在Ubuntu系统下进行操作的,centos系统下相关操作略有不同

目录

[1. Vim 的基本概念](#1. Vim 的基本概念)

[1.1 安装 Vim](#1.1 安装 Vim)

​编辑

[2. 操作模式](#2. 操作模式)

​编辑

[3. 常用命令](#3. 常用命令)

[3.1 打开和退出文件](#3.1 打开和退出文件)

[3.2 基本编辑操作](#3.2 基本编辑操作)

[3.3 移动光标](#3.3 移动光标)

[3.4 删除文字](#3.4 删除文字)

[3.5 复制](#3.5 复制)

[3.6 替换](#3.6 替换)

[3.7 更改](#3.7 更改)

[3.8 跳至指定的行](#3.8 跳至指定的行)

[3.9 撤销上一次操作](#3.9 撤销上一次操作)

[4. 查找和替换](#4. 查找和替换)

[5. 高级功能](#5. 高级功能)

[5.1 多文件编辑](#5.1 多文件编辑)

[5.2 分屏编辑](#5.2 分屏编辑)

[6. 配置 Vim](#6. 配置 Vim)

[7. 总结](#7. 总结)


1. Vim 的基本概念

Vim 是一个基于命令行的文本编辑器,它的设计目标是为程序员和系统管理员提供高效的文本编辑能力。Eclipse、Visual Studio 等其他编辑器都提供了图形界面,但 Vim 的强大之处在于其键盘操作,使用户能快速进行文件编辑。但是vim作为一个文本编辑器的局限性就是它只能用来文本编写,也就是写代码,并不能执行代码,而像VS等软件则作为一个集成开发环境即可以写代码,还可以执行代码,vim编写的代码执行是需要其它Linux工具来完成的

1.1 安装 Vim

在 Ubuntu 系统上,可以通过以下命令安装 Vim:

cpp 复制代码
sudo apt update 
sudo apt install vim

需要注意的是当我们以普通用户的身份去下载安装包的时候,是需要sudo提权的,如何使用sudo提权在之前的文章讲过了:Linux用户管理

2. 操作模式

Vim 主要有三种操作模式:

  • 命令模式:Vim 启动后默认的模式,可以使用快捷键执行命令,此模式下用户的所有输入都会被当作命令,一般不会 给你作为文本输入
  • 插入模式 :用于文本输入,按 i 进入插入模式,按 Esc 返回普通模式,此模式下可以进行代码编写
  • 底行模式 :用于输入命令,按 : 进入命令行模式,此模式下可以进行退出保存等多种命令操作

3. 常用命令

3.1 打开和退出文件

  • 打开文件:
cpp 复制代码
vim filename

首先我们先创建一个filename文件,我们用vim进入

这样就表示我们进入到vim中去了

  • 退出 Vim:
cpp 复制代码
:q # 如果没有修改,直接退出 
:q! # 强制退出,不保存修改 
:wq # 保存修改并退出

:q vim编辑器的底行模式的具体进入方法就是:在命令模式下按冒号就可以了

比如上图中是我们进入到filename文件内,q命令就是退出该文件,但是我们在文件中写入内容不会被保存,当我们再次进入这个文件中去就没有内容了

:wq 保存的命令是w,所以wq命令的作用就是保存并退出

:wq! 感叹号的作用是强制执行的意思,因为有些文件是无法被写入的,后面我们也会遇到这类文件,如果我们想往里面写东西就需要感叹号强制写入保存

3.2 基本编辑操作

  • 进入插入模式:按 i(在光标前插入)或 a(在光标后插入)。
  • 删除字符:在普通模式下,按 x 删除光标下的字符。
  • 撤销操作:按 u 撤销操作,按 Ctrl + r 重做操作。

3.3 移动光标

  • h:向左移动一个字符。
  • j:向下移动一行。
  • k:向上移动一行。
  • l:向右移动一个字符。
  • gg:移动到文件开头。
  • G:移动到文件结尾。
  • Ctrl + f:向下翻一页。
  • Ctrl + b:向上翻一页。

3.4 删除文字

  • 「x」:每按一次,删除光标所在位置的一个字符
  • 「#x」:例如,「6x」表示删除光标所在位置的"后面(包含自己在内)"6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符
  • 「dd」:删除光标所在行
  • 「#dd」:从光标所在行开始删除#行

3.5 复制

  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

3.6 替换

  • 「r」:替换光标所在处的字符。
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

3.7 更改

  • 「cw」:更改光标所在处的字到字尾处
  • 「c#w」:例如,「c3w」表示更改3个字

3.8 跳至指定的行

  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

3.9 撤销上一次操作

  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
  • 「ctrl + r」: 撤销的恢复

小结:上面的这些命令是经常要用到的vim编辑器命令,如果能够全部熟练掌握自然最好,但是也并不要求一定要记住,知道有这些命令即可,遇到了可以再搜索查看一下

4. 查找和替换

  • 查找文本:在命令模式下,输入 /text 查找 text,使用 n 移动到下一个匹配项。
  • 替换文本:在底行模式下,输入:
cpp 复制代码
:%s/old_text/new_text/g

这将把文件中的 old_text 替换为 new_text

5. 高级功能

5.1 多文件编辑

  • 打开多个文件:
cpp 复制代码
vim file1 file2
  • 查看打开的文件有哪些:
cpp 复制代码
:ls  #底行模式下输入ls可以查看打开的文件有哪些
  • 切换文件:
cpp 复制代码
:bnext  #可以切换到相近的下一个文件(如果所处文件为最后一个文件,则会切换到第一个文件)

比如此时我们在file1文件中,执行完bnext之后我们就可以切换到file2文件中:

再次执行bnext命令我们会发现我们又切换到file1文件

5.2 分屏编辑

  • 水平分屏:
cpp 复制代码
:split 文件名
  • 垂直分屏:
cpp 复制代码
:vsplit 文件名
  • 切换窗口:按 Ctrl + w 就可以切换到不同的窗口

比如:

执行一下水平分屏和垂直分屏:

执行完之后我们就可以打开三个文件,且这三个文件呈水平或垂直分屏状态:

6. 配置 Vim

经过我们上面的使用,已经能感受到vim的使用是不太方便的,没有vs等界面化的编辑方式,而且行号、自动补全括号、自动缩进等功能都是没有的,其实这些东西都是可以进行配置的

Vim 的配置文件是 ~/.vimrc,这个文件默认是没有的,是需要我们自己创建的

创建之后我们就可以vim进入里面然后进入各种相关配置

vim的配置是一个比较繁琐的事情,尤其是Ubuntu系统下的配置,更是困难,需要全部手动配置,centos系统下的vim配置网上是有直接的链接的,直接下载即可,vim配置的内容本篇就不做详解了,如果想要配置一下的可以去再搜索一下相关的博客,还是有不少写的比较好的vim配置博客的,由于版权问题,我这里就不贴出来了

7. 总结

Vim 是一个功能强大的文本编辑器,掌握 Vim 的基本操作和命令,可以大大提高文本编辑的效率。尽管 Vim 的学习曲线相对较陡,但一旦熟悉后,它无疑是开发者和系统管理员的得力助手。

感谢各位大佬观看,创作不易,还请各位大佬点赞支持!!!

相关推荐
Arenaschi3 分钟前
在Tomcat中部署应用时,如何通过域名访问而不加端口号
运维·服务器
小张认为的测试4 分钟前
Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
linux·服务器·测试工具·自动化·php·excel·压力测试
waicsdn_haha11 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
打鱼又晒网12 分钟前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp
biter008816 分钟前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
大妞18 分钟前
ubuntu20.04 install vscode[ROS]
ubuntu
乐闻x18 分钟前
VSCode 插件开发实战(六):配置自定义状态栏
ide·vscode·编辑器
张明奇-琦玉19 分钟前
vscode添加全局宏定义
ide·vscode·编辑器
星星不说话~24 分钟前
VScode在远程服务器上安装Anaconda并确认安装成功的步骤
ide·vscode·编辑器
良许Linux25 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网