vim
テキストを挿入する
サーチ…
挿入モードを終了する
コマンド | 説明 |
---|---|
<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 + cはEscと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行をフィルタリングする |
: r ! c | フィルタ範囲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
押します。