2016-07-08 56 views
1

我正在尋找一種方法來設置virtualedit=block,然後執行可視塊選擇並附加綁定g<C-v>,然後將其關閉。僅爲一個命令設置選項

我的工作流程中有幾件事情需要這種行爲。經過一番調查,我沒有找到任何東西。所以目前我在我的vimrc中有這個。

nnoremap g<C-v> :setl virtualedit=block<CR><C-v> 
nnoremap <C-v> :setl virtualedit=<CR><C-v> 

另一個例子是禁用incsearch自定義命令

nnoremap <silent> K :setl nois<CR>:grep! "\b<C-R><C-W>\b"<CR>:setl is<CR> 

所以我的問題是,是否有正確的或者只是比我想出了辦法只有一個命令和設置選項的一個更好在命令完成後切換回去?

更新 這裏是舉例爲理念代碼@Kent建議

function! Example() 
    let &l:virtualedit="block" 
    exe "normal \<C-v>" 
    let &l:virtualedit="" 
endfunction 

但這種方式不適合的情況下比如在第一個例子中的工作去

回答

3

一種方法是在功能包,並讓你的映射調用函數:

function! Example() 
    let &option="whatever" 
    logic ... 
    let &option="whatever else" 
endfunction 

或者你可以連接命令:setlocal .. | command | setlocal ...

+0

我想過創建函數。但是這個函數不適用於第一個例子中的情況。 –

+0

@SardorbekImomaliev是的,它應該是'endfunction'。 ;-) – Kent

相關問題