我有以下幾點:是否可以使用<C-R> =與VIM命令?
map <F6> :SCCompile<cr>
map! <F6> <c-r>=SingleCompile#Compile()<cr>
我想在第二映射使用:SCCompile
過,這可能嗎?
目前我有另一個命令,我真的不想包裝在一個函數調用。我在插入模式下使用<c-r>=
,因爲它不會創建撤銷點,並且除了這個限制外,它一直效果不錯。我試過execute但它不起作用。
我有以下幾點:是否可以使用<C-R> =與VIM命令?
map <F6> :SCCompile<cr>
map! <F6> <c-r>=SingleCompile#Compile()<cr>
我想在第二映射使用:SCCompile
過,這可能嗎?
目前我有另一個命令,我真的不想包裝在一個函數調用。我在插入模式下使用<c-r>=
,因爲它不會創建撤銷點,並且除了這個限制外,它一直效果不錯。我試過execute但它不起作用。
你可以做這樣的事情:
的命令不是簡單:
<c-r>=
<lt>
允許後執行某些鍵在命令行模式下擴展<cr>
而不是在<c-r>=
?:
運營商忽略由feedkeys()
函數返回的值請參閱:help feedkeys()
。
直接使用'
@IngoKarkat在兩種情況下,我都沒有真正看到'
對我來說,':undolist'顯示'N個變化',其中N> 1;另外,'u'逐位刪除輸入的文本。 –
你可以建立在我最近的similar question的答案上。這是完全一樣的問題:像:call
,定製Vim命令不返回任何東西,但<C-R>
需要返回的東西表達:
function! SingleCompileWrapper()
SCCompile
return ''
endfunction
map! <F6> <C-R>=SingleCompileWrapper()<CR>
我真的不想像我說的那樣寫一個包裝。 –
你幾乎總是要使用'的noremap'代替'remap'。如果你使用重映射,有一天你會破壞你的設置。看[這裏](http://learnvimscriptthehardway.stevelosh.com/chapters/05.html)爲什麼。 –
@NielsBom謝謝。 –