サーチ…


はじめに - 通常モードのクイックノート

ノーマルモードでは、ダイレクトキーの組み合わせでコマンドを入力することができます(たとえば、最後の変更を元に戻すにはuを入力します)。これらのコマンドはしばしば 'ex'モードに相当するものを持っています。これはコロン:を入力するとアクセスでき、Vimウィンドウの一番下にある単一行のバッファに移動します。

'ex'モードでは、コロンを入力した後、コマンド名またはその省略形を入力してからコマンドを実行します。したがって、 undo Enterは、通常モードでuと直接入力するのと同じことを実現します。

ダイレクトコマンドは、簡単な編集のための 'ex'コマンドよりも速い(一度学習された)ことがよくありますが、完全性のために、可能な限り次のドキュメントで使用できれば両方が表示されます。

これらのコマンドのほとんどは、数字を前置するか、散在させることでカウントを先行させることもできます。 たとえば 、通常モードで3ddと入力すると、現在のカーソル位置から始まる3行が削除されます。

基本的な取り消しとやり直し

元に戻す

コマンド 説明
あなた uundo 直近の変更を元に戻す
5u 最新の5つの変更を元に戻す(任意の番号を使用)

Vimでは、「最近の変更」は現在のモードによって異なります。挿入モード( i )に入って、段落全体をタイプしてからノーマルモード( Esc )に戻すと、段落全体が次のようになります。直近の変更を考慮した。

やり直し

コマンド 説明
Ctrl-R redredo 最新の元に戻された変更をやり直してください
2Ctrl-R 2つの最新のやり直しの変更をやり直してください(任意の番号を使用してください)

Vimの変更を元に戻したりやり直したりするもう1つの方法があります。これは少し違った方法で処理されます。 uを使って変更を元に戻すと、変更のツリー上のノードをトラバースし、 Ctrl-Rを押すとそのノードを順番に戻します。 (元に戻すツリーは別のトピックであり、複雑すぎてここでは扱いません)。

またU (大文字)を使用して、1行(最後の変更が行われた行)の最新の変更をすべて削除することできます。これuと同じ方法でツリーのノードをトラバースしません 。あなたが最初の直後にUをもう一度押すと、それはやり直しコマンドとして動作するように-木の上の前方の別のノード-使用Uは 、実際に変更自体としてカウントされます。

それぞれには用途がありますが、 u / undoは最も単純なケースをカバーする必要があります。

前回の変更を繰り返す

ドットまたはピリオドキー( )で実行される繰り返しコマンドは、最初に表示されるよりも便利です。一度学ばれると、頻繁にそれを使用して自分自身を見つけるでしょう。

コマンド 説明
最後の変更を繰り返します。
10。 最後の変更を10回繰り返します。

したがって、非常に簡単な例として、 i I Escと入力して行1に変更を加えた場合、次の結果が得られます。

1 I made a mistake
2  made a mistake
3  made a mistake

カーソルは1行目の位置1にあり、次の2行目を修正するために必要なのはjを押すことだけです。 2回 - つまり、 jを行の下に移動する最後の変更を繰り返すことは、 I追加であった。これらの行を修正するために、挿入モードに2回ジャンプする必要はありません。

マクロを繰り返し使用すると、はるかに強力になります

コピー、カット、ペースト

Vimでは、これらの操作は、他のほとんどの最新のエディタやワープロ( Ctrl-CCtrl-XCtrl-V )で使用されていた操作とは異なります。理解するためには、レジスタやモーションについて少し知っておく必要があります。

注:このセクションでは、ノーマルモードと基本編集の両方の範囲を超えているため、ビジュアルモードのコピーとカッティングまたは範囲ヤンクスについては扱いません。

レジスタ

Vimはレジスタという概念を使用して、プログラム自体の中で動くテキストを扱います。 Windowsはこの目的のために単一のクリップボードを持っています。これはVimの単一のレジスタに似ています。 Vimでコピー、カット、貼り付けをするときには、同様のシンプルな編集ワークフロー(レジスタについて考える必要がない)を使う方法もありますが、もっと複雑な可能性もあります。

レジスタは、コマンドの前に"と小文字の英字を付けてコマンドの入出力を対象とする。

動き

Vimでの動きは、カーソルの位置を他の場所に移動させるコマンドです。ノーマルモードでコピー、切り取り、貼り付けを行う場合、移動のためのテキスト選択の可能性は、モーションの知識だけで制限されます。以下にいくつかを示します。

コピー&カット

コピーとカットの基本的なコマンドは、 y (コピーの場合は 'yank')、カットの場合はd ( 'delete')です。次の表に類似点があります。

コマンド 説明
y {モーション} モーションによって示されたテキストをデフォルトのレジスタにコピーする( 'yank')
yy デフォルトのレジスタに現在の行をコピーし、 は行単位
Y 現在の行をデフォルトのレジスタにコピーする( yyの同義語)
"ayiw カーソルがある単語をレジスタ 'a'にコピーします。
20インチ カーソルから始めて20行をレジスタ 'b'にコピーします。
d {モーション} モーションによって示されたテキストをデフォルトのレジスタにカット( 'delete')する
DD 行単位 、デフォルトのレジスタに現在の行をカット
D カーソルから行末までをデフォルトのレジスタに切ります( ddの同義語ではありません)
"adiw カーソルが登録されている単語を「a」レジスタに切り取ります。
20 "bdd カーソルから始めて20行をレジスタ 'b'に分けます。

注意:何かがコピーまたはは行単位を切断する際に、以下に示すペーストの挙動は(というよりも、カーソル)現在のの前または後にテキストを配置します。例は明確にするために続く。

ペースト

あなたが達成しようとしていることに応じて、Vimに貼り付けるいくつかの方法があります。

コマンド 説明
p カーソルの後にデフォルトのレジスタあるものを貼り付けます。
P カーソルの前にデフォルトのレジスタあるものを貼り付けます。
"ap カーソルの後にレジスタ 'a'の内容を貼り付けます
"cP カーソルの前にレジスタ 'c'の内容を貼り付けます

では、本当にシンプルなカットとペーストをどのように実行しますか?

私は次のテキストがある場合:

1 This line should be second
2 This line should be first

私はカーソルを1行目のどこかに置き、 ddpと入力することで最も単純な切り取りと貼り付けを行うことができます。結果は次のとおりです。

1 This line should be first
2 This line should be second

何が起こった? dd Windowsのクリップボードのように、一度に1つのものだけを含むデフォルトのレジスタに最初の行(行単位)を 'Cuts'します。そして、 pは現在の行の後にddコマンドによって変更された行を貼り付けます。

単純な例ではありません。私は周りの単語を移動する必要があります。 (これは不自然な作業ですが、この原則をより大きなコードに適用することができます)。

1 These words order out are of

私は 'order'の前に 'o'をつけてwを繰り返すことができます(または単に入力して間違いを認識した場合はb )。

それから、 "a 'に' order 'を入れてください。

それから、「ある」の「a」に行くw

これに続いて、 「bdawを 'b'を 'b'に入れる」とタイプすると、これが表示されます:

1 These words out of

明確にするため、2つの別々のクリップボードのように、 'order'はレジスタ 'a'にあり 'are'はレジスタ 'b'にあります。

単語を正しく配置するには、 bを入力して 'out'に 'o'を入力し、 ' bp 'は 'out'の前にレジスタ 'b'から 'put'します。

1 These words are out of

今度は、 スペースの Esc ( 'of'の後ろに空白がないことを前提とします )と「ap 」がそれが属するところに「order」を置くために、行の最後にAをタイプします。

1 These words are out of order

完了

補完は、文書で使用されている単語の一致に使用できます。単語を入力するとき、 Ctrl pまたはCtrl nは、文書内の前または次の類似単語と一致します。

これはCtrl-Xモードと組み合わせて行全体を完成させることさえできます。たとえば、次のように入力します。

This is an example sentence.

次の行に行き、同じ文章を入力し始めます:

Thi

Ctrl P押すと次のようになります:

This

まだインサートモードでCtrl + Ctrl + P押すと、次の単語が完成します:

This is

行全体が完了するまでは、Ctrl P X CTRLを押す続行。

行全体を完成させたい場合は、次のように入力します:

This is an example sentence.

次の行に次のように入力します。

Thi

x Ctrl lを押して行を完成させます。

完了するのがファイル名である場合、 Ctrl x Ctrl fを使用してそのディレクトリを完成させることができます。タイプ:

~/Deskt

Ctrl + Ctrl + f キーを 押して:

~/Desktop

その場所にいる場合は完了します。 Ctrl x Ctrl fを繰り返し使用して、デスクトップにファイルをリストすることができます。



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