2016-07-08 55 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

相关问题