1

挿入モードで 1 つのコマンドを実行し、Ctrl-O を使用して挿入モードに戻ることができることを発見しました。

通常モードで単一の単語を挿入する可能性についてはどうですか?

もちろん、挿入モードに切り替えて単語を書き、エスケープして通常モードに戻ることもできます。

しかし、シーケンス (Ctrl-K など) をマップして、通常モードを終了せずにカーソル位置に単一の単語をすばやく追加できるかどうか疑問に思いました。

関数をプロンプトでマッピングしようとしました (cf. question 11567596 - Ingo Karkat の回答 - および Wikia のヒント 1616 を参照) が失敗しました: 単語が行末に追加されました...

4

2 に答える 2

3

私の最善のアドバイスは、挿入モードを採用することです。それはvi 方法 TMです。

まじめな話、単語や文などを入力して、自動的に通常モードに戻るマッピングを作成するというアイデアもありました。しかし...

  1. Romainl の回答からの回答を使用する場合input()でも、より複雑なアプローチ (CursorMovedIフックなどを使用する場合)を使用する場合でも、Enterまたは別のキーを押して、完了したことを示す必要があります。Escこれは、通常の方法で挿入モードを終了するために を押すことに勝るものはありません!

  2. 物事をより複雑にするだけです: 貴重な (短い) キー シーケンスを費やす必要があり、両方のアプローチを決定するために脳のサイクルを費やす必要があります。 vi モード (例: Bash)。

だから、それだけの価値はないと思います。

于 2012-09-19T17:24:35.903 に答える
1

この単純な関数は次のように機能します。

function! InsertWord()
  let l:user_word = input("Type something then hit ENTER: ")
  execute "normal i".l:user_word
endfunction

command! InsertWord call InsertWord()

nnoremap <C-k> :InsertWord<CR>

全体はおそらくワンライナーに短縮できますが、私はそれが好きです.

于 2012-09-19T13:41:02.623 に答える