vim 如何确认光标是否在行尾字符之后

Vim、Emacs配置和使用
回复
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

vim 如何确认光标是否在行尾字符之后

#1

帖子 自由建客 » 2012-08-08 9:04

代码: 全选

fun Fun()
    echo col(".")
endfun
inoremap <F5> <C-O>:call Fun()<CR>
2.png
2.png (14.9 KiB) 查看 1520 次
这个按 <F5> 得到的是 6。
1.png
1.png (14.95 KiB) 查看 1520 次
这个按 <F5> 的到的竟然也是 6。

原因在于 <C-O> 进入普通模式是光标禁止超越行尾。插入模式按 <C-O><Esc>,能正确恢复光标位置,所以显然 vim 是存储了该信息的。我的问题就是如何得到该信息,以知道 <C-O> 之前光标是在行尾字符之后还是之前。
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim 如何确认光标是否在行尾字符之后

#2

帖子 自由建客 » 2012-08-08 16:52

问题解决了,我应该这样的

代码: 全选

inoremap <F5> <C-\><C-O>:call Fun()<CR>
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim 如何确认光标是否在行尾字符之后

#3

帖子 自由建客 » 2012-08-08 20:15

set ve=onemore 王道,解决所有问题。
回复