2012-09-19 63 views
1

我發現可以在插入模式下執行單個命令並使用Ctrl-O返回插入模式。在正常模式下插入一個字與插入模式下執行命令相比

在正常模式下插入單個詞的可能性如何?

當然,我可以切換到插入模式,寫入單詞,轉義並返回到正常模式。

但我想知道是否可以映射一個序列(例如Ctrl-K)允許不離開正常模式在光標位置快速添加一個單詞?

我試圖映射功能與提示(參見question 11567596 - 英戈Karkat的答案 - 和Wikia尖端1616),但沒有成功這個詞被附加在該行的結束......

回答

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> 

雖然,整個事情可能被縮短爲一行,但我喜歡這樣。

+0

它完美的作品。非常感謝。 – ThG

2

我最好的建議是接受插入模式;這是vi方式TM

說真的,我也有創建映射的想法,允許我輸入一個單詞/句子/任何,然後自動返回到正常模式。但是......

  1. 無論您是使用input()從romainl的答案,或更復雜的方法(例如用CursorMovedI鉤),你必須按輸入或其他鍵表示即大功告成。這不比按Esc離開插入模式正常的方式!

  2. 你只是讓事情變得更加複雜:你花費寶貴的(短)鍵序列,你必須花費腦循環來決定兩種方法之間的決定,你的肌肉記憶必須學會輸入文本的方式,在其他vi模式下可用(例如在Bash中)。

所以,我認爲這是不值得的。

+0

我將此作爲訓練練習。我其實完全同意你的看法。 – romainl

+0

@Ingo Karkat:當然,我知道你們倆都是對的(我希望這不是一種「不適合」的情況)......)。但1)我想嘗試它作爲一個概念證明(我希望這是一個足夠的術語)2)我已經開始在Android上使用VimTouch(帶有JB的Galaxy Nexus)以及任何允許我不能從正常來回移動的東西模式在一個擁擠的屏幕是受歡迎的3)我只寫純文本,並將使用 - 作爲正常模式是爲了 - 精細修剪我的文本。所以你的答案既明智又有幫助。 – ThG

相關問題