Re:Linux系统篇(十)工具篇 · 二:Vim 编辑器深度解析:从基础模式到高效配置


◆ 博主名称: 晓此方-CSDN博客 大家好,欢迎来到晓此方的博客。
⭐️Linux系列个人专栏: 【主题曲】Linux
⭐️ Re系列专栏:我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)


文章目录


概要&序論

Hello 大家好,我是此方 ,今天开始我会为大家带来Linux的开发工具的相关内容,Vim 是一款功能强大的多模式编辑器,熟练掌握 Vim 的模式切换与快捷键,能极大地提升编程效率。内容还是力求完整充实,干货满满,希望能够帮到大家。好,我们开始。

一,vim基础认知获取

1.1vim是什么?为什么我们要学习vim?

Linux下带界面的IDE也可以装,但是有点麻烦 ,Linux下的工具都是独立 的,但是IDE底层就是一个个工具的组合。然后我们要介绍的vim,是一个编辑器。我们之前提到过的nano也是编辑器,你可以把那个当作是一个记事本。vim要更牛逼一点。

为什么我们要学习vim?

  • 1.vim是最难使用的,(当然vscode的配置更让人恶心。

  • 2.vim是linux自带的。

  • 3.你做后端怎么能不会vim呢?

1.2当前机器的vim的信息查看

使用vim --version可以看到版号、功能开关、脚本支持、终端特性 等等内容。

1.3先见一见vim

好,我们命令行**输入vim或者vim + 文件名就进入了vim,**初次进入会看到这样一个欢迎界面。

怎么退出?

  • 方法一:shift +:出现输入框。输入q回车退出,或者wq回车退出(w是保存的意思,后面会详细讲)。
  • 方法二:大写ZZ按两下。退出。

1.4vi与vim的区别

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本 ,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、mac os、windows。我们接下来,统一按照vim来进行讲解。

一、 Vim 的多模式架构

Vim 的核心在于其"多模式"设计,不同模式下键盘按键的功能截然不同。

1. 命令模式 :默认模式。此模式下可进行光标移动、复制、剪切、粘贴等操作。

2. 插入模式 :按下 aio 进入。在此模式下可像普通编辑器一样输入文本。按下 Esc 回到命令模式。

3. 底行模式 :在命令模式下按下 shift + ;(即 :)进入。用于保存文件(w)、退出(q)或执行复杂命令。

4. 替换模式 :按下 shift + r(即 R)进入,可批量替换字符。

5. 视图模式 :按下 ctrl + v 进入,常用于区域选择与列编辑。

注意:插入模式与底行模式之间不能直接切换,必须经过命令模式中转。

二、 命令模式下的快捷操作

命令模式是 Vim 的"指挥中心",掌握以下快捷键可实现脱离鼠标的快速编辑:

使用vim的时候一个细节原则:忽略你的小键盘 ,有的人和我一样输入数字有一个癖好用小键盘,但是vim默认不支持小键盘。

2.1光标快速定位

基础移动h (左)、j (下)、k (上)、l (右)。 (方向键也可以,但是推荐你这一套,在视图模式下上下左右选中不支持方向键

为什么是这一套移动设置?这不是太麻烦了? ,别着急,万物自有其原因,如下,这是古人使用的键盘出土文物。当时还没有方向键。

2.2快速跳转

  • gg:快速回到文件开头。
  • G (shift + g):快速定位到文件结尾。
  • $ (shift + 4):定位到当前行行尾。
  • ^ (shift + 6):定位到当前行行首。
  • w / b:以单词为单位向后或向前移动。(单词的界定比较模糊,可以是一个单词,也可以是连续的特殊字符串)

以上操作都可以在前面加上n来倍数操作哦。

2.3编辑与撤销

复制粘贴yy 复制当前行;p 在光标所在位置后方粘贴;P 在前方粘贴。

剪切删除dd 剪切/删除当前行;x 删除光标所在字符;shift + x 删除光标左侧字符。(即是删除又是剪切 )

替换与转换r 替换单个字符;nr 批量替换;shift + ~ 进行大小写切换。

撤销重做u 撤销历史操作;ctrl + r 撤销"撤销"操作(反撤销)。需要注意,一旦退出文件,撤销历史将丢失。

以上操作都可以在前面加上n来倍数操作哦。

2.4搜索与选中

在单词上按下 shift + 3 (#) 可快速选中并搜索该单词,按 n 进行逆向查找。

2.5 批量处理与使用技巧

2.5.1可视块模式 (Visual Block) 批量操作

在命令模式下,通过 Ctrl + v 进入可视块模式,可以实现对多行的快速批量编辑:

  • 批量添加注释:
    1. 按下 Ctrl + v 进入可视块模式。
    2. 使用 j / k 选中需要注释的行。(在ctrl +v进入视图模式后,之前的任何相关于光标的操作如:shift+g,n+hjkl等等都可以用来选定我们想要的。就是光标移动到那里,哪里就被我们选定了)
    3. 按下 Shift + i (大写 I) 进入插入模式。
    4. 输入注释符号(如 //#)。
    5. 按下 Esc 键,Vim 会自动在选中的所有行首添加该符号。
  • 批量删除内容:
    1. 按下 Ctrl + v 选中需要删除的区域。
    2. 按下 dx 键即可将选中块内容一次性删除。

2.3.2多屏操作与光标切换

使用底行模式指令 :vs [filename] 可以实现水平分屏。在多屏幕之间切换光标的方法如下:

  • 快捷键切换: 按住 Ctrl 不放,连续快速按下两次 w (Ctrl + ww),光标会在不同窗口间循环跳转。
  • 方向切换: 使用 Ctrl + w 配合方向键 h / j / k / l 可以精确跳转到左/下/上/右侧的窗口。

2.3.3命令行快速定位

  • 启动即跳转: 在终端执行 vim filename +nn 为行号)。
    • 应用场景: 配合编译器报错信息,直接进入文件并精准定位到出错行,极大提高查找编译错误的效率。
  • 快速重复命令: 在 Linux 命令行输入 !首字符(如 !v)。
    • 直接执行最近一次以该字符开头的命令。其作用类似于快捷键 Ctrl + r 在历史记录中搜索并执行。

三、底行模式常用指令

在使用底行模式之前,请记住先按 ESC 键确定您已经处于命令模式 ,再按 : 冒号键即可进入底行模式。底行模式主要用于文件的全局管理与环境设置。

3.1环境设置

  • :set nu:列出行号。输入后,会在文件中的每一行前面列出行号。
  • :set nonu:取消列出行号。

3.2文件跳转

  • :#:跳转到文件中的某一行。# 代表一个数字,在冒号后输入数字再按回车键即可。例如输入 15 再回车,就会跳到文章的第 15 行。

3.3查找字符

  • /关键字:向后搜索。输入 / 键及关键字后,按 n 会继续往后寻找下一个匹配项。
  • ?关键字:向前搜索。输入 ? 键及关键字后,按 n 会继续往前寻找下一个匹配项。
  • 问题: /? 查找有什么区别?操作实验一下。

3.4替换与执行

  • :%s/src/dst/g:全局替换字符串。将文件中所有的 src 替换为 dst
  • :!command:在不退出 Vim 的情况下执行外部系统命令(如 :!ls)。
  • :vs new_src:分屏打开新文件。

3.5保存与离开

  • :w:保存当前文件。
  • :q:退出 Vim。如果文件已被修改且未保存,可能无法直接离开。
  • :q!:强制退出,不保存任何修改。
  • :wq:保存并退出。这是最常用的离开方式。

四、Vim 的环境配置

Vim 是一款位于 /usr/bin/vim 目录下的应用程序。在程序启动时,它会自动在特定目录中寻找配置文件,并根据其中的指令来调整编辑器的各项配置。

4.1配置文件原理

Vim 的配置文件主要分为两种类型,建议每个用户配置属于自己的 .vimrc 文件,这样不会对其他用户造成影响:

  • 用户配置 :位于用户家目录(home)下,文件名为 .vimrc。修改此文件仅对当前用户生效。
  • 全局配置 :通常位于 /etc/vimrc。修改该文件会导致所有用户的 Vim 配置都被更改。
  • 加载逻辑 :Vim 启动时会先在 home 目录中找 .vimrc。如果找到了,则按文件内容修改配置项;如果没有找到,则使用默认配置。

4.2基本手动配置

.vimrc 文件中,每一行代表一项配置。注意:.vimrc 的注释需要以双引号 (") 开头

配置指令 功能说明
syntax on 设置语法高亮
set nu 设置行号显示
set tabstop=4 设置 tab 缩进长度为 4 个空格
set autoindent 设置自动缩进,适用所有类型文件
set cindent 针对 C 语言的自动缩进,比 autoindent 更精准
`set list lcs=tab: \ \ `
set cursorline 突出显示当前行

4.3自动化配置

对于 C/C++ 开发者,可以使用成熟的开源项目进行一键配置,例如 VimForCpp

  • 安装命令

    bash 复制代码
    curl -sLf [https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh](https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh) -o ./install.sh && bash ./install.sh
  • 强调绝对不要在 root 用户下直接执行此安装脚本。

  • 安装效果 :安装后,家目录下的 .vimrc 会指向该项目的初始化文件,并自动集成代码补全等高级功能。


好的本期内容就到这里,如果对你有帮助,还不要忘记点赞三联支持。我是此方,我们下期再见。bye!

相关推荐
2023自学中1 小时前
Linux 多线程 + 信号,统一屏蔽哪些信号?什么是异步信号,同步信号?
linux·嵌入式
win水1 小时前
七、Linux 进程
linux·进程
淼淼爱喝水1 小时前
Ansible 中 handler 与 notify 的作用与使用详解
linux·网络·apache·playbook
sbjdhjd1 小时前
Docker 安全优化实战手册(企业级硬核版)
linux·运维·docker·云原生·容器·eureka·kubernetes
小周技术驿站1 小时前
Linux 基础命令详解
linux·前端·chrome·ubuntu·centos
kdxiaojie1 小时前
U-Boot分析【学习笔记】(7)
linux·笔记·学习
www.021 小时前
通过 SSH 隧道将 GPT 调教为服务器专属 Agent(个人记录)
linux·服务器·vscode·gpt·大模型·ssh·api转发
张小姐的猫1 小时前
【Linux】多线程(中)—— 线程控制接口 | 线程库 | 线程局部存储
linux·运维·服务器
脆皮炸鸡7551 小时前
大山之二:文件系统(Ext系列)
linux·开发语言·经验分享·学习方法