vim で編集するとき、引用符で囲まれたものを削除する必要があることがよくあります。これをインターネットで見つけました。似たようなのもありますよ
di(、ci' など、ここの i はどうやって理解できますか?
阿神2017-05-16 16:45:05
i は内部を意味します。vim を参照してください :help object-select
例えばこんな文字列があります"testdfat"
カーソルが最初の t 位置に留まっていると仮定します
di"
:delete all content inside ",结果字符串为""
dta
:delete all content to a
,结果字符串为"at"
dfa
:delete all content from current location, until a
is found,结果字符串为"t"
巴扎黑2017-05-16 16:45:05
d は削除を意味し、i はほぼ in を意味します。組み合わせると、2 つの引用符の間の文字を削除することを意味します。
対応するものは di' di( di d は c に置き換えることもできます。 同様の daw das dap もあります: 単語/文/段落を削除します。
为情所困2017-05-16 16:45:05
このコマンドを理解するには、VIM のいくつかの基本概念を理解する必要があります:
1. 演算子: VIM は、テキストを変更または編集するための多くのコマンド (演算子) を提供します。これらの演算子自体は、d は削除、c は変更などの単なる動作ですが、これらの演算子は、動作しているオブジェクトを認識する必要があります。そのため、テキスト オブジェクトを提供するメソッドが必要です。これらの演算子は、処理するテキスト オブジェクトを受け取る関数と考えることができます。ヘルプドキュメントについては、ヘルプ: オペレーター
を参照してください。
2. text-objects: 名前の通り、これはオペレータに渡されるパラメータです。 VIM には、特別なコマンド a と i (a と i は挿入モードに入りませんか? これについては後で説明します) など、一部のテキストをテキスト オブジェクトとして選択するためのメソッドがいくつか用意されています。ここで i は「内部」を意味します。 'hello, w^orld' など (^ はカーソル位置を表します)、i' は一重引用符内の hello、world、および a' を選択し、a' は一重引用符を含むコンテンツ全体を選択します。詳細な手順については、ドキュメントヘルプ: text-objectsを参照してください。
3. モーション: VIM、h、j、k、l などを学習するときに最初に触れる動きを示します。実際、各移動コマンドはテキスト領域をカバーし、このテキスト領域はテキスト オブジェクトとしても使用できます。たとえば、5w が 5 つの単語を移動する場合、これらの 5 つの単語を実際にテキスト オブジェクトとしてオペレーターに渡すことができます。例: d5w は 5 つの単語を削除します。詳細については、ドキュメント ヘルプ:モーションを参照してください。
4. オペレータ保留モード: VIM には多くのモードがあることは誰もが知っていますが、最初に理解するのは通常モード、挿入モード、コマンド モードです。名前から、このモードはオペレータが保留状態にあることを意味します。この状態になる理由は、1 で説明したオペレータを使用するためです。このオペレータはパラメータとしてテキスト オブジェクトを必要とし、それを待機しています。このようなオブジェクトは、2 または 3 の命令によって実現できます。これが、この時点では VIM が通常モードではなく別のモードであるため、a と i が挿入モードに入らない理由です。 set showcmd を設定すると、VIM がオペレータ保留モードの場合、VIM ステータス バーにこのコマンドが表示されます。オペレータが必要とするパラメータを VIM に渡すと、コマンドの実行後に VIM は通常モードに戻ります。
この時点で di' を理解するのは簡単です:
- d: VIM は削除コマンドを受け入れ、オペレーター保留モードに入ります
- i': 現在のカーソル位置を座標として使用し、一重引用符で囲まれたテキストを選択し、削除するオブジェクトとして d に渡します