VIM:条件密钥映射
发布时间:2020-12-15 21:25:55 所属栏目:安全 来源:网络整理
导读:在Vim中,我希望在Key映射中有一个条件语句. 如果光标位于一行的开头,我想要这个映射: imap F1 ESC:syntax sync fromstartCRi 但否则有这个映射(唯一的区别是最终字符) imap F1 ESC:syntax sync fromstartCRa 在第二个映射中,如果在光标位于行的开头时运行此
在Vim中,我希望在Key映射中有一个条件语句.
如果光标位于一行的开头,我想要这个映射: imap <F1> <ESC>:syntax sync fromstart<CR>i 但否则有这个映射(唯一的区别是最终字符) imap <F1> <ESC>:syntax sync fromstart<CR>a 在第二个映射中,如果在光标位于行的开头时运行此映射(当我们返回带有a的插入模式时),则光标不会放回到正确的位置. 我正在尝试寻找这个特定问题的解决方案,但我也想知道你是否确实可以在Vim键映射中添加条件. 谢谢! 解决方法
您的一般问题的答案是:是的,映射可以包含条件逻辑.您可以通过几种方式完成此操作,最简单的方法是使用< expr>映射.这是vim wiki的一个例子:
inoremap <expr> <Esc> pumvisible() ? "&;C-e>" : "&;Esc>" 此示例有条件地将Esc映射到C-e或Esc,具体取决于pumvisible()函数是否返回true或false值.在您的情况下,您需要找到(或定义)一个表达式,该表达式确定光标在该行的位置. 另一个选择是只编写一个包含所有逻辑的函数,并将键映射到该函数而不是表达式. 在您的具体情况下,这一切都不是必需的.只需替换< Esc>在与< C-o>的映射中,并删除尾随a或i. imap <F1> <C-o>:syntax sync fromstart<CR> 在插入模式下,C-o允许您运行一个普通模式命令,然后返回插入模式.由于普通模式命令不会移动光标,因此您应该返回到已启动的插入模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 复选框为false时禁用单选按钮Angular 2
- Angular 2的12个经典面试问题汇总(文末附带Angular测试)
- scala – 字符串插值,转义引号
- 是否可以使用’yield’来生成’Iterator’而不是Scala中的列
- Bootstrap+BootstrapValidator+Mybatis实现通用单字段验证V
- 解析 – Scala 2.9中的错误或奇怪的行为
- bash – 确定Mac中终端中的多个系统变量的值
- twitter-bootstrap – 文本输入内的Twitter Bootstrap下拉
- angularjs – 一个复选框中的ng-change多次触发,因为在它上
- macos – Bootstrap工具提示不会隐藏在最新的Safari 8.0中