-1

ソースコード:

function! myfunc()
    execute "normal! i\<c-r>=12+34\<cr>"
endfunc

inoremap <silent><Tab> <C-R>=myfunc()<CR>

.vimrcに上記のコードがあります。つまり<tab>、挿入モードで入力すると、46が追加されます。たとえば、新しいファイルを開き、「hello」(ここでは二重引用符なし)と入力して、<tab>キーを押します。結果は「hello46」になります。そうではありませんが。なぜ?

4

1 に答える 1

1

これは、簡単な計算を行う方法です。

execute "normal! i" . (12 + 34)

ただし、次のフォームを使用できます。

inoremap <expr> <tab> 12 + 34

編集

エラー:

  1. 関数名は大文字で始める必要があります。
  2. <C-r>=式の結果を挿入するために使用されますが、関数は何も返しません。代わりに通常モードのコマンドを実行します。

このバージョンのスニペットは機能します。<C-r>=この関数は、マッピングに挿入できるものを返します。

function! MyFunc()
  let myvar = "foo"
  return myvar
endfunc

inoremap <silent> <Tab> <C-r>=MyFunc()<CR>
于 2013-02-22T07:43:11.993 に答える