今日、Vim を 7.3 から 7.4 にアップグレードしました。ただし、以下の関数 は機能CleverTab()
しないようです。(アップデートのせいかどうかはわかりません。)
function! CleverTab()
if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
return "\<Tab>"
endif
if pumvisible()
return "\<C-N>"
endif
return "hello"
endfunction
inoremap <silent><tab> <C-R>=CleverTab()<CR>
この関数の目的は、Tabが押されたときの現在の状態に応じて異なることを行うことです。
- 現在の行がスペースで埋められている場合は、タブを追加してください。
- ポップアップ メニューが表示された場合は、下に移動します。
- それ以外の場合は、文字列「hello」を追加します。
(正直なところ、シナリオ 3 でやりたいことは、別の関数を呼び出すことです。しかし、問題を簡単にするために、その場合は文字列を表示しようとしています。)
Vim でファイルを編集していて、文字列「123」を入力したとします (たとえば)。現時点では、 を押すTabと、実際の結果は a<tab>
が追加されます。予想される結果は、フローが条件 3 に進み、文字列「hello」を追加することです。私は今日の午後をそれに費やしました。
それで、誰かがそれを理解するのを手伝ってくれますか?感謝!