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
相关推荐
沫璃染墨16 小时前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
工作10年+,存储芯片行业16 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
wuminyu16 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
她说彩礼65万16 小时前
C语言 堆区和栈区
java·linux·c语言
一号弯17 小时前
装完LINUX,请先新建日常用户
linux·运维·服务器
驭渊的小故事17 小时前
linux 基础命令 + git 仓库创建和配置命令
linux·git
ShineWinsu17 小时前
对于Redis:主从复制的解析
linux·数据库·c++·redis·缓存·面试·主从复制
Lsetea17 小时前
OpenSSL verify报unable to get issuer certificate:error 2与partial_chain排查
linux·https·ssl证书·openssl·证书链
许彰午17 小时前
03-Linux环境准备依赖包内核参数与用户组
linux·运维·服务器·数据库
阳光九叶草LXGZXJ18 小时前
达梦数据库-报错-16-MERGE INTO提示:无效的列名[XX]
linux·运维·数据库·sql·学习