Linum-relative-mode 有什么好的作用?

我就是像请教下linum-relative这个模式有什么好的作用,这种显示方式有什么意想不到的好处吗,反正我是觉得当行号报错时,没有正常显示行号看的更明白

主要为了方便 12j(下移12行) 12dd(向下删12行) 这种相对位移的命令

哦哦,原来是这么用的啊,我这还是没习惯靠命令来跳行:grinning: 只是一行行向下移动

我觉得主要是批量选择的时候,相对行号可以愉快一点

批量选择是怎么选,mark多行吗,这个还需要看行号选么

就是mark多行,比如我想批量注释一个if语句,它有十几行,相对行号就可以一眼看出有几行。 当然其实没有太大用处,也就是个使用习惯,绝对行号就是用 n g g来跳, 相对行号就用 n j/k来这样子。 就看前缀的数字你喜欢用绝对的还是相对的。 因为我喜欢说 “注释五行” 就是 C-u 5 注释 ,而不是说先选择好这五行再注释这样,所以觉得相对行号有点用。 不过实际上还没有发现更多好处

我试了下,确实要比每次都先mark好几行再注释掉来的方便,3Q

相对行号其实增加了心智负担。如果是 if..else 前后有空行,就当做段落来 mark,不管它几行。

有了 evil 模式,mark 多行更简单直观了,还以 if..else 为例,按 va} 就选中 {..} 了,不管中间跨了多少行/段落,如果要把关键字 if 也选中,按下V,从 visual 转到 visual line 状态。

选中之后再决定做什么,虽然看起来多按了几个健,但是这种渐进式的操作,更灵活,也有调整的余地。

GitHub - magnars/expand-region.el: Emacs extension to increase selected region by semantic units. 就是一个很好的 evil 扩展,先进入 visual 状态,然后再决定是要选行、选段、选tag之间的内容,是要扩大选区,还是要缩小选区。

试了下,对于mark来说确实要比原生的一点点的选要方便! 另外,当一段代码过长时,我想看看括号的匹配,而我在向下翻页或滚屏的时候,光标会始终保持在屏幕的首行,我也就不能查看那个括号是和上面的匹配了,在sublime中鼠标放在括号后面就会为匹配的括号加上下划线,当滚动到下面去查看时光标也不会动,在emacs这儿是我的配置是这效果还是它本身就这样啊?3Q

我认为光标跟随屏幕滚动是合理的,因为 mark 的起点通常是比较明确的,更应该关注的是选区扩张到哪里了。

但是如果确实有必要回头再检查一下,可以按C-x C-x(emacs) 或者o(evil)调转方向,同时保持选中状态。

整个vim风格的modal-editing就是以增加脑力占用为代价提高编辑速度的嘛。。当然在时间和脑力消耗间如何取舍就是大家的自由了(当然!我们选择vim/emacs,最大的目的就是给自己与机器表达沟通的自由)。但是相对于vf*/vt*这种操作时一看到代码就玩命找括号逗号等标志性的分隔符,行号的看到几就按几,还是比较轻松的吧。

expand-region这东西,当年从eclipse用到jetbrains,然后逢人便推荐,推荐第一个feature必是expand-region,直到后来学了vim,就渐渐不大用它了。另外用了spacemacs后我也试过一下它,感觉比IDE里层级稍微粗糙一点点,毕竟理解代码还是IDE的长项。。

才知道按o可以掉头,很棒!

万一你还漏掉了这个功能:vim/evil的%可以在匹配的括号之间跳转,evil的%是陈斌的作品,还支持配对的html标签等等,很不错。 另外要选中一块区域时,我常用的和[quote=“twlz0ne, post:8, topic:1227”] 按 va} 就选中 {…} 了…,按下V,从 visual 转到 visual line 状态 [/quote] 复杂度差不多,风格略有不同,供你取舍:在if(...) {这行的任意位置V$%,就可以选中这个if-block了。

不知道你用不用evil,evil-nerd-commenterSPC ;这个evil-nc-comment-operatorSPC ; ;注释本行,平淡无奇,5 SPC ; ;注释5行,平淡无奇,但是瞄一眼相对行号再SPC ; 4 j注释5行,我感觉非常舒服。

1 个赞

是的是的,我用evil,之所以写的时候加了C-u是照顾原生按键