linux | Vim 命令快捷操作

注:本文为过去的 “vim 使用笔记”


跳转命令

跳转命令

  • #:向前查找光标当前所在单词,并跳转到该单词的上一个出现位置。
  • *:向后查找光标当前所在单词,并跳转到该单词的下一个出现位置。

行内跳转

  • 0:跳转到当前行的行首。 [Home]
  • $:跳转到当前行的行尾。 [End]
  • ^:跳转到当前行的第一个非空字符处。
  • g_:跳转到行尾最后一个非空白字符。
  • |n:跳转到当前行的第 n 列(例如:|10 跳转到第 10 列)。

文件内跳转

  • gg:跳转到文件第一行的行首。
  • G:跳转到文件最后一行的行首。
  • G$:跳转到文件最后一行的行尾。 [Ctrl + End]
  • :line-number:n:跳转到指定行号的行(例如::100 跳转到第 100 行)。
  • nG:跳转到文件的第 n 行(例如:20G 跳转到文件的第 20 行)。
  • /{pattern}:跳转到第一个与 {pattern} 匹配的位置。

屏幕跳转

  • H:跳转到屏幕的最上方一行的第一个字符。
  • M:跳转到屏幕的中央那一行的第一个字符。
  • L:跳转到屏幕的最下方一行的第一个字符。
  • Ctrl + b:向上滚动一屏。
  • Ctrl + f:向下滚动一屏。

单词跳转

  • b:跳转到前 1 个单词的开头(例如:5b 向前跳转到第 5 个单词的开头)。
  • e:跳转到当前单词的末尾。
  • w:跳转到下 1 个单词的开头(例如:5w 向后跳转到第 5 个单词的开头)。
  • ge:向前跳转到当前单词的结尾(例如:3ge 向前跳转到第 3 个单词的结尾)。

字符跳转

  • f{char}:跳转到当前行下一个字符 {char} 的位置(例如:fa 跳转到下一个字母 a)。
  • F{char}:跳转到当前行上一个字符 {char} 的位置。
  • h:向左跳转一个字符(例如:10h 向后跳转 10 个字符)。
  • l:向右跳转一个字符(例如:10l 向前跳转 10 个字符)。

行间跳转

  • j:向下跳转一行(例如:5j 向下跳转 5 行)。
  • k:向上跳转一行(例如:5k 向上跳转 5 行)。
  • n<Enter>:光标向下跳转 n 行

删除命令

字符删除

  • x:删除当前光标所在位置的字符,并将光标自动向后跳转一个字符(例如:3x 删除光标后的三个字符,3X 删除光标前的三个字符)。
  • dl:同 x,删除光标所在位置的字符(例如:5dl 删除光标后的 5 个字符)。
  • dh:删除光标所在位置的前一个字符。

行删除

  • dd:删除当前行(例如:5dd 向下删除 5 行,共 6 行)。
  • D:删除从光标当前位置一直到该行的末尾(包括光标所在的字符)。
  • d$:删除至行尾。
  • d0:删除至行首。

单词删除

  • dw:删除光标所在位置到下 1 个单词开头之间的内容(不保留空格,例如:5dw 删除连续的 5 个单词)。
  • de:删除从光标位置到当前单词末尾的内容(不会删除空格)。
  • dex:删除从光标所在位置到当前单词末尾之间的所有字符,包括当前单词末尾的空格。
  • db:删除光标所在单词及其前面的空格。
  • daw:删除光标所在的单词及其后面的空格。
  • diw:删除光标所在的单词,并保留其前后的空格。
  • bdw:删除光标所在位置到前 1 个单词开头之间的内容,并且不保留空格。

范围删除

  • :3,5d:删除从第 3 行到第 5 行。
  • d1G:删除从当前行到第一行之间的文本。
  • dG:删除到文件尾,也就是删除整个文档的后半部分(包括光标所在的字符)。
  • dgg:删除到文件首。
  • dj:删除当前行和下一行(例如:5dj 删除当前行及其下面的 5 行,即向下删除 6 行)。
  • dk:删除当前行和上一行(例如:5dk 删除当前行及其上面的 5 行,即向上删除 6 行)。
  • d2w:删除光标后面的两个单词。
  • dX:删除当前单词前面的空格,但不包括当前单词本身
  • wde:删除从光标位置到下 1 个单词开头的内容,并且保留空格。其中数字可以指定要删除的单词数

其他

  • d{motion}: motion 可以是任何移动光标的命令,例如 dw, d2w, d$ 等.

注意: d 删除的字符存放到 Vim 的剪贴板中,可以使用 p 命令将其粘贴到另一个位置。

复制和粘贴

复制

  • y:复制(默认是复制到"寄存器)。
  • "+y:复制到系统剪贴板(也就是 vim 的 + 寄存器)。
  • yw:复制 1 个单词(例如:y3w 复制 3 个单词)。
  • yy:复制游标所在的那一行(常用)。
  • nyy:n 为数字,复制光标所在的向下 n 行(例如:20yy 则是复制 20 行)。
  • y1G:复制游标所在行到第一行的所有数据。
  • yG:复制游标所在行到最后一行的所有数据。
  • y0:复制光标所在字符到该行行首的所有数据。
  • y$:复制光标所在字符到该行行尾的所有数据。
  • 5bgyw:复制光标所在单词向前 5 个单词
  • 5egyw:复制光标所在单词向后 5 个单词
  • 5b5egyw:复制光标所在单词向前向后 3 个单词

粘贴

  • p:粘贴(默认从"寄存器取出内容粘贴,在光标后)。
  • P:粘贴到光标前。
  • "+p:从系统剪贴板粘贴。
  • 5p:粘贴五份。

插入新行

  • o:在当前行下面插入 1 个新行,并将光标放置到新行的起始位置。
  • O:在当前行上面插入 1 个新行,并将光标放置到新行的起始位置。

插入模式

  • i:在当前光标位置处插入文本。
  • I:在当前行的开头插入文本。
  • a:在当前光标位置后插入文本。
  • A:在当前行的结尾插入文本。
  • o:在当前行的下一行插入文本。
  • O:在当前行的上一行插入文本。

撤销和重做

  • u:撤销,或输入 :undo 命令。
  • Ctrl + r:重做或输入 :redo 命令。

替换和搜索

  • :%s/old/new/g:快速替换文本中所有的匹配项。
  • :%s/old/new/gi:快速替换文本中所有的匹配项,忽略大小写。
  • :%s/[\\u4e00-\\u9fa5]//g:替换所有中文字符。
  • :g/^$/d:删除所有空行。
  • :%s/\\s\\+/ /g:将连续空格替换为单个空格。
  • :g/^\\s*$/d:删除包含空格的空行。
  • :%s/^\\s*\\n//:删除文档中的连续空格,只保留单个空格,并且删除包含空格的空行。

代码块操作

代码块缩进

  • <:代码块左移(减少缩进)。
  • >:代码块右移(增加缩进)。
  • <<:减少选中行的缩进,块状可视模式下使用。
  • >>:增加选中行的缩进,块状可视模式下使用。

代码块排序

  • :sort:按字典顺序排序选中的行。
  • :sort!:按逆字典顺序排序选中的行。
  • :sort n:按数字顺序排序选中的行。

代码块注释

  • I:在当前行的开头插入注释(需要配合可视块模式)。
  • A:在当前行的末尾添加注释(需要配合可视块模式)。
  • :%s/^/# /:在每一行的行首插入 “#” 作为注释符号。

代码块格式化

  • =:重新格式化选中的代码块(自动缩进)。

其他命令

  • nohl:取消高亮。
  • :set whichwrap+=<,>:允许光标在行首和行尾跳转到下一行或上一行。
  • :set nofixeol:禁用文件末尾自动添加新行。
  • :set mouse=a:启用鼠标支持。
  • :set mousemodel=extend:设置鼠标滚动时光标的移动方式为扩展模式
  • :set number 或者 :set nu:显示行号
  • :set nonumber 或者 :set nonu:不显示行号

文件操作

保存并退出

  • :wq:保存文件并退出编辑器。
  • :x:保存文件并退出编辑器,仅当文件自上次保存以来有修改时。
  • :xit:保存文件并退出编辑器,无论文件是否被修改。
  • :ZZ:保存文件并退出编辑器

仅保存

  • :w:保存更改但不退出 Vim。
  • :w!:强制保存更改,忽略某些文件类型插件的警告。

保存到其他文件

  • :w <filename>:将更改保存到指定的文件名中,不退出 Vim。
  • :w! <filename>:强制将更改保存到指定的文件名中,忽略警告。

保存所有打开的文件

  • :wqa:保存所有打开的文件并退出 Vim。

撤销保存

  • :undo:撤销最近的一次保存操作。

设置自动保存

  • :set autowrite:自动保存更改,每次执行命令时自动写入文件。
  • :set noautowrite:取消自动保存。

保存并退出所有打开的标签页

  • :wqa:在有多个标签页的情况下,保存所有更改并退出 Vim。

保存并关闭当前窗口

  • :close:关闭当前窗口
  • :winc:保存当前窗口的更改并关闭窗口,不退出 Vim。

保存并关闭所有窗口

  • :wqa:保存所有更改并关闭所有窗口,退出 Vim。

自定义快捷键

  • :map <C-f> <PageDown>:将 Ctrl+f 映射为 PageDown(向下滚动一页)。
  • :map <C-b> <PageUp>:将 Ctrl+b 映射为 PageUp(向上滚动一页)。
  • :map <C-s> :w<CR>: 将 Ctrl + s 映射为保存。

正则表达式和替换命令

插入特定字符

  • :%s/^/#/:在整个文件中的每一行的行首插入 “#” 字符
  • :1,5s/^/# /:在第 1 行到第 5 行之间的每一行的行首插入 “#” 字符

删除特定字符

  • :%s/^#//:删除整个文件中的每一行的行首的 “#” 字符
  • :1,5s/^# //:删除第 1 行到第 5 行之间的每一行的行首插入的 “#” 字符

插入行首和行尾字符

  • :%s/^/\\/\\/:在每一行的行首插入 “//”
  • :1,5s/^/# /:在第 1 行到第 5 行的行首插入 "# "

删除行首和行尾字符

  • :%s/^\\s\\+//:删除每行行首的空格
  • :%s/\\s\\+$//:删除每行行尾的空格

替换文本

  • :%s/old/new/g:将文件中所有的 “old” 替换为 “new”
  • :%s/old/new/gi:将文件中所有的 “old” 替换为 “new”,忽略大小写
  • :%s/\\n//g:删除所有的换行符
  • :%s/\\r//g:删除所有的回车符
  • :%s/\\t//g:删除所有的制表符

特定范围替换

  • :<起始行号>,<结束行号>s/^/<插入的字符>/:在特定范围的行上执行插入操作
  • :<起始行号>,<结束行号>s/^<要删除的字符>//:在特定范围的行上执行删除操作

未完待续……

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

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

相关文章

树莓派3B+的初步使用

树莓派3B的初步使用 一、安装使用树莓派系统1.将系统写入SD卡2.登录树莓派系统3.用C和Python编译运行hello world 一、安装使用树莓派系统 1.将系统写入SD卡 首先&#xff0c;准备至少16GB大小的SD卡以便装入树莓派系统&#xff0c;将SD卡插入读卡器后连接电脑准备给SD卡写入…

基于Windows11的DockerDesktop安装和布署方法简介

基于Windows11的DockerDesktop安装和布署方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是…

文档处理控件Aspose.Total教程:使用 C# 将 Obsidian Markdown 转换为 OneNote

Obsidian 是一款广泛使用的基于 Markdown 的笔记应用程序。它提供了一种强大而有效的方式来构建和组织想法。用户可以无缝地连接他们的想法&#xff0c;提高清晰度和工作效率。另一方面&#xff0c;OneNote 是 Microsoft 的一款功能强大的笔记应用程序。它还可以帮助用户组织他…

第5章:vuex

第5章&#xff1a;vuex 1 求和案例 纯vue版2 vuex工作原理图3 vuex案例3.1 搭建vuex环境错误写法正确写法 3.2 求和案例vuex版细节分析源代码 4 getters配置项4.1 细节4.2 源代码 5 mapState与mapGetters5.1 总结5.2 细节分析5.3 源代码 6 mapActions与mapMutations6.1 总结6.2…

迷你世界脚本对象库接口:ObjectLib

对象库接口&#xff1a;ObjectLib 迷你世界 更新时间: 2023-04-26 20:21:09 具体函数名及描述如下: 序号 函数名 函数描述 1 getAreaData(...) 获取区域数据 2 getPositionData(...) 获取位置数据 3 getLivingData(...) 获取生物数据 4 getItemDat…

测试是如何跟进和管理 bug

测试在跟进和管理 Bug定位精确、问题反馈及时、修复闭环高效 三大关键环节中起到了至关重要的作用。Bug定位精确 是整个流程的基础&#xff0c;通过详细记录和复现问题&#xff0c;可以帮助开发团队迅速找出缺陷根源&#xff1b;而及时有效的反馈机制则确保问题不会被遗漏&…

运动控制卡--固高实用

目录 组件 配置参数 编程控制 组件 我手头有固高卡&#xff0c;记录使用。 用运动控制卡 伺服&#xff08;步进&#xff09;电机搭建一个运动控制系统&#xff0c;主要包括&#xff1a;1、控制器 2、端子板 1、控制器 2、端子板 3、伺服&#xff08;步进&#xff09;…

2025年能源工作指导意见

2025年是“十四五”规划收官之年&#xff0c;做好全年能源工作意义重大。为深入贯彻落实党中央、国务院决策部署&#xff0c;以能源高质量发展和高水平安全助力我国经济持续回升向好&#xff0c;满足人民群众日益增长的美好生活用能需求&#xff0c;制定本意见。 一、总体要求…

键值对(C++实现)

目录 键值对的定义 键值对的底层实现 键值对的作用 键值对的使用 对键值对中的值的搜索 一、键值对的定义 键值对&#xff08;Key-Value Pair&#xff09;是一种数据结构&#xff0c;用于存储和表示两个相关联的值。在键值对中&#xff0c;一个值被关联到一个唯一的键上&…

使用 Docker 部署 RabbitMQ 并实现数据持久化

非常好&#xff01;以下是一份完整的 Docker 部署 RabbitMQ 的博客文档&#xff0c;包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。 使用 Docker 部署 RabbitMQ 并实现数据持久化 RabbitMQ 是一个开源的消息队列系统&#xff0c;广泛应用于分布式系统中。使用…

springboot429-基于springboot的教务管理系统(源码+数据库+纯前后端分离+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…

my学习网址

文章目录 1.软件版本管控GIT学习网站大全1官方文档类2在线教程类3互动学习类4问答社区类 Linux学习网址1、 Linux命令行与shell脚本编程大全 1.软件版本管控 GIT学习网站大全 廖雪峰网站 以下为你推荐不同类型的学习Git的网站&#xff1a; 1官方文档类 Git官方文档 网址&am…

Best practice-生产环境中加锁的最佳实践

什么是死锁&#xff1f; 场景&#xff1a;图书馆有两个相邻的储物柜&#xff08;柜子A和柜子B&#xff09;&#xff0c;小明和小红需要同时使用这两个柜子才能完成借书流程。 互斥资源 每个柜子只有一把钥匙&#xff0c;且一次只能被一人使用&#xff08;资源不可共享&#x…

极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【四】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

黄昏时间户外街拍人像Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色介绍 黄昏时分有着独特而迷人的光线&#xff0c;使此时拍摄的人像自带一种浪漫、朦胧的氛围 。通过 Lr 调色&#xff0c;可以进一步强化这种特质并根据不同的风格需求进行创作。Lr&#xff08;Lightroom&#xff09;作为专业的图像后期处理软件&#xff0c;提供了丰富的调色…

Spring Boot 项目中 Redis 常见问题及解决方案

目录 缓存穿透缓存雪崩缓存击穿Redis 连接池耗尽Redis 序列化问题总结 1. 缓存穿透 问题描述 缓存穿透是指查询一个不存在的数据&#xff0c;由于缓存中没有该数据&#xff0c;请求会直接打到数据库上&#xff0c;导致数据库压力过大。 解决方案 缓存空值&#xff1a;即使…

信息系统项目管理师--整合管理

信息系统项目管理师–整合管理

关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题

如果是jsp文件就在首行加 “<% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %>” 如果是html文件 在head标签加入&#xff1a; <meta charset"UTF-8"> 以jsp为例子&#xff0c;我们…

微服务的春天:基于Spring Boot的架构设计与实践

微服务的春天:基于Spring Boot的架构设计与实践 在如今的技术领域,微服务架构俨然成为了解决复杂系统开发与运维挑战的关键利器。作为一名资深运维和自媒体创作者,笔名Echo_Wish,我将深入探讨基于Spring Boot的微服务架构设计,结合实例代码说明观点,希望能为大家带来启发…

JVM参数调整

一、内存相关参数 1. 堆内存控制 -Xmx&#xff1a;最大堆内存&#xff08;如 -Xmx4g&#xff0c;默认物理内存1/4&#xff09;。-Xms&#xff1a;初始堆内存&#xff08;建议与-Xmx相等&#xff0c;避免动态扩容带来的性能波动&#xff09;。-Xmn&#xff1a;新生代大小&…