我发现在插入模式下可以执行单个命令并使用Ctrl-O返回插入模式。
在正常模式下插入单个单词的可能性如何?
当然,我可以切换到插入模式,写入单词,转义并返回正常模式。
但是我想知道是否可以映射序列(例如Ctrl-K)而不离开正常模式以在光标位置快速添加单个单词?
我尝试使用提示来映射一个函数(参见question 11567596 - Ingo Karkat的答案 - 和Wikia提示1616)但是失败了:这个词被附加在行的末尾... < / p>
答案 0 :(得分:2)
我最好的建议是采用插入模式;它是 vi方式 TM 。
说真的,我也有创建映射的想法,这些映射允许我输入一个单词/句子/其他,然后自动返回正常模式。但...
无论您使用romainl的答案中的input()
还是更精细的方法(例如使用CursorMovedI
挂钩),您都必须按 Enter 或其他表明你已经完成的关键。这并不比按 Esc 以正常方式退出插入模式更好!
你只是让事情变得更复杂:你为它花费了宝贵的(短的)关键序列,你必须花费大脑周期来决定两种方法,你的肌肉记忆必须学会输入文字的方法,以及这些特殊的在其他vi模式中不可用(例如在Bash中)。
所以,我觉得这不值得。
答案 1 :(得分:1)
此简单功能在此处起作用:
function! InsertWord()
let l:user_word = input("Type something then hit ENTER: ")
execute "normal i".l:user_word
endfunction
command! InsertWord call InsertWord()
nnoremap <C-k> :InsertWord<CR>
尽管如此,整件事情可能会缩短为单线,但我喜欢这样。