2

コンテキストに応じて異なるコマンドを割り当てたい。

私はこのようなことをしようとしています:

if line is empty:
    map x key to y command
else
    map x key to z command
4

2 に答える 2

8

これは通常、<expr>マッピングによって実現されます。

nnoremap <expr>((empty(getline('。')))?('y'):('z'))

NerdCommenterを使用するため、「nore」を使用しないように強制されます。

nmap <expr> empty(getline('.')) ? '' : '\cc'

''「コメントを追加する」とはどういう意味かわからないので、目的のコードに置き換えてください。

于 2012-01-25T17:36:37.247 に答える
5

より良いアプローチは、動作が行の内容に依存する単一の関数を持つことです。そうすれば、別のマッピングを気にする必要はありません。例えば:

function! LineOperation()
    let curline=getline('.')
    if curline =~ '^\s*$'
        " empty line (except for whitespace): perform y command
    else
        " perform z command
    endif
endfunction

次に、目的のキーをマップして、この関数を呼び出します。

nnoremap <silent> x :call LineOperation()<CR>
于 2012-01-25T07:36:30.663 に答える