2013-08-17 48 views
0

正如我們所知,你不能Vim的:與冒號命令「一」在正常模式下

:exec "normal [iIaAs]" 

的唯一途徑進入插入模式,我知道從冒號命令進入插入模式是

:startinsert[!] 

雖然:startinsert表現得像'我'和:startinsert!像一個'。但我怎樣才能得到'一個'? 您不能使用

:exec "normal l" 
:startinsert 

因爲它在行結束時不起作用。

回答

1

這個片斷:

function! Append() 
    startinsert 
    normal! l 
endfunction 

nmap <F6> :call Append()<CR> 

使得<F6>工作像a

外部的腳本,你必須做到:

:startinsert 
<C-o> 
:normal l 

注意execute是必要的前提是你做,你要執行的命令的一些插值或級聯。

execute "normal a" 

是沒有意義的,但

execute "normal a" . my_variable 

是正確的。

+0

我試過'startinsert和正常! l',但插入位置不能到達行尾。我徘徊,如果有一些修復? –

+0

你應該解釋你想做什麼(一個腳本?批量編輯命令?別的?):一個簡單的':startinsert!'顯然可以解決你的「行尾」問題。 – romainl

+0

請讓我的新vimscript。但是,我怎樣才能確定光標的位置是否在行尾(在腳本中)。 –

1

確實feedkeys函數的幫助?

例如

:call feedkeys('a','n') 
+0

現在我用'imap l:調用feedkeys('a','n')'。如果我在行末輸入,vim退出插入模式但不保持靜止。我該如何解決它? –

+0

@RealYang爲什麼你需要,如果你已經在插入模式?你可以按'right'或'C-o l' – Kent

+0

嗯,我正在編寫一個腳本來自動完成括號,我想要一個快速的方法來跳過右括號。如果「)」在行尾,則「C-O l」不起作用。此外,我認爲'C-O l'和'right'很慢。 –

相關問題