编辑器之神-vim的使用技巧

2023-05-16

vim VS. emacs

vim被誉为编辑器之神,而emacs被誉为神之编辑器。中国文化博大精深,他们究竟有什么区别呢?作为emacs小白的我来说不想在这里献丑,直接贴上一篇博客,有兴趣的同学可以深入研究或者自行百度https://www.v2ex.com/t/332566。

总之我对这两句话的简单理解是:vim是编辑器里面最优秀的;而emacs则常常是大神所钟爱的编辑器。貌似这个解释有些牵强,反着说意思就是大神们不太喜欢最优秀的编辑器。晕,自己把自己的结论推翻了。

vi VS. vim

这里我要说的是vim is not only vi。虽然vi是vim的祖先,但是他们两个真的不是同一个编辑器,证据就是在输入“vim”命令以后,vim的欢迎界面第一行写着“VIM - Vi Improved”。

至于这两个编辑器的区别,这里我也不献丑了,详情请看这里https://www.cnblogs.com/KiraEXA/p/5994078.html。

总之我对这两个编辑器的简单概括是:珍惜生命,请使用vim!

vimtutor

如果想学习vim,但是又不知道从哪里学起,这里有一个很好的vim学习教程。

不管你是macOS系统、windows系统或者其他Linux发行版系统,只要你在机器上安装了vim,那么就会自带安装vimtutor。划重点:不管你在这个教程里面怎么操作,都不用担心损坏这个教程,因为他有一个很神奇的功能就是每次打开都是一样的。vim开发人员早就考虑到一些小白用户可能会把vimtutor修改的面目全非,导致下次启动,不能再继续学习的困扰。

废话不多说,现在就可以开始你的vimtutor之旅了,希望你花30分钟看完(最好操作一遍)vimtutor以后再回来,我相信你对于vim的基本操作已经有了一个简单的认识。后面的内容将介绍一些比较高级的、可能会经常用的、并且在vimtutor中没有提及的内容。

:help

我觉得help算是vim里面最重要的命令,相当于linux的man命令。他会告诉我们一些设置的相关说明和语法,可以让我们通过他提供的公式举一反三,而不仅仅局限在一个命令的使用上。

help命令的而使用方法是在命令模式下输入help。这里我并不打算讲解vim的三种模式,有兴趣可以上网搜索,最简单的识别命令模式的方法是你输入的内容都会显示在窗口的最下面一行,并且输入内容以“:”开头,当然“:”是你自己输进去的。

这里列举一个通过“:help :s”查到的使用说明

  •  中括号中的内容为选填内容
  •  大括号内容是必填内容
  •  range是一个区间,表明要影响的行的范围,如果没有改参数说明只影响当前行
  •  ubstitute这个是substitute单词缩写时候省略掉了,但是如果你执意要用全拼,也是可以的
  •  pattern意思为正则表达式,这里值需要查找到的内容
  •  string指的是需要将parttern匹配的内容替换成string位置的内容
  •  flags是控制:s行为的参数,不填在匹配行进行一次替换。比如g代表在一行范围内多次替换,c代表确认替换
  •  count指定替换的次数,我一般不会用到这个参数

宏的录制和播放

宏不得不说是vim里面一大神器,他可以解放重复的劳动。

宏的简单理解就是对vim操作命令进行记录,播放宏就是将记录的vim操作进行让vim自己执行一遍。如果在@前面加上数字,比如100,就是说将记录的宏播放100遍。

那么怎么录制宏呢?红的录制是在normal模式下按下q,然后在按一任意26个字母(如:x)就可以将录制到指定的寄存器(x)中了。接着可以进行一两个简单的操作,比如dd。然后再按下q结束宏的录制。

那么怎么播放宏呢?在normal模式下输入@和你刚才输入的那个字母(如:x),就会看到他执行了一次刚才录制的操作dd,如果我们输入100@x,就会神奇的发现他执行了100次dd操作,细思极恐。

如果我上面巴拉巴拉一堆文字没有让你看明白,那么请移步这里有图文并茂:https://blog.csdn.net/lalor/article/details/7277761。相信好奇的你一定想迫不及待的试一下。

翻页

相信我们经常在查看日志的时候需要翻屏,我曾经就看到有人不会翻屏使用方向键在几十兆的日志中一行一行一行一行的移动,那时候我还是个小白,如果是在现在我一定会说:放开vim,让我来!

其实一般我们查找日志都是先find,然后在在定位到具体范围以后在向前翻页,向后翻页。

那么问题来了,怎么翻页呢?

  • ctrl + f 向下翻一页
  • ctrl + b向上翻一页
  • ctrl + d向下翻半页
  • ctrl + u向上翻半页

你以为这就完了吗?然并卵。

有时候我们还要定位光标呀,定位光标和翻页略有不同

  • zz将光标定位到当前屏幕的中间位置
  • zt将光标定位到当前屏幕的第一行
  • zb将光标定位到当前屏幕的最后一行

寄存器

前面再讲宏的时候已经提到过一次寄存器了,这里不要嫌烦,再提一次,因为他真的很重要。

我们经常需要一时间复制很多东西,然后在一个个粘贴,这件事在其他编辑器上只能一个一个复制粘贴,但是在vim里面可以将内容先复制到寄存器里面,然后在从寄存器里面粘贴出来。我不清楚我描述清楚没有[笑脸]

寄存器的吊起是“加任意一个字母,就可以调起任意指定的寄存器。如果后面连接的是复制操作,那么复制的内容会被保存到该寄存器中;如果 后面链接的是粘贴操作,那么该寄存器的内容会被粘贴到光标后面。

历史

很多人都不知道vim中有查找历史和命令模式历史,甚至是很多博客中都没有提及这样的概念,这真是太可惜了。

查看查找历史我们只需要在normal模式下输入q/然后就可以查看之前的搜索历史,通过移动光标选中需要执行的历史搜索,然后按回车键执行搜索,这个功能对于喜欢搜索,又不喜欢复制来复制的人来说简直以一种福音。

虽然命令模式不经常用,但是命令模式也有查看历史的命令q:。这样就可以查看到自己之前输入过得历史命令模式的命令,同样移动光标到指定行,按回车执行选定的行命令。

一般人我不告诉他:对历史命令还可以重新编辑,然后按回车键执行!

vim内调用系统命令

有时候我们需要在编辑的时候急性的执行一些系统命令,比如:pwd。因为是在控制台,所以只能关闭vim,然后在执行pwd,然后在进入vim。这个技巧可以在vim里面执行系统的pwd命令,那就是在normal模式下输入:!pwd,然后就会看到pwd被神奇的执行了,按回车键可以回到vim中继续编辑。

标记和跳转

有时候我们经常要在冗长的日志文件里面跳来跳去来对比内容,有的人索性直接吧相关内容复制出来或者截图以后来做对比,我想说从现在起不用了,只要你学会了下面的技能:标记、跳转。

标记的意思就是在文档里面做一个标记,方便以后回来查看他,在vim中的快捷键就是在normal模式下使用m,然后在跟26个字母中的任意键(比如:j),然后就把当前光标所在的位置标记到了指定的字母上(如果刚才你按下了mj那么意思就是将当前光标位置记录了到j字母上)。

这里的跳转不是指gg,G这类跳转,是指跳转到使用m标记过得地方,比如刚才我们将当前位置记录到了j字母中,现在我们任意跳转到vim其他地方,想要快速跳转回来,只需要按下`j就可以跳转到刚才标记的地方了(`键就是tab键上面那个最不起眼的,最不经常按的键,现在可以派上用场了),是不是很智能,这个功能一遍编辑器是不支持的,可以说有是vim一大神器。想想有26个按键可以记录跳转,反正我是用不过来,用的最多的时候也不超过5个,如果你的记忆力超好,我相信26个记录的位置也够你用了吧。

 

待续……

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编辑器之神-vim的使用技巧 的相关文章

随机推荐

  • linux面试题

    1 在Linux系统中 以 文件 方式访问设备 2 Linux内核引导时 从文件 etc fstab 中读取要加载的文件系统 3 Linux文件系统中每个文件用 i节点 来标识 4 全部磁盘块由四个部分组成 分别为 引导块 专用块 i节点表
  • MySql学习笔记(一)MySql卸载和安装说明

    MySql卸载 开始 控制面板 程序和功能 MySQL server xx 卸载 删除 C Program Files x86 MySQL 文件 删除 C ProgramData MySQL 文件 xff08 隐藏目录 xff09 如果以上
  • MySql学习笔记(二)MySql配置文件和服务操作说明

    Mysql配置文件说明 MySQL MySQL ServerX X my ini mysqld 为服务端配置 xff0c 服务端端口号 port 61 3306 安装目录 basedir 61 34 C Program Files MySQ
  • MySql学习笔记(三)MySql常用命令说明

    一 数据库命令 1 1显示数据库命令 命令 xff1a mysql gt show databases 执行后 xff1a 43 43 Database 43 43 information schema mysql performance
  • ubuntu 使用dpkg手动安装deb包时发生循环依赖的解决办法

    将循环依赖的所有包放到同一个命令行里一起安装 xff0c 如 xff1a sudo dpkg i libnss3 nssdb 3 28 4 0ubuntu0 14 04 4 all deb libnss3 3 28 4 0ubuntu0 1
  • 什么是源端口和目的端口

    源端口就是指本地端口 目的端口就是远程端口 一个数据包 xff08 pocket xff09 被解封装成数据段 xff08 segment xff09 后就会涉及到 连接上层协议的端口问题 很多人都在源端口和目的端口这两个概念上犯迷糊 xf
  • ini文件

    关于ini 文件的存储于加载 xff0c 初次遇到 xff0c 刚接触ini 文件 xff0c 我想我该把它记下 xff0c 以后提醒自己要常用 参数 保存 xff1a 参数结构体 struct TextConfig int nVol 音量
  • MIUI9线刷包精简

    MIUI9线刷包精简 1 说明 xff1a 系统包一经修改 xff0c 将无法通过OTA升级 xff08 可能只是修改system分区的无法OTA升级 xff0c 一般精简都修改system分区 xff0c system分区未修改的能不能O
  • logback高级特性使用(三)

    本文转自 xff1a 点击打开链接 异步记录日志 注意 xff1a 该功能需要高版本才能支持 xff0c 如1 0 11 AsyncAppender xff0c 异步记录日志 工作原理 xff1a 当Logging Event进入Async
  • spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)

    本文转自 xff1a 点击打开链接 SPRING官方网站改版后 xff0c 建议都是通过 Maven和Gradle 下载 xff0c 对不使用 Maven和Gradle 开发项目的 xff0c 下载就非常麻烦 xff0c 下给出Spring
  • ThreadLocal是否会引起内存溢出?

    本文参考 xff1a 点击打开链接 最近碰到一个使用ThreadLocal时因为未调用remove 而险些引起内存溢出的问题 xff0c 所以看了下ThreadLocal的源码 xff0c 结合线程池原理做一个简单的分析 xff0c 确认是
  • JS判断日期范围(日期范围应在一个月之内)

    本文转自 xff1a 点击打开链接 之前的一个项目的日期选择功能由单个日期 xff0c 修改为日期范围 xff0c 用到了日期范围的判断 xff0c 使用JS实现 xff0c 希望对需要的人有所帮助 代码如下 xff1a var start
  • python视频教程大全集下载啦

    本文转自 xff1a 点击打开链接 python3英文视频教程 全87集 http pan baidu com s 1dDnGBvV python从入门到精通视频 xff08 全60集 xff09 链接 xff1a http pan bai
  • 如何关闭ubuntu alt快捷键

    本文转自 xff1a 点击打开链接 有时候发现ubuntu的alt快捷键真是太烦人了 xff0c 动不动就能把搜索框呼唤出来 xff0c 尤其是我在ubuntu上装了win7虚拟机 xff0c 喜欢用qq的alt 43 s发送消息 xff0
  • ubuntu安装原生迅雷,让下载成为简单

    今天想到电影天堂下点电影 xff0c 发现TM全都是迅雷链接 xff0c 旋风链接什么的 无奈自带的BT下载器速度又慢 xff0c 又满足不了日常的一些文件下载 于是乎google了下 xff0c 哎呀 xff0c 有个mldonkey的电
  • Android 采用fastboot刷system.img boot.img recovery.img’

    手机正常启动后 xff0c 命令行模式下输入 adb reboot bootloader 该命令会自动进入fastboot模式 接着 xff1a fastboot devices 查看是否有设备 erase 擦除的意思 xff0c 你懂得
  • Executors.newSingleThreadExecutor的一些坑

    还是直接上源码吧 public static ExecutorService newSingleThreadExecutor return new FinalizableDelegatedExecutorService new Thread
  • 学习AOP之透过Spring的Ioc理解Advisor

    本文转自 xff1a 点击打开链接 花了几天时间来学习Spring xff0c 突然明白一个问题 xff0c 就是看书不能让人理解Spring xff0c 一方面要结合使用场景 xff0c 另一方面要阅读源代码 xff0c 这种方式理解起来
  • 计算广告资料汇总

    papers 计算广告论文 学习资料 业界分享 王喆Paper Collection of Real Time Bidding Weinan Zhang计算广告干货整理 雪伦 在线课程 Introduction to Computation
  • 编辑器之神-vim的使用技巧

    vim VS emacs vim被誉为编辑器之神 xff0c 而emacs被誉为神之编辑器 中国文化博大精深 xff0c 他们究竟有什么区别呢 xff1f 作为emacs小白的我来说不想在这里献丑 xff0c 直接贴上一篇博客 xff0c