2016-10-30 16 views
0

私はctrlpのようなvim用のプラグインを作成しようとしています。私はいくつかの助けが必要です。まず、私は挿入モードを残さずに関数を呼び出す方法は?

  1. ので、画面の上部にある入力フィールドを配置したいすべての上部にある入力フィールドを配置することができますinput()が、同様の機能はありますか?

私はすでに自分の入力フィールドを実現し始めており、テキストの編集中に問題があります。私はbackspaceオプションがプロンプトテキスト( "ファイル>")の削除を防ぐのに非常に便利であることを発見しました。私はこのテキストをバッファに入れ、挿入モードを開始します。私はバッファを制御する複雑なロジックを持っているので、私はこのオプションを使うことができず、関数を呼び出すためには必ずインサートモードを終了する必要があります。代わりにbackspaceの私は、これは動作しますが、私を乱すカーソルの点滅があるこの<C-o>:call backspace()<CR>

function backspace() 
    " checks if deletion is possible 
    x 
endfunction 

のようなものに<BS>を再マップする必要があります。挿入モードでは、バッファが変更され、tablineに*印が付きます。それはcall setbufvar(bufnr('%'), '&mod', 0)で隠れることができますが、それはかなり遅く動作し、時々シンボルが現れます。私はこのためにTextChangedIイベントを使用します。

  1. 監視バッファの変更を無効にするオプションはありますか?

最も重要なのは、挿入モードでの自由度の向上です。このモードを離れることなく機能を呼び出す方法はありますか?

答えて

1
  1. input()に似た機能がありますが、入力フィールドを上に置くことはできますか?

    いいえ。コマンドラインは最下部にあり、何もできません。

  2. 監視バッファの変更を無効にするオプションはありますか?

    はい。最後の段落:help 'modified'を参照してください。

+0

「buftype」をありがとうございます。可能な限り簡単です。どのようにカーソルの点滅を防ぐためにどのような考えですか? – Evgeniy

+0

「カーソルが点滅している」という意味がわかりません。 – romainl

+0

英語は母国語ではないかもしれませんが、多分私は "カーソルが点滅"しているはずです。 1時間のデバッグの後、私はその理由を見つけました。私が関数を呼び出すと、カーソルを隠すexモードに行きます。 – Evgeniy

関連する問題