Vim 是一款功能强大但学习曲线陡峭的文本编辑器,核心在于其模式化操作。掌握常用指令能极大提升效率。以下是指令分类整理:


一、核心模式切换 (必须掌握!)

  • i:在光标进入 插入模式 (Insert Mode)

  • a:在光标进入 插入模式 (Insert Mode)

  • o:在下方新建一行并进入插入模式

  • O:在上方新建一行并进入插入模式

  • ESC 或 Ctrl+[退出当前模式,回到 普通模式 (Normal Mode) - 最常用!

  • v:进入 可视模式 (Visual Mode) (字符选择)

  • V:进入 可视行模式 (Visual Line Mode) (行选择)

  • Ctrl+v:进入 可视块模式 (Visual Block Mode) (列块选择)

  • ::进入 命令行模式 (Command-Line Mode)

⚠️ 牢记:大部分时间你在 普通模式 编辑完记得按 ESC 返回普通模式。


二、移动光标 (普通模式下)

  • 基本移动:

    • h ←, j ↓, k ↑, l → (或方向键)

    • w / W:跳到下一个单词开头 (W忽略标点)

    • b / B:跳到上一个单词开头 (B忽略标点)

    • e / E:跳到当前/下一个单词结尾 (E忽略标点)

    • 0 (零):跳到行首

    • ^:跳到行首第一个非空白字符

    • $:跳到行尾

    • gg:跳到文件第一行

    • G:跳到文件最后一行

    • :[行号] + 回车:跳到指定行 (如 :10 跳到第10行)

    • Ctrl+f:向下翻页

    • Ctrl+b:向上翻页

    • Ctrl+d:向下翻半页

    • Ctrl+u:向上翻半页

    • H:跳到当前屏幕顶部

    • M:跳到当前屏幕中间

    • L:跳到当前屏幕底部

  • 查找移动:

    • / + 关键词 + 回车向下搜索关键词 (如 /hello)

    • ? + 关键词 + 回车向上搜索关键词

    • n:查找下一个匹配项

    • N:查找上一个匹配项

    • f + 字符:将光标移动到当前行下一个指定的字符上 (如 fa 找下一个 a)

    • F + 字符:将光标移动到当前行上一个指定的字符

    • t + 字符:将光标移动到当前行下一个指定的字符

    • T + 字符:将光标移动到当前行上一个指定的字符

    • %:在配对的括号 ()[]{} 之间跳转


三、编辑文本 (普通模式下)

  • 删除:

    • x:删除光标下的字符

    • X:删除光标前的字符

    • dw:从光标位置删除到下一个单词开头

    • d$ 或 D:从光标位置删除到行尾

    • d0:从光标位置删除到行首

    • dd删除整行

    • [数字]dd:删除从光标开始的指定行数 (如 3dd 删除3行)

    • daw删除光标所在的单词 (包括周围空格)

    • diw删除光标所在的单词 (不包括周围空格)

  • 复制 (yank):

    • yy复制整行

    • [数字]yy:复制从光标开始的指定行数 (如 3yy 复制3行)

    • yw:复制从光标到下一个单词开头的文本

    • y$:复制从光标到行尾的文本

    • y0:复制从光标到行首的文本

  • 粘贴 (put):

    • p:在光标粘贴

    • P:在光标粘贴

  • 撤销/重做:

    • u撤销上一次操作

    • Ctrl+r重做 (撤销掉撤销)

  • 修改/替换:

    • r + 字符替换光标下的字符 (如 ra 替换成 a)

    • R:进入替换模式 (连续替换多个字符,按 ESC 退出)

    • cw删除从光标到单词结尾并进入插入模式 (Change Word)

    • c$ / C删除从光标到行尾并进入插入模式

    • cc / S删除整行并进入插入模式

    • s删除光标下的字符并进入插入模式

    • ~切换光标下字符的大小写

  • 缩进:

    • >>:当前行增加缩进

    • <<:当前行减少缩进

    • =自动缩进当前行 (或选中的行/块)


四、可视模式操作 (先按 vVCtrl+v 选中)

  • 选中文本后,可以使用普通模式下的编辑命令:

    • d / x:删除选中文本

    • y:复制选中文本

    • c:删除选中文本并进入插入模式

    • >:增加缩进

    • <:减少缩进

    • =:自动缩进

    • u:将选中文本转为小写

    • U:将选中文本转为大写


五、命令行模式 (按 : 进入)

  • 文件操作:

    • :w保存文件

    • :w [文件名]另存为到指定文件名

    • :q退出 Vim (如果文件未修改)

    • :q!强制退出 Vim (不保存修改)

    • :wq 或 :x 或 ZZ保存并退出

    • :e [文件名]打开另一个文件进行编辑

  • 搜索与替换:

    • :%s/old/new/g全局替换所有 old 为 new

    • :%s/old/new/gc:全局替换,每次替换前询问确认

    • :s/old/new/g:替换当前行的所有 old 为 new

    • :起始行,结束行s/old/new/g:替换指定行范围的所有 old 为 new (如 :10,20s/foo/bar/g)

  • 其他常用:

    • :set nu:显示行号

    • :set nonu:隐藏行号

    • :set hlsearch:高亮显示搜索结果

    • :set nohlsearch 或 :nohl关闭搜索结果高亮 (临时)

    • :help [命令]:查看帮助 (如 :help w)

    • :! [shell命令]执行外部 shell 命令 (如 :! ls)

    • :r [文件名]读取文件内容并插入到光标后

    • :r ! [shell命令]:读取 shell 命令的输出并插入到光标后 (如 :r ! date)


六、组合与重复

  • 操作符 + 动作 = 强大功能

    • d (删除) + w (单词) = dw (删到单词尾)

    • c (修改) + $ (行尾) = c$ (修改到行尾)

    • y (复制) + } (下一段) = y} (复制下一段)

  • 数字前缀:重复执行

    • 5j:向下移动5行

    • 3dw:删除3个单词

    • 10x:删除10个字符

    • 4p:粘贴4次


七、实用技巧

  1. . (点命令): 重复上一次的编辑操作 (在普通模式下)。

  2. 宏录制:

    • q + 寄存器字母 (如 qa):开始录制宏到寄存器 a

    • 执行一系列操作

    • q:停止录制

    • @ + 寄存器字母 (如 @a):执行存储在寄存器 a 中的宏

    • @@:重复执行上一次执行的宏

  3. 分屏:

    • :sp [文件名]:水平分割窗口 (打开/切换文件)

    • :vsp [文件名]:垂直分割窗口 (打开/切换文件)

    • Ctrl+w + 方向键 / h/j/k/l:在窗口间切换焦点

    • Ctrl+w + w:循环切换窗口

    • Ctrl+w + c:关闭当前窗口

    • Ctrl+w + q:关闭当前窗口 (如果只剩一个窗口则退出Vim)

    • Ctrl+w + =:使所有窗口等宽等高

    • Ctrl+w + _:最大化当前窗口高度

    • Ctrl+w + |:最大化当前窗口宽度

  4. 标签页:

    • :tabnew [文件名]:在新标签页打开文件

    • gt / gT:切换到下一个/上一个标签页

    • :tabn / :tabp:切换到下一个/上一个标签页 (命令模式)

    • :tabc:关闭当前标签页


八、配置 (~/.vimrc)

  • 创建或编辑 ~/.vimrc 文件来自定义 Vim 行为。常用设置示例:

  • set number          " 显示行号
    set relativenumber  " 显示相对行号 (可选)
    syntax on           " 语法高亮
    set tabstop=4       " Tab键宽度为4空格
    set shiftwidth=4    " 自动缩进宽度为4空格
    set expandtab       " 将Tab转换为空格
    set autoindent      " 自动缩进
    set smartindent     " 智能缩进
    set hlsearch        " 高亮搜索结果
    set ignorecase      " 搜索忽略大小写
    set smartcase       " 如果搜索包含大写则区分大小写
    set mouse=a         " 启用鼠标支持 (可选)

学习建议

  1. 先掌握核心: 模式切换 (iESC)、保存退出 (:wq:q!)、基本移动 (hjkl)、删除 (xdd)、复制粘贴 (yyp)、撤销 (u)。这是生存技能。

  2. 练习移动: 高效移动是Vim的灵魂。熟练掌握 wbe$0ggG/

  3. 理解 操作符 + 动作 范式: 这是Vim编辑能力的核心 (dcy + w$t 等)。

  4. 逐步学习: 不要试图一次记住所有命令。在日常编辑中刻意练习新学的1-2个命令。

  5. 善用帮助: :help 是宝藏。遇到不熟悉的命令随时查 (:help x:help :w 等)。

  6. 使用 Vim Tutor: 在终端中输入 vimtutor,这是官方交互式教程,强烈推荐初学者完成。

Vim 的精髓在于组合和效率。 熟练后,你的手指几乎不用离开主键盘区就能完成复杂编辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88496.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88496.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/88496.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2中使用xgplayer播放流视频

1、官网 2、安装后无法播放时&#xff0c;经测试&#xff0c;需要降低版本 "xgplayer-hls": "2.2.2","xgplayer": "2.31.6"改为以上版本可以正常播放 3、完整使用 &#xff08;1&#xff09;引入 import xgplayer import hlsjsPlayer…

Jmeter进阶篇(35)完美解决Jmeter转换HTML报告报错“Begin size 0 is not equal to fixed size 5”

今天博主在使用Jmeter运行完压测,使用生成的csv文件,运行以下命令: C:\apache-jmeter-5.2.1\bin>jmeter -g C:\res.csv -o C:\report生成HTML报告时,发现报错“Begin size 0 is not equal to fixed size 5”。 问题原因 原因是我:本地用的是JDK17,但Jmeter5.2.1仅支…

linux中tcpdump抓包中有组播数据,应用程序收不到数据问题

问题描述服务器运行正常&#xff0c;维保需要&#xff0c;重启服务器后应用程序无法收到组播的媒体数据。百思不得其解。原因分析最终的定位原因是 linux系统的自我保护机制导致的。rp_filter&#xff08;反向路径过滤&#xff09;是Linux内核的一个安全特性&#xff0c;用于防…

人工智能-基础篇-29-什么是低代码平台?

低代码平台&#xff08;Low-Code Development Platform, LCDP&#xff09;是一种通过可视化界面和少量代码&#xff08;或无需代码&#xff09;快速构建应用程序的开发工具。它的核心目标是通过简化开发流程&#xff0c;降低技术门槛&#xff0c;使企业能够更高效地响应业务需求…

PyTorch随机擦除:提升模型抗遮挡能力

PyTorch中内置的随机擦除&#xff08;Random Erasing&#xff09;数据增强通过torchvision.transforms.RandomErasing实现&#xff0c;以下是原理和用法的详细说明&#xff1a;核心原理正则化作用&#xff1a; 随机擦除在训练图像上随机遮盖一个矩形区域&#xff0c;模拟遮挡场…

微信小程序交互精髓:点击操作与状态管理实战

目录 一、点击事件绑定&#xff1a;bindtap 与 catchtap 的正确使用 基础语法对比 事件对象详解 二、点击切换选中状态&#xff1a;数据驱动视图的实现 1. 单元素状态切换 2. 多元素单选状态 3. 多元素多选状态 三、样式动态切换&#xff1a;数据绑定与 CSS 的完美结合 …

Language Models are Few-Shot Learners: 开箱即用的GPT-3(二)

接上一篇 Approach 前面的摘要和Introduction做了一些概要性的介绍,论文在第二章,也就是approach中,介绍了模型的设计,zero,one,few-shot的设计等等。 这一章一开头就说,GPT-3的结构和GPT-2的结构一样,只是在相应的把模型尺寸,数据规模,训练时间等增加了。Our bas…

【养老机器人】核心技术

1. 毫米波雷达如何检测心跳和呼吸&#xff1f;毫米波雷达&#xff08;通常工作在60GHz或77GHz频段&#xff09;可以探测到人体胸腔的微米级位移&#xff0c;而心跳和呼吸会引起胸腔的周期性运动&#xff1a;呼吸&#xff1a;幅度较大&#xff08;约5-10毫米&#xff09;&#x…

二 Javascript 入门

我们 从已经知道了 Javascript的历史以及什么是Javascript&#xff0c;那实际编写的时候在哪里编写&#xff1f; script 标签 HTML 为我们提供了无数的标签来做无数的事情。例如&#xff0c; 用于为段落添加边距&#xff0c; 用于使文本加粗&#xff0c; 用于在网页上嵌入音…

《信息技术服务监理 第5部分:软件工程监理规范》(GB/T 19668.5-2018)标准解读

《信息技术服务监理 第 5 部分&#xff1a;软件工程监理规范》&#xff08;GB/T 19668.5-2018&#xff09;是规范软件工程监理服务的国家标准&#xff0c;旨在为软件工程监理的规划设计、招标、设计、实施、验收等阶段及相关支持过程提供明确的监理要求、服务内容和实施要点。 …

RedisJSON 路径语法深度解析与实战

一、两种路径语法概览语法类型触发标志简介JSONPath以 $ 开头全功能路径&#xff0c;支持递归 (..)、通配符 (*)、切片 ([start:end:step])、过滤 (?())、脚本表达式等Legacy以 . 或键名开头早期版本&#xff08;v1&#xff09;遗留语法&#xff0c;只支持简单的点式和中括号&…

从Rust模块化探索到DLB 2.0实践|得物技术

一、前言在云原生架构高速迭代的背景下&#xff0c;基础设施的性能瓶颈与安全隐患成为技术演进的关键挑战。本文系统记录了团队基于Rust语言改造Nginx组件的完整技术路径&#xff1a;从接触Cloudflare的quiche库&#xff0c;引发对Rust安全特性的探索&#xff0c;到通过FFI实现…

【 MySQL】一点点相关的记录

打开 MySQL Workbench 并连接到你的数据库在 MySQL Connections 下&#xff0c;选择连接的数据库实例&#xff08; Local instance MySQL80&#xff09;登录时输入 用户名 和 密码。 root&#xff0c;密码是在 MySQL 安装时设置的密码创建新数据库登录后&#xff0c;在 MySQL W…

旅游企业如何通过数字化转型实现高效运营

在旅游行业竞争日益激烈、游客需求日趋多样的当下&#xff0c;数字化管理成为旅游企业提升竞争力的关键协同办公系统以其丰富功能与灵活特性&#xff0c;为旅游行业带来全新的数字化变革&#xff0c;助力企业高效运营。优化行程规划与调度旅游行程的规划与调度繁杂且关键。协同…

大数据Spark(六十二):Spark基于Yarn提交任务流程

文章目录 Spark基于Yarn提交任务流程 一、Yarn-Client模式 1、提交命令 2、任务执行流程 二、Yarn-Cluster模式 1、提交命令 2、任务执行流程 Spark基于Yarn提交任务流程 在Yarn模式下&#xff0c;Spark的任务提交同样根据Driver程序运行的位置不同&#xff0c;分为cli…

Docker 高级管理-容器通信技术与数据持久化

(1)创建一个叫 my-net 的 bridge 类型的网络(2)查看都有哪些网络(3)运行一个容器井连接到新建的 my-net 网络(4)运行一个容器井加入到 my-net 网络2:Host 模式由于使用了 Host 模式&#xff0c;容器会直接使用宿主机的网络端口&#xff0c;因此可以直接在宿主机上通过 localhos…

在 Ubuntu 24.04 中安装 Python 2.7、pip 及 mysqlclient==1.4.6 的完整指南

在 Ubuntu 24.04 中安装 Python 2.7、pip 及 mysqlclient1.4.6 的完整指南 前言 随着 Ubuntu 24.04 的发布&#xff0c;许多旧的软件包已被移除或更新&#xff0c;但老项目需要 Python 2 。本文将详细介绍自己如何在 Ubuntu 24.04 中成功安装 Python 2.7、pip 以及 mysqlclient…

doker以及网站案例

一.docker搭建1.安装dockerapt-get install docker.io docker-compose2.编写配置文件&#xff08;注意路径正确&#xff09;vim /etc/systemd/system/docker.service.d/http-proxy.conf[Service] Environment"HTTP_PROXYhttp://科学上网访问的ip:端口" Environment&q…

【HarmonyOS Next之旅】DevEco Studio使用指南(四十一) -> 获取自定义编译参数

目录 1 -> HAP/HSP运行时获取编译构建参数 1.1 -> 生成BuildProfile类文件 1.2 -> 在代码中获取构建参数 1.3 -> 默认参数 1.4 -> 自定义参数 2 -> HAR运行时获取编译构建参数 2.1 -> 生成BuildProfile类文件 2.2 -> 在代码中获取构建参数 2.…

NGINX系统基于PHP部署应用

目录 部署 配置 部署 准备三台主机&#xff0c;一台服务端&#xff0c;两台客户端&#xff1b; 1.在两台客户端主机上分别安装 MySQL; [rootmaster /]#yum install -y mysql nginx; [rootmaster /]#yum install -y nginx PHP; [rootmaster /]#yum install -y php PHP-m…