2011-07-01 18 views
68

で私はどちらか使用できることを知っていながら:移動挿入モード

  1. ホーム挿入モードで
  2. Escキー + 私は挿入モードを終了し、それを入力する再び、効果的に行の先頭に行く。

しかしどちらも私を満たしていません。私が盲目的にそれを打つことができないので、最初のケースでは、私はホームを打つ私の頭を傾ける必要があります。 2番目のケースでは、私の左腕は家庭の列を離れてEscにぶつからなければならず、これも面倒です。

どのような考えですか?

+5

0を使用して行の先頭に移動できますが、挿入モードではありません。 – manku

+2

Escを見つけたら、Ctrl- [代わりに:) –

+1

を使うこともできますし、Ctrl-CはEscのように機能します。または、Caps LockをEscにマップしてください。 –

答えて

121

Ctrl + 一方、挿入モードでは、1つのキー・プレスだけのコマンド・モードになります。したがってはCtrl +Oその後、Shiftキー + あなたが探しているものを達成すべきです。

+0

Ctrl + c、IまたはCtrl + [、Iを押すことで同じことを達成できます。Ctrl + cは機能的にはESCに似ていますが、Ctrl + [ESCと同じです。 – sml

+34

または 'Ctrl-o'の後ろに' 0'が付いています( 'Ctrl-o'と' Shift-I'よりも少し効率的です)、自動的に挿入モードに戻ります。場合によっては 'Ctrl-o'の後に'^'をつけたほうが良いでしょう(行の最初の空白以外の文字に移動する)。 – Jeet

+2

あなたのAltキーが – Rivenfall

1

アクションのあなたの最高のコースは別のキーにアクションを再マッピングすることである(アイデアをHow to remap <Ctrl-Home> to go to first line in file?を参照)

私は、この「機能」を使用する頻度を考えるとaccordinlyキーストロークに

それをマッピングしたいです
40

I(大文字のi)を使用して挿入モードを入力できます。

これは、行の先頭にカーソルを置きます。

同様に、Aを使用して、行末に何かを追加することができます。

ただし、既に挿入モードになっている間は移動の問題は解決しません。

私はちょうど挿入モードでヘルプをチェックしました。挿入モードでは、行の先頭に移動するキーの組み合わせはありません。

その他のアイデア:あなたはMacOSのターミナル環境設定に行く...> [設定]> [キーボードとCtrl-Oに終了キーをマップを使用している場合のみ、挿入モードで

inoremap <C-i> <Home>

+1

T. Iはうまく動作しますが、すでに挿入モードになっている間に行頭に移動するソリューションを探しています。 – Valentin

+0

これは直接質問には答えませんが、おそらくほとんどの人に質問を先取りする機能を提供します。 –

3

を新しいコマンドを再マップ $(\ 017 $と表示されます)、fn + leftを使用して終了キーをシミュレートします。ホームキーについても同じ操作を行います。エスケープシーケンス\ 033 [Hは家庭でも動作します。

+0

fn-leftとfn-右はMac端末のvimで私のために働いた – Jeff

17

私はCtrl + aとCtrl + eをそれぞれ行の先頭と末尾にマッピングしています。これは、ほとんどのbashコマンドラインの動作と一致します。私のためにうまくいく。

inoremap <C-e> <Esc>A 
inoremap <C-a> <Esc>I 
+0

もし私が間違っていないなら、これらは他の多くのエディタのキーバインディングでもあります。これらを私のvimrcファイルに追加します。 – Aaron

+2

これは通常のEmacsの振る舞いです。ほとんどのブラウザは、さまざまな種類のテキストフィールドでこれらをサポートしています。 ''は、カーソルの下の文字をコピー/書き込み(カーソルの上には '')、あなたの。レジスタにあるものは ' 'のものをコピー/書き込みします。これは悪い考えではないと思います。 (ドットレジスタ)。その登録簿は、あなたが入力モードを離れるときに(たとえCtrl-cを使用していても(多くの理由で慣れるべきではない))入力したものでいっぱいになります。 –

+0

@Jonathan Cutrellあなたは新しい行の始めにどうやって行きますか? – sayth

0

私のために働いていたショートカット(筋肉の記憶と直感両方)__をマッピングすることである(ありますa double double _)を "現在の行の先頭に挿入"する。

理由:

  • _すでに何かを2倍にする競合こと
  • ダブル_「この行に」やっての非常に一般的な方法はありませんで、vimの中
  • 行の先頭に行きますどんな動きでも(あなたは既にラインの始めにいる)
  • あなたがラインの始めに行って、今挿入したい場合、あなたの手は既に適切な場所にあります。

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の原因となるので、それはこの複雑です。