Vim:对应于“";a「;在正常模式下

Vim:对应于“";a「;在正常模式下,vim,Vim,正如我们所知,您不能通过以下方式进入插入模式: :exec "normal [iIaAs]" 我知道从冒号命令进入插入模式的唯一方法是 :startinsert[!] 而:startinsert的性能类似于“i”和:startinsert!像“A”。但我怎样才能得到“a”? 你不能用 :exec "normal l" :startinsert 因为它在行尾不起作用。feedkeys功能有帮助吗 e、 g 这个片段: function! Append() startinsert no

正如我们所知,您不能通过以下方式进入插入模式:

:exec "normal [iIaAs]"
我知道从冒号命令进入插入模式的唯一方法是

:startinsert[!]
而:startinsert的性能类似于“i”和:startinsert!像“A”。但我怎样才能得到“a”? 你不能用

:exec "normal l"
:startinsert

因为它在行尾不起作用。

feedkeys功能有帮助吗

e、 g

这个片段:

function! Append()
  startinsert
  normal! l
endfunction

nmap <F6> :call Append()<CR>
请注意,
execute
仅当您在要执行的命令中执行一些插值或串联时才是必需的

execute "normal a"
毫无意义但是

execute "normal a" . my_variable

是正确的。

我已经尝试了“startinsert和normal!”!但插入位置无法到达行的末尾。我想知道是否有一些修复方法?你应该解释一下你想做什么(脚本?批量编辑命令?其他什么?):一个简单的
:startinsert
显然可以解决您的“行尾”问题。但是我如何确定光标的位置是否正好在行尾后面(在脚本中)。将
col(“.”
col($”)-1进行比较。一些背景信息可能会有所帮助。现在我使用“imap l:callfeedkeys('a','n')”。如果我在行尾键入,vim将退出插入模式,但不能保持静止。我怎样才能修复它?@RealYang如果你已经处于插入模式,为什么需要它?您只需按
right
C-O l
即可。我正在编写一个脚本来自动完成括号,我想要一种快速跳过右括号的方法<如果“)”在行尾,则代码>C-O l
不起作用。此外,我认为
C-O-l
right
都很慢。
execute "normal a"
execute "normal a" . my_variable