1

今日、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が押されたときの現在の状態に応じて異なることを行うことです。

  1. 現在の行がスペースで埋められている場合は、タブを追加してください。
  2. ポップアップ メニューが表示された場合は、下に移動します。
  3. それ以外の場合は、文字列「hello」を追加します。

(正直なところ、シナリオ 3 でやりたいことは、別の関数を呼び出すことです。しかし、問題を簡単にするために、その場合は文字列を表示しようとしています。)

Vim でファイルを編集していて、文字列「123」を入力したとします (たとえば)。現時点では、 を押すTabと、実際の結果は a<tab>が追加されます。予想される結果は、フローが条件 3 に進み、文字列「hello」を追加することです。私は今日の午後をそれに費やしました。

それで、誰かがそれを理解するのを手伝ってくれますか?感謝!

4

1 に答える 1