サーチ…


挿入モードを終了する

コマンド説明
<Esc> 挿入モードを終了し、オートコマンドと略語をトリガする
<C-[> <Esc>正確な同義語
<Cc> 挿入モードを残し、オートコマンドをトリガーしません

いくつかの人々は、 <Esc><C-[>ショートカットとしてjkような比較的珍しい文字のペアを使用して、一部のキーボードでは手が届きにくい:

inoremap jk <Esc>l

挿入モードに入るさまざまな方法

コマンド説明
a 現在のカーソル位置に続くテキストを追加する
A 現在の行の最後にテキストを追加する
i 現在のカーソル位置の前にテキストを挿入する
I 現在の行の最初の空白以外の文字の前にテキストを挿入する
gI カーソルラインの最初の列にテキストを挿入する
gi 挿入モードで前回と同じ位置にテキストを挿入する
O 現在の行の上に新しい行を開き、そこにテキストを追加する(大文字のO
o 現在の行の下に新しい行を開き、そこにテキストを追加します(小文字のo
sまたはcl カーソルの下にある文字を削除し、挿入モードに切り替えます
Sまたはcc 行全体を削除し、挿入モードに切り替えます
C カーソル位置から行末までを削除し、挿入モードを開始する
c{motion} {motion}を削除して挿入モードを開始する( 基本モーションを参照)

挿入モードのショートカット

コマンド説明
<Cw> カーソルの前に単語を削除する
<Ct> 1つのshiftwidth現在の行をインデントする
<Cd> 1つのshiftwidth幅で現在の行のshiftwidth
<Cf> カーソルを自動字下げ位置に移動して、行を再インデントします。
<Ca> 以前に挿入されたテキストを挿入する
<Ce> 下の文字を挿入する
<Ch> 1文字後ろに削除
<Cy> 上の文字を挿入する
<Cr>{register} {register}内容を挿入します{register}
<Co>{normal mode command} 挿入モードを離さずに{normal mode command}を実行する
<Cn> 現在の単語の次のオートコンプリートオプション
<Cp> 以前の単語の自動補完オプション
<Cv> ASCII値で10進数で文字を挿入する
<Cv>x ASCII値で16進数で文字を挿入する
<Cv>u ユニコード値で16進数で文字を挿入する
<Ck> 有向グラフを入力

挿入モードから通常のコマンドを実行する

インサートモード中に<Co>を押すと、一時的にインサートモードを終了し、一回限りのノーマルコマンドを実行します。

<Co>2wは2番目の単語にジャンプし、挿入モードに戻ります。

注:を繰り返してください.挿入モードに戻るのを繰り返すだけです

これにより、いくつかの便利なマッピングが可能になります。

inoremap <C-f> <Right>
inoremap <C-b> <Left>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$

今、ctrl + aは行の先頭にカーソルを置き、ctrl + e - は行末に移動します。これらのマッピングは、デフォルトでreadlineで使用されるため、一貫性が必要な人には便利です。

一度に複数の行にテキストを挿入する

Ctrl + v キーを押してビジュアルブロックモードに入ります。

複数の行を選択するには / / j / kを使います。

Shift + iを押して、必要なものを入力し始めます。

Escを押すと、選択したすべての行にテキストが挿入されます。

Ctrl + cEscと100% 一致しないため、この状況では機能しません。

ビジュアルブロックモードで押すことができるShift + iのわずかなバリエーションがあります:

キー説明
cまたはs 選択したブロックを削除して挿入モードにする
C 選択した行を削除し(カーソルから最後まで)、挿入モードに入ります
R 選択した行を削除して挿入モードにする
A 選択された行に追加します。最初の行の最後に列が追加されます。

また、押すことに注意してくださいビジュアルブロック操作の後にカーソルが!

端末の「貼り付け」コマンドを使用してテキストを貼り付ける

ターミナルエミュレータプログラムからpasteコマンドを使用すると、Vimは入力されたものと同じように文字ストリームを解釈します。それはあらゆる種類の望ましくない影響、特に悪い指摘を引き起こします。

それを修正するには、コマンドモードから:

:set paste

次に、挿入モードに移行します。たとえば、 iと入力します。今はモードが-- INSERT (paste) --注意してください。ターミナルエミュレータコマンドまたはマウスで貼り付けます。終了したらコマンドモードに進み、 Esc押して次のコマンドを実行します。

:set nopaste

1回だけ貼り付けたい場合は、より簡単な方法があります。これをあなたの.vimrcに入れてください(または、プラグインunimpaired.vimを使用してください):

function! s:setup_paste() abort
  set paste
  augroup unimpaired_paste
    autocmd!
    autocmd InsertLeave *
      \ set nopaste |
      \ autocmd! unimpaired_paste
  augroup end
endfunction

nnoremap <silent> yo :call <SID>setup_paste()<CR>o
nnoremap <silent> yO :call <SID>setup_paste()<CR>O

今、一つは単純に押すことができますyoカーソルの下のコードを貼り付け、その後、 <Esc>正常に戻っ/ nopasteモードに行くことに。

挿入モード中にレジスタからのペースト

挿入モードでは、 <Cr>を使用して、次のキーストロークで指定されたレジスタから貼り付けることができます。 <Cr>" 、名前のない( " )レジスタからのペーストなどがあります。

参照:help registers

高度な挿入コマンドとショートカット

高度な挿入、書式設定、およびフィルタコマンド/ショートカットのクイックリファレンスです。

コマンド/ショートカット 結果
g +? + m 移動mで rot13エンコーディングを実行する
n + ctrl + a + nはカーソルの下の数字に
n + ctrl + x - カーソルの下の数字にn
g + q + m 移動行mを固定幅に設定する
r ce w 範囲r〜wの中心線
r i 範囲rの行をインデントiで左揃えにする
r ri w 範囲rの行を幅wに右揃え
mc コマンドCを介して移動mのフィルタライン
n !! c コマンドcで n行をフィルタリングする
rc フィルタ範囲r行をコマンドcに渡す

自動インデントを無効にしてコードを貼り付ける

自動インデント機能 、ターミナルエミュレータからテキストを貼り付けるときに、貼り付けられたテキストのインデントを破棄することがあります。

例えば:

function () {
    echo 'foo'
    echo 'bar'
    echo 'baz'
}

貼り付けられる:

function () {
    echo 'foo'
        echo 'bar'
            echo 'baz'
            }

このような場合は、 paste / nopasteオプションを使用して自動インデント機能を無効/有効にします。

:set paste
:set nopaste

これに加えて、問題へのより簡単なアプローチがあります:.vimrcに次の行を追加してください:

set pastetoggle=<F3>

クリップボードからそのまま貼り付ける場合。 insertモードでF3を押すだけで貼り付けられます。 pasteモードを終了するには、もう一度F3押します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow