2016-07-08 5 views
1

ビジュアルブロック選択を実行する前に、のビジュアルブロックを実行する前にvirtualedit=blockを設定してからオフにする方法を探していました。1つのコマンドだけのオプションを設定する

私のワークフローには、動作が必要なものはほとんどありません。私はいくつかの研究の後に何も見つかりませんでした。だから今私は私の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 

またはコマンドを連結することができます。

+0

私は作成機能について考えました。しかし、この関数は最初の例のようには機能しません。 –

+0

@SardorbekImomalievはい、それは 'endfunction'であるべきです。 ;-) – Kent

関連する問題