前言
大家都知道,我们使用Vim的一点好处就是,可定制性非常高,如果遇到任何让自己感到不适的痛点,都可以通过配置甚至开发一款插件来解决。开始使用Vim一段时间之后,我发现一个非常“反人类”的地方:Vim的很多命令都是需要查行数的。比如“删除一个函数体”,你就要数数这个函数占了几行(比如5行),然后按5dd。如果是使用鼠标的话就不用数了,可以直接拖过去,但是鼠标效率太低,既然学了Vim就不要让手离开键盘了。
我总结了一套方案,几乎所有的操作都可以不用数数来完成。
Vim支持两种行号,相对行号和绝对行号。相对行号是显示每一行距离光标所在行相隔多少行,绝对行号就是顺序显示每一行的序号。
Vim使用相对
set nu打开行号显示, set rnu打开相对行号显示(更多信息可以查看:help nu 和 :help rnu。
效果如下:
打开行号显示
打开相对行号的显示
同时打开相对行号和绝对行号
可以看到,如果同时打开二者,就会在当前行显示绝对行号,其他显示距离当前行的距离。
使用一段时间我发现,在normal模式时,经常进行对多行的操作,这时候如果使用绝对行号,那么必然是要做减法,或者去数数来确定行的数量的。所以在normal模式应该使用相对行号。0对我们来说是没有任何作用的,所以当前行还是显示行号吧。
然后一些常用的操作习惯都要相应换一下:
在insert模式时,我们一般都是编辑操作,不会对多行进行判断,此时可能对绝对行号更关心(写到多少行了等)。所以可以监听一下事件,进入编辑模式时使用绝对行号,退出编辑模式进入normal模式时使用相对行号。
设置如下:
set nu augroup relative_numbser autocmd! autocmd InsertEnter * :set norelativenumber autocmd InsertLeave * :set relativenumber augroup END
set nu是因为我一般打开一个文件不一定是编辑目的,浏览的话绝对行号更方便。这样设置可以让第一次进入文件的时候使用绝对行号,进入编辑模式再退出到normal模式时再显示相对行号。
这样用了一段时间,感觉按下的键多了,但是脑子里需要的计算少了很多,还不容易出错,挺好的。
最后附上我的.vimrc,供参考使用,不推荐盲目复制。
相关问题
在 Vim 7.4 之前的版本, 启用相对行号当前行号将变为0, 无法显示正常的行号, 在 Vim 7.4 中则可以正常的显示当前行号的同时来显示相对行号, 下面有两张图可以对比
Vim 7.3
Vim 7.4
从上面的图片看来, 启用相对行号后可以很直观的看到当前行距离上面/下面某行的行数
可以使用以下指令启用这个特性
set relativenumber
启用相对行号后再也不用为了复制多行费力气的去数了
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍vim 相对行号,包括了vim 相对行号的使用技巧和注意事项,需要的朋友参考一下 示例 在以下命令中,范围从当前行上方开始6行,并在下方下方3行结束:
我需要对连接到Android手机的 USB 设备执行文件操作。权限应由 android java 代码授予,文件操作应使用 JNI 执行。目前我无法授予执行文件操作的权限 - 我收到 EACCESS:权限被拒绝错误 我在这里附上了我的代码: //public native String stringFromJNI(); } JNI代码:
本文向大家介绍MongoDB中如何使用JOIN操作详解,包括了MongoDB中如何使用JOIN操作详解的使用技巧和注意事项,需要的朋友参考一下 前言 MongoDB是由C++语言所编写的一种面向文档的非关系型数据库(是一种NoSql数据库实现),也是介于关系型数据库和非关系型数据库之间的数据存储产品,而众所周知SQL与NoSQL最大的不同之一就是不支持JOIN,在传统的数据库中,SQL JOIN子
本文向大家介绍使用ajax操作JavaScript 对象详解,包括了使用ajax操作JavaScript 对象详解的使用技巧和注意事项,需要的朋友参考一下 通过请求获取充分格式化的HTML虽然很方便,但这也意味着必须在传输文本内容的同时也 传输很多HTML标签。有时候,我们希望能够尽量少传输一些数据,然后马上处理这些数据。在 这种情况,我们希望取得能够通过JavaScript进行遍历的数据结构。
本文向大家介绍JavaScript中的相等操作符使用详解,包括了JavaScript中的相等操作符使用详解的使用技巧和注意事项,需要的朋友参考一下 ECMAScript 中的相等操作符由两个等于号 ( == ) 表示,如果两个操作数相等,则返回 true。 相等操作符会先转换操作数(通常称为强制转型),然后比较它们的相等性。 在转换不同的数据类型时,相等操作符遵循下列基本规则: 1. 如果有一个操
本文向大家介绍ES6对象操作实例详解,包括了ES6对象操作实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6对象操作。分享给大家供大家参考,具体如下: 1.对象赋值 es5中的对象赋值方式如下: 结果为: ES6允许把声明的变量直接赋值给对象,例如: 结果与上述相同。 2.对象Key值构建 有时候我们会在后台取出key值,而不是我们前台定义好的,这时候我们可以我们可以把后台定