Vim常用操作

基本概念

vim有三种工作模式:

  • 一般模式:vim file之后就进入了一般模式
  • 编辑模式:一般模式下按 i、a、o等,按Esc返回一般模式
  • 修改文件的某一部分内容
  • i在光标当前位置插入, Shift + i在当前光标所在行的开头插入
  • a在当前光标的后一个位置插入, Shift + a在当前光标所在行的结尾插入
  • o在光标下一行插入, Shift + o在光标的上一行插入
  • 命令行模式:一般模式下按 :/?进入,按Esc返回一般模式
  • 对整体文档进行的操作
  • vim是vi的升级版本,完全兼容vi,有语法高亮,
  • vim可以使用 Ctrl + Shift + v进入可视模式进行操作,vi没有
  • vim在一般模式下复制的东西,可以在别的地方通过vim粘贴,vi不行

编辑

  • dd:删除当前行, ndd删除n行, d$删除当前光标至行尾(或使用 Shift + d), d^删除当前光标至行首
  • dw:删除当前单词, ndw删除当前n个单词,从当前光标开始
  • yy:复制当前行, nyy复制n行, y$复制当前光标至末尾, y^复制当前光标至行首
  • yw:复制当前单词, nyw复制当前n个单词,当前使用vim复制的东西可以在vim另外一个文件时粘贴,vi就不行
  • cc:删除当前行,并插入, Shift + c删除至行末并插入
  • x:剪切当前字符,光标位置不动(类似window的delete键), Shift + x删除当前字符,光标左移(类似window的backspace键),可以使用 p粘贴字符,粘贴位置为当前光标所在字符的后一个位置开始。
  • r:替换当前字符, Shift + r进入替换模式,后续写的内容都会对当前内容进行替换
  • p:粘贴
  • u:撤回
  • Ctrl + r重做
  • 竖行操作
  • Ctrl + Shift + v进入可视模式,再次按取消可视模式
  • down到结束行
  • Shift + i在光标前插入, Shift + a在光标后插入, r替换
  • 输入,按 Esc
  • 可结合 :set nu行号 + Shift + g移动光标进行任意选择行, Shift + g直到文件末尾

浏览

  • 0:移动到行首(或 ^
  • $:移动到行尾
  • w:向后移动到词首, b向前移动到词首, Shift + w跳过特殊字符向后移动到词首
  • e:向后移动到词尾,可以使用 Ctrl + left/right按单词左右快速移动(与window上类似)
  • gg:移动到文件开头
  • Shift + g:移动到文件末尾, n + Shift + g移动到当前文件的第几行(可以使用 :set nu显示行号直接跳转到想要的行号)
  • Shift + 0移动到段落末尾
  • Shift + h/l:移动到当前页的第一行(最后一行),h指head,l指last
  • Ctrl + f/b:向下(上)翻页,f指forward,b指back,或 Shift + up/down
  • Ctrl + e:向下(上)滚动
  • Ctrl + g:显示文件名,总行数,光标所在位置之前内容占比,光标位置,顶行之前内容占比

命令行模式

  • *:搜索当前单词, n显示下一个, Shift + n显示上一个
  • #:反向搜索当前单词, n显示下一个, Shift + n显示上一个
  • :w:保存,w表示write, :w a.txt另存为一个文件, :w n1,n2 w 1.txtn1到n2行另存为一个文件,使用r表示追加
  • :q:退出,q表示quit, :q!不保存退出,或者 Shift + zq
  • :wq:保存退出, :wq!强制保存退出, :xShift + zz
  • :set nu:显示行号, :set nonu取消显示行号
  • /xxx:搜索xxx, n显示下一个, Shift + n显示上一个,这时是高亮显示的, :noh不高亮显示了
  • ?xxx:反向搜索xxx, n显示下一个, Shift + n显示上一个
  • :s/old/new:替换当前行找到的第一个匹配的字符串
  • :s/old/new/g:替换当前行所有匹配的字符串,g表示当前行的global
  • :%s/old/new:替换所有行的第一个的字符串
  • :%s/old/new/g:替换文件所有匹配字符串
  • set paste,然后粘贴内容, set nopaste,就不会自动缩进了

总结

常用:

  • ddndddwndwyynyyywnywp,n放在中间也可以,删除、复制、粘贴
  • Ctrl + f/b,上下翻页
  • Ctrl + e/y,上下滚动
  • Ctrl + left/right,左右移动光标,按单词左右移动词首位置跳过特殊字符, w移动到词首, e移动到词尾, b向左移动光标到词首, ^移动光标到行首, $移动光标到行尾
  • ccShift + c删除光标至行尾并插入
  • gg,移动到首行, Shift + g移动到尾行, n + Shift + g移动到指定行, :set nu显示行号
  • Shift + i在行首插入, Shift + a在行尾插入, Shift + o在上一行插入
  • x,剪切选中区域(默认是当前字符),可以使用 Ctrl + Shift + v选中
  • 使用 Ctrl + Shift + v选中后,按 d删除,按 y复制,按 x剪切

Vim常用操作

Original: https://www.cnblogs.com/bingmous/p/16345178.html
Author: Bingmous
Title: Vim常用操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685115/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 设计模式是什么,为什么要学习设计模式?

    在软件工程中, 设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 这个术语是由埃里希·伽玛(Erich Gamma)等人在1…

    技术杂谈 2023年5月31日
    082
  • ftp的passive模式

    ftp的passive模式 今天在一台测试服务器上搭建ftp,折腾了许久。 主要是不了解ftp的passive模式和port模式的区别。这里记录一下。 和passive模式对应的叫…

    技术杂谈 2023年6月1日
    095
  • java实现红黑树

    好久没更新了 今天发个有点技术含量的 java实现红黑树代码 下面是代码 由于我才疏学浅 和自己对于特别复杂的问题的讲解能力问题 可能不能特别清晰明了的为大家讲解清晰 后面会抽时间…

    技术杂谈 2023年7月24日
    082
  • 常见Git命令汇总

    前言 最近,有朋友私信让我就 git 使用做篇文章分享,分享一下我在日常工作中是如何使用 git的。我当场就收费两包辣条,最后讨价还价,…

    技术杂谈 2023年7月11日
    078
  • Spring事务(三)-事务传播行为

    在Spring里,一个事务方法被另外一个事务方法调用时,两个方法的事务应该如何进行,说白话一点,就是说当出现异常需要回滚时,各个方法的数据操作是否要全部回滚,事务传播行为就是决定了…

    技术杂谈 2023年7月11日
    080
  • 小熊飞桨练习册-07PaddleX寻找火箭车车

    小熊飞桨练习册-07PaddleX寻找火箭车车 简介 小熊飞桨练习册-07PaddleX寻找火箭车车,是学习目标检测小项目,本项目开发和测试均在 Ubuntu 20.04 系统下进…

    技术杂谈 2023年7月23日
    089
  • 前端性能优化?

    减少HTTP请求(合并css、js,雪碧图/base64图片) 压缩(css、js、图片皆可压缩,使用webpack uglify和 svg) 样式表放头部,脚本放底部 使用CDN…

    技术杂谈 2023年5月31日
    080
  • 软件成分分析:华为云重磅发布开源软件治理服务

    摘要:软件成分分析,指通过对软件源码、二进制软件包等的静态分析,挖掘其所存在的开源合规、已知漏洞等安全合规风险,是一种业界常见的安全测试手段。 软件成分分析,指通过对软件源码、二进…

    技术杂谈 2023年5月31日
    0108
  • 汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI

    这个问题简单,DP:a[n]=a[n-1]+1+a[n-1],先把 上面的n-1个放在B上,把最大的放在目标C上,再把N-1个放回到C上就可以。 网上的一种最优解法例如以下:(1)…

    技术杂谈 2023年5月31日
    0107
  • SQL44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005

    本题链接表结构如下所示。 +—-+——–+—————–+————+————+ | id | emp_no | t…

    技术杂谈 2023年7月11日
    072
  • java学习之动态代理

    在后面的漏洞研究的学习中,必须要会的几个知识点。反射机制和动态代理机制。至于反射的前面已经讲到过了,这里就不做更多的赘述了。反射是通过class文件去获取对象对象的方法. &amp…

    技术杂谈 2023年6月21日
    077
  • Kmp算法

    算法流程: kmp_search(char[] text,char[] pattern) 构建前缀表 prefix[0]默认&#…

    技术杂谈 2023年6月21日
    089
  • 猪齿鱼数智化开发管理平台1.3.0-alpha发布,欢迎立即体验!

    2022年3月18日,数智化开发管理平台猪齿鱼 Choerodon发布 V1.3-alpha版本,多项功能新增或优化,多管齐下,全面提升团队工作效能!通过提供体系化方法论和协作、测…

    技术杂谈 2023年7月23日
    079
  • [学习笔记]Java修饰符

    Java当中的修饰符可在定义类、方法或变量时放在语句前面作修饰。根据修饰符的用途,可将其分为访问修饰符和非访问修饰符。 访问控制修饰符 访问控制修饰符用于指明对类、方法/构造方法的…

    技术杂谈 2023年7月24日
    065
  • 四、初识Java

    JavaSE:标准版(桌面程序,控制台开发……) JavaME:嵌入式开发(手机,小家电……)[了解就行] JavaEE:E企业级开…

    技术杂谈 2023年6月21日
    074
  • Ajax学习笔记(二)

    二、prototype库具体解释 1、prototype库的使用 //导入下载好的prototype.js文件 //在自己的js中直接使用Prototype对象 document….

    技术杂谈 2023年5月30日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球