私は次のいずれかを使用できることを知っています:
- Home 挿入モード
- Esc+i挿入モードを終了して再度入力し、事実上行頭に移動します。
しかし、どちらも私を満足させません。最初のケースでは、Homeやみくもに打つことができないので、打つために頭を傾ける必要があります。2番目のケースでは、左腕がホームローを離れてヒットEscする必要がありますが、これも面倒です。
何かご意見は?
私は次のいずれかを使用できることを知っています:
しかし、どちらも私を満足させません。最初のケースでは、Homeやみくもに打つことができないので、打つために頭を傾ける必要があります。2番目のケースでは、左腕がホームローを離れてヒットEscする必要がありますが、これも面倒です。
何かご意見は?
回答:
Ctrl+O挿入モードでは、キーを1回押すだけでコマンドモードになります。したがって、Ctrl+O次にShift+Iはあなたが探していることを達成するはずです。
Ctrl-o続く0(少し、より効率的よりCtrl-o続くShift-I)、あなたが挿入モードに戻ってくるように自動的に。場合によっては、Ctrl-oその後に^続ける方がよい場合 があります(行の最初の非空白文字に移動するため)。
<C-O>と同じではない<C-[>か<Esc>、似ているかもしれませんが。違いは、通常のエスケープを使用した編集+ <挿入モードに戻すための何か>では2つの編集が残り、<CO>では1つの編集が残ります。これにより、元に戻す履歴をよりクリーンに維持し、その挿入を再利用して貼り付けることができます。一部のvim'ersは、そのようなものに注意を払うべきだと主張するでしょう。
I(大文字のi)を使用して挿入モードに入ることができます。
行の先頭にカーソルを置きます。
同様にあなたは使用することができます Aに、行の最後に何かを追加。
ただし、すでに挿入モードになっているときに移動する問題は実際には解決されません。
挿入モードのヘルプを確認しましたが、挿入モードで行の先頭に移動するためのキーの組み合わせがありません。
その他のアイデア:挿入モードでのみ新しいコマンドを再マップする
inoremap <C-i> <Home>
Ctrl + aとCtrl + eをそれぞれ行頭と行末にマップしました。これは、ほとんどのbashコマンドラインの動作と一致します。私にとってはうまくいきます。
inoremap <C-e> <Esc>A
inoremap <C-a> <Esc>I
<C-e>カーソルの下の文字をコピー/書き込み(<C-y>カーソルの上)、<C-a>.- register(dot-register)にあるものは何でも挿入します。そのレジスタは、挿入モードを終了すると(Ctrl-cを使用している場合でも(多くの理由で慣れてはいけません))、入力した内容でいっぱいになります。
MacOSターミナルを使用している場合は、[設定...]> [設定]> [キーボード]に移動し、終了キーをCtrl-O $(\ 017 $として表示)にマップしてから、fn + leftを使用して終了キーをシミュレートします。ホームキーについても同じようにします。エスケープシーケンス\ 033 [Hは自宅でも機能します。
アクションの最善の方法は、アクションを別のキーに再マップすることです(アイデアについては、<Ctrl-Home>を再マップしてファイルの最初の行に移動する方法を参照してください)。
この「機能」をどのくらいの頻度で使用し、それに応じてキーストロークにマッピングするかを考えます。
私のために働いたショートカット(筋肉の記憶と直感性の両方)は、マップすることです__(これは二重です_、「現在の行の先頭に挿入」)。
理論的根拠:
_ すでに行頭に行く_はどのモーションとも競合しません(すでに行の先頭にいます)vimscript:
"insert at start of current line by typing in __ (two underscores)
function DoubleUnderscore()
if v:count == 0 && getcurpos()[2] == 1
:silent call feedkeys('I', 'n')
else
:silent call feedkeys('^', v:count + 'n')
endif
endfunction
nnoremap <silent> _ :call DoubleUnderscore()<CR>
簡単な代替ので、それはこの複雑だnnoremap __ _I原因は押しに遅らせるためにVIM_を区別する_と__。
ctrl+o then 0
| |
letter number