与在插入模式下执行命令相比,在正常模式下插入一个字

时间:2012-09-19 12:43:31

标签: vim

我发现在插入模式下可以执行单个命令并使用Ctrl-O返回插入模式。

在正常模式下插入单个单词的可能性如何?

当然,我可以切换到插入模式,写入单词,转义并返回正常模式。

但是我想知道是否可以映射序列(例如Ctrl-K)而不离开正常模式以在光标位置快速添加单个单词?

我尝试使用提示来映射一个函数(参见question 11567596 - Ingo Karkat的答案 - 和Wikia提示1616)但是失败了:这个词被附加在行的末尾... < / p>

2 个答案:

答案 0 :(得分:2)

我最好的建议是采用插入模式;它是 vi方式 TM

说真的,我也有创建映射的想法,这些映射允许我输入一个单词/句子/其他,然后自动返回正常模式。但...

  1. 无论您使用romainl的答案中的input()还是更精细的方法(例如使用CursorMovedI挂钩),您都必须按 Enter 或其他表明你已经完成的关键。这并不比按 Esc 以正常方式退出插入模式更好!

  2. 你只是让事情变得更复杂:你为它花费了宝贵的(短的)关键序列,你必须花费大脑周期来决定两种方法,你的肌肉记忆必须学会输入文字的方法,以及这些特殊的在其他vi模式中不可用(例如在Bash中)。

  3. 所以,我觉得这不值得。

答案 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>

尽管如此,整件事情可能会缩短为单线,但我喜欢这样。