当前位置: 首页 > news >正文

Linux之高效文本编辑利器 —— vim

目录

一、vim的基本概念

二、Vim 的三种基本模式

1. 命令模式(Command Mode)

2. 插入模式(Insert Mode)

3. 底行模式(Last Line Mode)

模式切换方法

 IDE例子:

三、vim的基本操作

进入vim

模式切换

保存与退出

四、使用vim的大坑注意事项

原因分析

键位编码差异

vim 的默认设计

终端/系统的中间处理

解决方案

方法 1:临时切换(推荐)

方法 2:修改 vim 配置(比较麻烦)

方法 3:切换输入习惯

底层原理

确保指令输入的一致性

五、vim命令模式命令集汇总

【移动光标】

【插入模式】

【模式切换】

【删除】

【复制粘贴】

【剪切】

【撤销】

【大小写切换】

【替换】

【更改】

【翻页】

【跳至指定行】

六、vim末行模式命令集汇总

行号设置

跳转与查找

文件操作

分屏操作

系统命令

问题提示

七、简单 Vim 配置 [了解]

配置文件位置

系统级配置

用户级配置

常用配置选项

插件安装指南

第一步:准备工作

 第二步:安装TagList插件

第三步:安装WinManager插件

第四步:验证安装

重量级选手 —— 一键切换到大佬的配置


一、vim的基本概念

        vim(vi IMproved)是一款功能强大的多模式文本编辑器,专为高效代码编辑而设计。作为开发者的得力助手,vim通过其独特的模式设计大幅提升了文本编辑效率。

        简单来说,vi和vim都是多模式编辑器,但vim是vi的升级版。它不仅完全兼容vi的所有命令,还新增了许多实用功能,比如语法高亮和可视化操作。此外,vim支持在多种环境中运行,包括终端、X Window、Mac OS和Windows系统。为便于学习,我们统一以vim为例进行讲解。


二、Vim 的三种基本模式

我们重点讲解 Vim 的三种基础模式(Vim 实际有多种模式,目前掌握这三种即可):

1. 命令模式(Command Mode)

  • 又称普通模式(Normal Mode)
  • 功能:
    • 控制光标移动
    • 执行删除字符、单词或整行操作
    • 进行文本复制和移动
    • 可切换到插入模式或底行模式

2. 插入模式(Insert Mode)

  • 功能:
    • 唯一支持文本输入的模式
    • 按 ESC 键返回命令模式
    • 后续最常用的编辑模式

3. 底行模式(Last Line Mode)

  • 功能:
    • 文件保存与退出
    • 文本替换操作
    • 字符串搜索
    • 显示行号等

模式切换方法

  • 命令模式下按 Shift+:进入底行模式
  • 查看所有模式:在 Vim 中输入 :help vim-modes 命令(共 12 种模式,包括 6 种基础模式和 6 种附加模式)

古老的计算机连接的键盘上使用的就是vim文本编辑器,如图中保留着的这四个功能键:

 IDE例子:


三、vim的基本操作

(这里演示了,后面就不演示了,太繁琐了,操作太多了,明白就可以了)

进入vim

在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

$ vim test.c

模式切换

  • 进入vim后默认处于[命令模式],此时需要切换到[插入模式]才能输入文字

  • [命令模式]切换至[插入模式]

    • 输入「a」:在当前光标的后一位置进入插入模式。

    • 输入「i」:在当前光标处进入插入模式。

    • 输入「o」:在当前光标处新起一行进入插入模式。

  • [插入模式]切换至[命令模式]:按ESC

    • 在[插入模式]下,只能持续输入文字。

    • 如需修改错误,有两种方式(均可实现文字修正):

    • 按「ESC」键切换至[命令模式],再移动光标进行删除
    • 直接删除错误内容
  • [命令模式]切换至[末行模式]

    • Shift + ;(即输入:

保存与退出

在[正常模式]下,按:进入末行模式后:

  • w 保存当前文件

  • wq保存该文件并退出vim

  • q!不保存该文件并强制退出vim


四、使用vim的大坑注意事项

        我在使用vim遇到的情况是 vim 中一个非常经典的数字键盘输入问题,根本原因在于:(前提你的外设键盘是全键键盘)数字小键盘(Numpad)(右边)的输入信号和主键盘区的数字键(左边)在系统中被识别为不同的键位以下是详细解释和解决方案:

原因分析

  1. 键位编码差异

    • 主键盘区数字键(如字母区上方的 1 2 3)在系统中被识别为普通数字键

    • 小键盘数字键(Numpad)在系统中被识别为 特殊功能键(如 KP_1 KP_2 KP_3

  2. vim 的默认设计

    • vim 的普通模式命令(如 3l仅响应主键盘区的数字输入

    • 小键盘的数字输入会被 vim 识别为无效命令或插入操作(部分系统会直接输入数字字符)

  3. 终端/系统的中间处理

        某些终端模拟器(如 iTerm2、GNOME Terminal)或系统驱动会将小键盘数字转为特殊信号,导致 Vim 无法正确解析 

解决方案

方法 1:临时切换(推荐)

  • 关闭 NumLock
    按下键盘的 NumLock 键(指示灯熄灭),此时小键盘会变成方向键/功能键,避免误触发插入模式

方法 2:修改 vim 配置(比较麻烦)

        在系统级配置下(当然也可以是用户级配置,后面第七点有讲),vimrc在根目录下的etc目录中,在 vimrc 中添加以下配置,强制兼容小键盘输入:

" 允许小键盘数字作为命令前缀
set notimeout
set ttimeout
set timeoutlen=100
map <Esc>OQ 1
map <Esc>OR 2
map <Esc>OS 3
map <Esc>Ot 4
map <Esc>Ou 5
map <Esc>Ov 6
map <Esc>Ow 7
map <Esc>Ox 8
map <Esc>Oy 9
map <Esc>Op 0

方法 3:切换输入习惯

  • 使用主键盘区数字键输入命令

  • 需要输入大量数字时再开启小键盘

底层原理

        小键盘的数字键在终端中实际发送的是 转义序列(如 ESC O q 代表 KP_1),而 Vim 默认不将这些序列识别为数字命令。这与终端类型(TERM 环境变量)、键盘驱动、GUI 环境都有关联。

        如果问题持续,建议在终端设置中检查「将小键盘数字作为普通键发送」选项(常见于 XShell/iTerm2 的高级设置)。

确保指令输入的一致性

        在输入命令时,必须严格遵守规范的输入方式。例如:若要执行「G」命令(跳转到文章末尾),就必须准确输入大写字母G,而不能使用小写字母g。


五、vim命令模式命令集汇总

【移动光标】

  • 按「k」:光标上移。
  • 按「j」:光标下移。
  • 按「h」:光标左移。
  • 按「l」:光标右移。
  • 按「$」:移动到光标所在行的行尾。
  • 按「^」:移动到光标所在行的行首。
  • 按「gg」:移动到文本开始。
  • 按「Shift+g」:移动到文本末尾。
  • 按「n+Shift+g」:移动到第n行行首。
  • 按「n+Enter」:当前光标向下移动n行。
  • 按「w」:光标从左到右,从上到下的跳到下一个字的开头。
  • 按「e」:光标从左到右,从上到下的跳到下一个字的结尾。
  • 按「b」:光标从右到左,从下到上的跳到上一个字的开头
  • 按「G」:移动到文章的最后
  • 按「#l」:光标移到该行的第#个位置,如:5l,56l
  • 按「ctrl」+「b」:屏幕往"后"移动一页
  • 按「ctrl」+「f」:屏幕往"前"移动一页
  • 按「ctrl」+「u」:屏幕往"后"移动半页
  • 按「ctrl」+「d」:屏幕往"前"移动半页

【插入模式】

  • 按「i」:在当前光标处进入插入模式(从光标当前位置开始输入文件)
  • 按「a」:在当前光标的后一位置进入插入模式(从光标下一位置开始输入文字)
  • 按「o」:在当前光标处新起一行进入插入模式(插入新行并从行首输入文字)

【模式切换】

  • 「ESC」键:从插入模式切换为命令模式
  • 输入「Shift+;」即可进入底行模式,实际上就是输入「:」

【删除】

  • 按「x」:删除光标所在位置的字符(每按一次删除一个字符)
  • 按「nx」:删除光标所在位置开始往后的n个字符(如「6x」删除后面6个字符)
  • 按「X」:删除光标所在位置的前一个字符(大写的X)
  • 按「nX」:删除光标所在位置的前n个字符(如「20X」删除前面20个字符)
  • 按「dd」:删除光标所在行
  • 按「ndd」:删除光标所在行开始往下的n行(从光标行开始删除#行)

【复制粘贴】

  • 按「yy」:复制光标所在行到缓冲区
  • 按「nyy」:复制光标所在行开始往下的n行到缓冲区(如「6yy」拷贝6行文字)
  • 按「yw」:将光标所在位置开始到字尾的字符复制到缓冲区
  • 按「nyw」:将光标所在位置开始往后的n个字复制到缓冲区(复制#个字)
  • 按「p」:将已复制的内容在光标的下一行粘贴上(需与"y"命令配合)
  • 按「np」:将已复制的内容在光标的下一行粘贴n次

【剪切】

  • 按「dd」:剪切光标所在行
  • 按「ndd」:剪切光标所在行开始往下的n行
  • 按「p」:将已剪切的内容在光标的下一行粘贴上
  • 按「np」:将已剪切的内容在光标的下一行粘贴n次

【撤销】

  • 按「u」:撤销(可多次按撤销多步操作)
  • 按「Ctrl+r」:恢复刚刚的撤销(撤销的恢复)

【大小写切换】

  • 按「~」:完成光标所在位置字符的大小写切换
  • 按「n~」:完成光标所在位置开始往后的n个字符的大小写切换

【替换】

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

【更改】

  • 按「cw」:将光标所在位置开始到字尾的字符删除,并进入插入模式(更改到字尾处)
  • 按「cnw」:将光标所在位置开始往后的n个字删除,并进入插入模式(如「c3w」更改3个字)

【翻页】

  • 按「Ctrl+b」:上翻一页(屏幕往"后"移动一页)
  • 按「Ctrl+f」:下翻一页(屏幕往"前"移动一页)
  • 按「Ctrl+u」:上翻半页(屏幕往"后"移动半页)
  • 按「Ctrl+d」:下翻半页(屏幕往"前"移动半页)

【跳至指定行】

  • 按「Ctrl+g」:列出光标所在行的行号
  • 按「nG」:移动到第n行行首(如「15G」跳转到第15行)

六、vim末行模式命令集汇总

        在使用底行模式之前,请先按「ESC」键确保处于普通模式,再按「:」进入底行模式,输入完指令后按Enter回车键执行该指令。

行号设置

  • 「set nu」:显示行号

  • 「set nonu」:取消行号

跳转与查找

  • 「#」:跳转到指定行(如「:15」跳转到第15行)

  • 「/关键字」:向下查找关键字(按「n」查找下一个)

  • 「?关键字」:向上查找关键字(按「n」查找上一个)

文件操作

  • 「w」:保存文件

  • 「q」:退出vim(加「!」强制退出)

  • 「wq」:保存并退出

分屏操作

  • 「vs 文件名」:垂直分屏打开新文件

  • 「Ctrl+w+w」:在分屏间切换光标

系统命令

  • 「!指令」:执行外部Shell命令(如「!ls」查看目录)

问题提示

  • / 和 ? 查找的区别:/是向下查找,?是向上查找


七、简单 Vim 配置 [了解]

配置文件位置

  • 系统级配置

    • 路径:/etc/vimrc

    • 说明:这是公共的 vim 配置文件,对所有用户有效

  • 用户级配置

    • 路径:~/.vimrc(如果不存在,则需要手动创建它

      # 1. 确保在主目录
      cd ~# 2. 创建.vimrc文件
      touch .vimrc# 3. 编辑配置文件(按i进入编辑模式,添加配置后ESC+:wq保存退出)
      vim .vimrc

    • 说明:

      1. 从管理员切换到用户:su [用户名]

      2. 进入主目录:cd ~

      3. 编辑配置文件:vim .vimrc

常用配置选项

  • 启用语法高亮::syntax on
  • 显示行号::set nu
  • 设置缩进为4个空格::set shiftwidth=4

插件安装指南

        要打造美观实用的 Vim 环境,默认配置可能功能有限。你可以通过安装插件来增强体验。首先请确认你正在为正确的用户进行配置,然后按照以下步骤操作:

第一步:准备工作

  1. 确保已创建用户级vim配置

    cd ~
    touch .vimrc
    mkdir -p ~/.vim/{doc,plugin}  # 创建插件所需目录

 第二步:安装TagList插件

  1. 下载插件

    #直接下载(需有wget)
    wget http://www.vim.org/scripts/download_script.php?src_id=19574 -O taglist.zip

  2. 解压安装

    unzip taglist.zip -d taglist
    cd taglist# 复制文件到vim配置目录
    cp doc/taglist.txt ~/.vim/doc/
    cp plugin/taglist.vim ~/.vim/plugin/

        3.配置(编辑~/.vimrc)

vim ~/.vimrc

i进入插入模式,添加:

" TagList配置
let Tlist_Show_One_File=1     " 只显示当前文件的标签
let Tlist_Exit_OnlyWindow=1   " 如果只有taglist窗口则退出vim
let Tlist_Use_Right_Window=1  " 在右侧显示窗口

ESC后输入:wq保存退出

第三步:安装WinManager插件

  1. 下载插件

    wget http://www.vim.org/scripts/download_script.php?src_id=754 -O winmanager.zip

  2. 解压安装

    unzip winmanager.zip -d winmanager
    cd winmanagercp doc/winmanager.txt ~/.vim/doc/
    cp plugin/winmanager.vim ~/.vim/plugin/
    cp plugin/wintagexplorer.vim ~/.vim/plugin/

  3. 配置(编辑~/.vimrc)

    vim ~/.vimrc

    添加:

    " WinManager配置
    let g:winManagerWindowLayout='FileExplorer|TagList'  " 窗口布局
    nmap wm :WMToggle<cr>  " 设置wm快捷键切换窗口管理器

        保存退出(:wq

第四步:验证安装

  1. 重启Vim

  2. 测试功能

  • 打开一个C文件::e test.c

  • 普通模式下输入wm,应该可以看到:

    • 左侧的文件浏览器

    • 右侧的函数标签列表

  • 再次输入wm可关闭

更具体请移步到:手把手教你把Vim改装成一个IDE编程环境(图文)_vim 打造成 ide-CSDN博客,其他手册,请执行 vimtutor 命令。

重量级选手 —— 一键切换到大佬的配置

        上述的配置 vim 方法可能会比较复杂,特别是需要安装插件时,不建议手动逐个配置。更简单的方式是直接运行以下命令(注意:要在需要配置 vim 的用户下执行此命令,不建议直接在 root 用户下操作):

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

执行后会提示输入 root 密码,按指引操作即可:

稍微有点慢,我们等一下安装:

安装配置完成后,手动执行source ~/.bashrc命令即可生效:

        这时我们打开上次的test.c,可以看到此时vim文本编辑器具备了语法高亮、自动补全、行号显示和自动缩进等功能:

相关文章:

  • 【动态规划】子数组系列(二)
  • CSP 2024 提高级第一轮(CSP-S 2024)阅读程序第一题解析
  • Typora中文直装版
  • 2025.5.28总结
  • 2. 数据结构基本概念 (2)
  • Uniapp+UView+Uni-star打包小程序极简方案
  • 设计模式-装饰模式
  • Day05
  • 深度解析 Dockerfile 配置:构建高效轻量的FastAPI 应用镜像
  • Docker Desktop无法在windows低版本进行安装
  • JS逆向 QQ音乐sign签名|webpack实战 (上)
  • RocksDB
  • 对比RFX2401C:AT2401C功率放大器的性价比与PIN兼容方案
  • 2025年5月AI科技领域周报(5.19-5.25):大模型多模态突破 具身智能开启机器人新纪元
  • qt ubuntu 20.04 交叉编译
  • jq checked选中触发事件
  • 代码输出题:异步事件循环
  • 梯形面积计算shell脚本
  • Java设计模式之设计原则
  • 深入解析 Spring @Transactional 的事务开启机制
  • 门户网站的建设成果/百度号码认证平台官网
  • 网站后台扫描插件/深圳疫情防控最新消息
  • 苏州建厂/网站优化软件哪个好
  • 提供网站建设管理/sem 推广软件
  • 西安牛二网络科技有限公司/seo网站推广报价
  • 新乡高端网站建设/网上怎么做广告