Linux---vim 编辑器

在 Linux 系统中,编辑器是不可或缺的工具。而 Vim 作为一款功能强大的多模式编辑器,凭借其高效的操作方式、强大的定制能力和跨平台特性,成为了 Linux 用户的首选编辑器之一。

一、为什么选择 Vim?

Vim(Vi Improved)是 Vi 编辑器的增强版本,不仅完全兼容 Vi 的所有指令,还新增了语法高亮、可视化操作、插件扩展等实用功能。与 Emacs 并称类 Unix 系统的两大编辑神器。

Vim 的核心优势:

  • 极致效率:纯键盘操作,无需鼠标,编辑速度比普通编辑器快 30% 以上

  • 跨平台支持:不仅可在 Linux 终端运行,还能在 Windows、macOS 等系统中使用

  • 轻量化:安装包极小,启动速度毫秒级

  • 可扩展性:通过插件可扩展为 IDE 级别的功能

  • 服务器标配:几乎所有 Linux 服务器都默认安装 Vim,是远程开发的唯一选择

Vim 相比 Vi 的主要改进:

功能 Vi Vim
语法高亮 ❌ ✅ 根据文件类型自动对关键字、注释等进行颜色区分
可视化操作 ❌ ✅ 支持块选择、可视化编辑
插件扩展 ❌ ✅ 支持丰富的第三方插件
多级撤销 ❌ ✅ 支持多次撤销与恢复

二、安装 Vim

CentOS 系统

bash 复制代码
sudo yum install -y vim

安装完成后,可以通过 vim --version 查看版本信息。

三、Vim 的核心:三种模式

Vim 是模式化编辑器,不同模式下键盘的功能完全不同,这是 Vim 与"所见即所得"编辑器(如记事本、VS Code)的核心区别。

3.1 三大核心模式

模式 英文名称 进入方式 核心功能
普通模式 Normal mode 打开 Vim 默认进入,或按 Esc 返回 浏览文本、移动光标、复制、粘贴、删除等
插入模式 Insert mode 普通模式下按 i/a/o 等 文本输入
命令行模式 Command-line mode 普通模式下按 : 文件保存、退出、查找、替换等

3.2 模式切换关系

bash 复制代码
                    ┌─────────────────┐
                    │   普通模式       │
                    │  (默认启动)      │
                    └────────┬────────┘
                             │
              i/a/o ────────┘ └─────── Esc
              ↓                         ↑
         ┌─────────────────────────────────┐
         │         插入模式                 │
         │       (文本输入)                 │
         └─────────────────────────────────┘
                             
         普通模式 ── : ──→ 命令行模式

模式切换核心快捷键(必记):

  • 普通模式 → 插入模式:

    • i:在光标前插入文本(最常用)

    • I:在当前行首插入文本

    • a:在光标后插入文本

    • A:在当前行尾插入文本(高频)

    • o:在当前行下方另起一行(高频)

    • O:在当前行上方另起一行

  • 任何模式 → 普通模式 :按 Esc 键(推荐按两次确保返回)

  • 普通模式 → 命令行模式 :按 : 键(shift+;)

黄金规则 :所有模式都能通过 Esc 键返回普通模式;普通模式是 Vim 的"核心模式",所有高级操作都必须从普通模式开始;插入模式仅用于输入文本,输入完成后立即返回普通模式。

四、普通模式常用命令集

普通模式是 Vim 最常用的模式,90% 的文本操作都在此模式下完成。

4.1 光标移动(脱离鼠标的关键)

基础移动(推荐使用 hjkl 代替方向键):

命令 功能 记忆技巧
h 向左移动一个字符 左手最左按键
j 向下移动一行 指向下方
k 向上移动一行 指向上方
l 向右移动一个字符 右手最右按键

高级移动:

命令 功能
w 跳到下一个单词的开头
e 跳到当前单词的结尾
b 回到上一个单词的开头
^ 移动到行首(第一个非空白字符)
$ 移动到行尾
gg 移动到文件开头
G 移动到文件结尾
nG 移动到第 n 行(如 5G 到第 5 行)
:n 命令行模式跳转到第 n 行

翻页操作:

  • Ctrl + b:屏幕向"后"移动一页

  • Ctrl + f:屏幕向"前"移动一页

  • Ctrl + u:屏幕向"后"移动半页

  • Ctrl + d:屏幕向"前"移动半页

💡 提示 :方向键在 Vim 中可用但效率低下,坚持使用**hjkl** 一周会显著提升速度。

4.2 删除操作

命令 功能
x 删除光标所在位置的一个字符
X 删除光标所在位置"前面"的一个字符
#x 删除光标所在位置"后面(包含自己)"的 # 个字符(如 6x)
dd 删除光标所在行
#dd 从光标所在行开始删除 # 行
dw 删除到单词末尾
d$ 删除到行尾

4.3 复制与粘贴

命令 功能
yy 复制光标所在行
#yy 复制从光标所在行往下数 # 行(如 6yy)
yw 复制光标所在之处到字尾的字符
#yw 复制 # 个字到缓冲区
p 将缓冲区内容粘贴到光标所在位置

4.4 撤销与重做

命令 功能
u 撤销上一次操作
Ctrl + r 重做(撤销的恢复)

4.5 替换

命令 功能
r 替换光标所在处的字符
R 连续替换光标所到之处的字符,直到按 Esc

五、命令行模式常用命令集

在普通模式下按 : 进入命令行模式。

5.1 文件操作

命令 功能
:w 保存文件
:q 退出 Vim
:q! 强制退出(不保存)
:wq 保存并退出
:wq! 强制保存并退出

5.2 查找与替换

命令 功能
/关键字 向后查找关键字(按 n 继续查找下一个)
?关键字 向前查找关键字(按 n 继续查找)
:set nu 显示行号
:set nonu 取消行号

5.3 其他实用命令

命令 功能
:!命令 执行 shell 命令(如 :!ls)
:help 查看帮助文档

六、Vim 配置:打造专属编辑器

Vim 的强大之处在于其高度可定制性。通过配置文件可以个性化你的编辑环境。

6.1 配置文件位置

  • 系统级配置 :/etc/vimrc(对所有用户有效)

  • 用户级配置 :~/.vimrc(仅对当前用户有效)

推荐在用户主目录下创建 .vimrc 文件进行个性化配置。

6.2 常用配置选项

在 **~/.vimrc**中添加以下内容:

bash 复制代码
" 基本设置
syntax on                    " 开启语法高亮[reference:53]
set nu                       " 显示行号[reference:54]
set shiftwidth=4             " 设置缩进空格数为 4
set tabstop=4                " Tab 键宽度为 4
set autoindent               " 自动缩进
set expandtab                " 用空格代替 Tab

" 搜索设置
set hlsearch                 " 高亮搜索结果
set incsearch                " 实时显示搜索结果

" 编码设置
set encoding=utf-8           " 设置编码[reference:55]

6.3 插件管理

要配置更强大的 Vim,可以安装插件。推荐使用插件管理器如 vim-plug:

  1. 安装 vim-plug:

bash

复制代码
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  1. 在 ~/.vimrc 中配置插件:

vim

复制代码
call plug#begin('~/.vim/plugged')
" 在这里添加插件
Plug 'preservim/nerdtree'        " 文件浏览器
Plug 'vim-airline/vim-airline'   " 状态栏美化
call plug#end()
  1. 在 Vim 中执行 :PlugInstall 安装插件。

6.4 常用插件推荐

插件 功能
NERDTree 文件树浏览器
vim-airline 美化状态栏
ctrlp.vim 文件模糊搜索
vim-surround 快速添加/修改配对符号

vim一键部署

bash 复制代码
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
 
cd ~/.vimplus
 
./install.sh #不加sudo
相关推荐
琥珀.8 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu9 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈11 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
slongzhang_12 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮12 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT13 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
Escalating_xu13 小时前
【Linux 网络编程】应用层协议 HTTP(下):Header、连接管理与 C++ HTTP 服务器
linux·服务器·网络
GeW15 小时前
新质生产力路线图落地,Linux运维与数据库架构师的机会清单
linux
Brilliantwxx15 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
father_122716 小时前
Greenplum 集群故障恢复与主备同步机制实战
linux·网络·greenplum