如题, 在 evil mode 下, 我在某个自己实现的函数中 (message %d (region-end))
, 发现得到的 (region-end)
输出是 105983, 而这些行最后一个字符 what-cursor-position 得到的是 105981. 为什么会大 2 呢? 如果是大 1 我可以理解, 因为包含了 newline \n
, 但大 2 我就不理解了. 我的平台是 macos, 换行就是 \n
而不是 \r\n
.
难道这表示, 如果用 shift+v 选中若干个, (region-end)
就是会比最后一个字符的 position 大 2?
evil在按行选取的时候肯定有些自己的处理,要用它的api的话就跟着加减1什么的就好了。
测试搞个几行几十个字就好了,105983是什么和自己过不去的行为……
得到region end之后在某个地方(point)
对比一下就清楚了
你的意思是, 我应该看一看行为, 然后就把这个行为当做固定模式? 我现在看到的模式就是 +2?
呃之前没仔细看你的问题本身。我试了一下,region end是\n
之后的位置,没问题,是+1。注意看point的时候要在insert mode看,normal mode你不清楚是那个光标的前面还是后面
要不你试试用 (point)
这个函数来得到 point ,别用 what-cursor-position
?
有没有可能是这样:
normal 模式下取得的某一行最后一个字符位置,是最后一个字符前的位置。而 region-end
是取得了 \n
之后的位置。这样就差 2 了。
1 个赞
现在我觉得在 visual mode 下试图用 (region-beginning) (region-end) 来获得选中内容本来就不是好的做法, 应该用 evil-visual-beginning, evil-visual-end.