1

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

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

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

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

我尝试使用提示映射函数(参见问题 11567596 - Ingo Karkat 的答案 - 和 Wikia 提示 1616)但失败了:该词被附加在行尾...

4

2 回答 2

3

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

说真的,我也有创建映射的想法,让我可以输入一个单词/句子/任何东西,然后自动返回正常模式。但...

  1. 无论您使用input()来自 romainl 的答案,还是更复杂的方法(例如使用CursorMovedI钩子),您都必须按Enter或其他键来表示您已完成。这并不比按Esc正常方式离开插入模式更好!

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

所以,我认为这不值得。

于 2012-09-19T17:24:35.903 回答
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>

不过,整个事情可能会缩短为一条直线,但我喜欢这样。

于 2012-09-19T13:41:02.623 回答