当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : vim 执行一自定义函数如何保持状态
帖子发表于 : 2010-12-02 2:08 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
我在一脚本中有
代码:
noremap <F10> :call <SID>Main()<CR>
inoremap <F10> <Esc>:call <SID>Main()<CR>

我想,若之前是插入模式,在按 F10 执行完 Main() 后恢复到插入模式。
若之前是可视模式或选择模式,在按 F10 执行完 Main() 后恢复到可视或选择模式,且保持原来的选择范围依旧被选。
是需要改写 map 和 Main() 两方面吗,如何该?


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: vim 执行一自定义函数如何保持状态
帖子发表于 : 2010-12-02 12:33 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
这样?
代码:
nnoremap <F10> :call <SID>Main()<CR>
inoremap <F10> <Esc>:call <SID>Main()<CR>i
vnoremap <F10> <Esc>:call <SID>Main()<CR>gv


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vim 执行一自定义函数如何保持状态
帖子发表于 : 2010-12-03 2:07 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
inoremap 用 i 光标会回退一字符,除非光标本来在行首,用 a 则一般正常,但光标若本在行首则会落到第一个字符后。不知有否完全之策。
若能让 vim 在 Esc 时,光标不回退,那就可以放心用 i 了。
另外最关键的是 Main() 的定义必须在开始 call inputsave() 在返回前 call inputrestore() ,否则 map 中 <CR> 之后的键会被其吞并。


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: vim 执行一自定义函数如何保持状态
帖子发表于 : 2010-12-03 2:58 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
还是有问题,当我调用的函数如果又调用了 inputsave() 就完蛋了,插入模式还是用 <C-O> 好了,不用 <Esc> ,也解决了光标位置问题。
就是不知道选择模式的选择范围在 Main() 中如何使用。我 Main() 的定义加了 range 的。


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译