在vim,如果我从命令行执行以下操作
:normal! i
Run Code Online (Sandbox Code Playgroud)
vim不进入插入模式.同样的命令
:normal! A
Run Code Online (Sandbox Code Playgroud)
将光标移动到行尾,但光标仍处于插入模式.
任何想法为什么这不起作用?如果不这样,我想知道从vimscript函数的主体进入插入模式的另一种方法(并且当函数返回后,插入模式仍然存在).
编辑:看起来:startinsert会填满问题的第二部分,但我仍然想知道我怎么能做类似的事情:normal! A,:normal! a以及为什么那些不能简单地按预期工作.用箭头运动模拟"附加"是一个糟糕的解决方案,因为像空行等等.
Tho*_*hor 29
普通命令认为以插入模式结束为不完整命令并中止.来自help normal:
{commands}应该是一个完整的命令.如果{commands}未完成命令,则最后一个命令将被中止,就像 输入
<Esc>或<C-C>输入一样.":normal"忙时,显示不会更新.这意味着必须完成一个insert命令(要启动Insert模式,请参阅:startinsert)
:startinsert 可能是你正在寻找的命令.
:normal A可以通过附加一个bang(!)来实现startinsert,正如Ingo Karkat所建议的那样.来自help startinsert:
当...的时候 !包含它的工作方式像"A",附加到该行.
ZyX*_*ZyX 16
除了已经提到的,startinsert您还可以使用feedkeys():
call feedkeys('A', 'n')
Run Code Online (Sandbox Code Playgroud)
你会做你想做的事情,但是这种方式添加的密钥只有在执行当前脚本/功能/映射/等完成后才会被处理.
| 归档时间: |
|
| 查看次数: |
7317 次 |
| 最近记录: |