超全的Vim常用快捷键,建议收藏

一、移动光标

  • h j k l 上 下 左 右
  • ctrl-y 上移一行
  • ctrl-e 下移一行
  • ctrl-u 上翻半页(up)
  • ctrl-d 下翻半页(down)
  • ctrl-f 上翻一页(forward)
  • ctrl-b 下翻一页(backward)
  • w 跳到下一个字首,按标点或单词分割
  • W 跳到下一个字首,长跳,如end-of-line被认为是一个字
  • e 跳到下一个字尾
  • E 跳到下一个字尾,长跳
  • b 跳到上一个字
  • B 跳到上一个字,长跳
  • 0 跳至行首,不管有无缩进,就是跳到第0个字符
  • ^ 跳至行首的第一个字符
  • $ 跳至行尾
  • gg 跳至文首
  • G 调至文尾
  • 5gg/5G 调至第5行
  • gd 跳至当前光标所在的变量的声明处
  • fx 在当前行中找x字符,找到了就跳转至
  • ; 重复上一个f命令,而不用重复的输入fx
  • * 查找光标所在处的单词,向下查找
  • # 查找光标所在处的单词,向上查找

二、删除复制

  • dd 删除光标所在行
  • dw 删除一个字(word)
  • d/D 删除到行末
  • x 删除当前字符
  • X 删除前一个字符
  • yy 复制一行
  • yw 复制一个字
  • y/Y 复制到行末
  • p 粘贴粘贴板的内容到当前行的下面
  • P 粘贴粘贴板的内容到当前行的上面

三、插入模式

  • i 从当前光标处进入插入模式
  • I 进入插入模式,并置光标于行首
  • a 追加模式,置光标于当前光标之后
  • A 追加模式,置光标于行末
  • o 在当前行之下新加一行,并进入插入模式
  • O 在当前行之上新加一行,并进入插入模式
  • Esc 退出插入模式

四、编辑

  • J 将下一行和当前行连接为一行
  • cc 删除当前行并进入编辑模式
  • cw 删除当前字,并进入编辑模式
  • c$ 擦除从当前位置至行末的内容,并进入编辑模式
  • s 删除当前字符并进入编辑模式
  • S 删除光标所在行并进入编辑模式
  • xp 交换当前字符和下一个字符
  • u 撤销
  • ctrl+r 重做
  • ~ 切换大小写,当前字符
  • >> 将当前行右移一个单位
  • << 将当前行左移一个单位(一个tab符)
  • == 自动缩进当前行

五、查找替换

  • /pattern 向后搜索字符串pattern
  • ?pattern 向前搜索字符串pattern
  • "\c" 忽略大小写
  • "\C" 大小写敏感
  • n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
  • N 上一个匹配(同上)
  • :%s/old/new/g 搜索整个文件,将所有的old替换为new
  • :%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换

六、退出编辑器

  • :w 将缓冲区写入文件,即保存修改
  • :wq 保存修改并退出
  • :x 保存修改并退出
  • :q 退出,如果对缓冲区进行过修改,则会提示
  • :q! 强制退出,放弃修改

七、多文件编辑

  • vim file1.. 同时打开多个文件
  • :args 显示当前编辑文件
  • :next 切换到下个文件
  • :prev 切换到前个文件
  • **:next!**不保存当前编辑文件并切换到下个文件
  • **:prev!**不保存当前编辑文件并切换到上个文件
  • :wnext 保存当前编辑文件并切换到下个文件
  • :wprev 保存当前编辑文件并切换到上个文件
  • :first 定位首文件
  • :last 定位尾文件
  • ctrl+^ 快速在最近打开的两个文件间切换
  • :split[sp] 把当前文件水平分割
  • :split file 把当前窗口水平分割, file
  • :vsplit[vsp] file 把当前窗口垂直分割, file
  • :new file 同split file
  • :close 关闭当前窗口
  • :only 只显示当前窗口, 关闭所有其他的窗口
  • :all 打开所有的窗口
  • :vertical all 打开所有的窗口, 垂直打开
  • :qall 对所有窗口执行:q操作
  • :qall! 对所有窗口执行:q!操作
  • :wall 对所有窗口执行:w操作
  • :wqall 对所有窗口执行:wq操作
  • ctrl-w h 跳转到左边的窗口
  • ctrl-w j 跳转到下面的窗口
  • ctrl-w k 跳转到上面的窗口
  • ctrl-w l 跳转到右边的窗口
  • ctrl-w t 跳转到最顶上的窗口
  • ctrl-w b 跳转到最底下的窗口

八、多标签编辑

  • :tabedit file 在新标签中打开文件file
  • :tab split file 在新标签中打开文件file
  • :tabp 切换到前一个标签
  • :tabn 切换到后一个标签
  • :tabc 关闭当前标签
  • :tabo 关闭其他标签
  • gt 到下一个tab
  • gT 到上一个tab
  • 0gt 跳到第一个tab
  • 5gt 跳到第五个tab

九、执行shell命令

  1. 在命令模式下输入":sh",可以运行相当于在字符模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器
  2. 可以"!command",运行结束后自动回到VIM编辑器中
  3. 用“Ctrl+Z“回到shell,用fg返回编辑
  4. :!make -> 直接在当前目录下运行make指令

十、VIM启动项

  • -o[n] 以水平分屏的方式打开多个文件
  • -O[n] 以垂直分屏的方式打开多个文件

十一、自动排版

在粘贴了一些代码之后,vim变得比较乱,只要执行gg=G就能搞定

十二、如何在vim中编译程序

在vim中可以完成make,而且可以将编译的结果也显示在vim里,先执行 :copen 命令,将结果输出的窗口打开,然后执行 :make

编译后的结果就显示在了copen打开的小窗口里了,而且用鼠标双击错误信息,就会跳转到发生错误的行。

十三、buffer操作

buffer状态
  • - (非活动的缓冲区)
  • a (当前被激活缓冲区)
  • h (隐藏的缓冲区)
  • % (当前的缓冲区)
  • # (交换缓冲区)
  • = (只读缓冲区)
  • + (已经更改的缓冲区)

十四、 VIM 操作目录

1.打开目录
  • vim .
  • vim a-path/
2.以下操作在操作目录时生效

p,P,t,u,U,x,v,o,r,s

  • c 使当前打开的目录成为当前目录
  • d 创建目录
  • % 创建文件
  • D 删除文件/目录
  • - 转到上层目录
  • gb 转到上一个 bookmarked directory
  • i 改变目录文件列表方式
  • ^l 刷新当前打开的目录

  • mf - 标记文件
  • mu - unmark all marked files
  • mz - Compress/decompress marked files
  • gh 显示/不显示隐藏文件( dot-files)
  • ^h 编辑隐藏文件列表
  • a 转换显示模式, all - hide - unhide
  • qf diplay infomation about file
  • qb list the bookmarked directories and directory traversal history
  • gi Display information on file

  • mb
  • mc
  • md - 将标记的文件(mf标记文件)使用 diff 模式
  • me - 编辑标记的文件,只显示一个,其余放入 buffer 中
  • mh
  • mm - move marked files to marked-file target directory
  • mc - copy
  • mp
  • mr
  • mt

vim 中复制,移动文件

  1. mt - 移动到的目录
  2. mf - 标记要移动的文件
  3. mc - 移动/复制

R 移动文件

打开当前编辑文件的目录

  • :Explore
  • :Hexplore
  • :Nexplore
  • :Pexplore
  • :Sexplore
  • :Texplore
  • :Vexplore

记录学习一下 

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

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

相关文章

MySQL5.7 InnoDB 磁盘结构之Table

官网地址&#xff1a;MySQL :: MySQL 5.7 Reference Manual :: 14.6.1.1 Creating InnoDB Tables 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. MySQL 5.7 参考手册 / ... / 创建 InnoDB 表 14.6.1.1 创建In…

密码输入检测 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 给定用户密码输入流input,输入流中字符 ‘<’ 表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。 密码安全要求如下: 密码长度&…

浅研究下 DHCP 和 chrony

服务程序&#xff1a; 1.如果有默认配置&#xff0c;请先备份&#xff0c;再进行修改 2.修改完配置文件&#xff0c;请重启服务或重新加载配置文件&#xff0c;否则不生效 有些软件&#xff0c;安装包的名字和系统里服务程序的名字不一样&#xff08;安装包名字&#xff1a;…

MySQL插入、更新和删除

文章目录 一、插入数据1. 插入完整的行省略列提高整体性能 2. 插入多个行3. 插入检索出的数据 二、更新数据三、删除数据四、更新和删除的指导原则五、创建和操作表1. 创建表1.1 表创建基础1.2 使用NULL值1.3 主键1.4 使用AUTO_INCREMENT1.5 指定默认值1.6 引擎类型 2. 更新表小…

鸿蒙HarmonyOS-HTTP网络数据请求

鸿蒙HarmonyOS-HTTP网络数据请求 文章目录 鸿蒙HarmonyOS-HTTP网络数据请求导入模块示例 导入模块 import http from ohos.net.http;示例 // 引入包名 import http from ohos.net.http;// 每一个httpRequest对应一个HTTP请求任务&#xff0c;不可复用 let httpRequest http.…

【Spring Cloud】Sentinel流量限流和熔断降级的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…

golang 反序列化出现json: cannot unmarshal string into Go value of type model.Phone

项目场景&#xff1a; 今天在项目公关的过程中&#xff0c;需要对interface{}类型进行转换为具体结构体 问题描述 很自然的用到了resultBytes, _ : json.Marshal(result)&#xff0c;然后对resultBytes进行反序列化转换为对应的结构体err : json.Unmarshal(resultBytes, &…

OpenCV-Python(35):BRIEF算法

算法介绍 BRIEF&#xff08;Binary Robust Independent Elementary Features&#xff09;是一种用于计算机视觉中特征点描述子的算法。它是一种二进制描述子&#xff0c;通过比较图像上不同位置的像素值来生成特征点的描述子。 BRIEF算法的基本思想是选取一组固定的像素对&…

12GoF之代理模式

解决问题的思维&#xff1a;AOP 解决问题技术&#xff1a;代理技术 代理技术太麻烦&#xff0c;因此使用框架 Spring AOP框架&#xff08;底层是代理技术&#xff1a;jdk动态daili&#xff0c;cglib&#xff09; 代理模式是GoF23种设计模式之一。属于结构型设计模式。 代理…

做一个个人博客第一步该怎么做?

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

C 语言每日一题——旋转数组的最小数字

一、题目内容 提供一下该OJ题的链接&#xff1a;旋转数组的最小数字_牛客题霸_牛客网 (nowcoder.com) 二、题目分析 通过示例1可知&#xff0c;我们写代码的目的是在数组中找到一个最大值&#xff0c;并且返回来&#xff1b; 我们很容易的会想到创建一个变量&#xff1a;int…

【Linux】 nohup命令使用

nohup命令 nohup是Linux和Unix系统中的一个命令&#xff0c;其作用是在终端退出时&#xff0c;让进程在后台继续运行。它的全称为“no hang up”&#xff0c;意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。 nohup 命令&#xff0c;在默认情况下&…

pyx文件编译为pyd/so文件(分别在windows/linux系统下)

Python有以下几种类型的文件&#xff1a; py&#xff1a;Python控制台程序的源代码文件pyx&#xff1a;是Python语言的一个编译扩展&#xff0c;它实际上是Cython语言的源代码文件&#xff08;可以理解为既支持Python语言也支持C/C&#xff09;。pyc&#xff1a;Python字节码文…

DevOps搭建(十六)-Jenkins+K8s部署详细步骤

​ 1、整体部署架构图 2、编写脚本 vi pipeline.yml apiVersion: apps/v1 kind: Deployment metadata:namespace: testname: pipelinelabels:app: pipeline spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metadata:labels:app: pipelinespec:containers:- nam…

深入了解鸿鹄电子招投标系统:Java版企业电子招标采购系统的核心功能

随着市场竞争的加剧和企业规模的扩大&#xff0c;招采管理逐渐成为企业核心竞争力的重要组成部分。为了提高招采工作的效率和质量&#xff0c;我们提出了一种基于电子化平台的解决方案。该方案旨在通过电子化招投标&#xff0c;使得招标采购的质量更高、速度更快&#xff0c;同…

ECMAScript 6之Map

Map 是 JavaScript 中的一种数据结构&#xff0c;它可以用于存储键值对&#xff0c;并且键可以是任意类型的值。与普通对象相比&#xff0c;Map 提供了更多的灵活性和扩展性。 以下是 Map 的一些特点和用法&#xff1a; 键可以是任意类型&#xff1a;Map 中的键可以是任意类型…

java文档收集之javadoc

官网地址&#xff1a;javadoc 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. javadoc 您可以使用该javadoc工具及其选项从 Java 源文件生成 API 文档的 HTML 页面。 概要 javadoc [options] [packagenames] [sou…

基于JAVA的数据可视化的智慧河南大屏 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…

iOS 调试工具CocoaDebug

1、使用pod工具在项目里面添加CocoaDebug的SDK。 platform :ios, 11.0target ShopService doproject ShopServiceuse_frameworks!pod CocoaDebug, :configurations > [Debug]end2、之后就可以在项目里面看到效果了 APP上显示的是一个黑色背景的小圆圈。 上面39表示调用了39…

使用 vue-json-viewer 工具在界面显示json格式数据

安装vue-json-viewer npm install vue-json-viewer --save 引入&#xff1a; import JsonViewer from vue-json-viewer Vue.use(JsonViewer) 使用&#xff1a; <json-viewer :value"jsonData" show-double-quotes :preview-mode"true" :show-array…