タグ付けされた質問 「cursor-motions」

カーソルを移動するコマンド。モーションコマンドは、操作対象のテキスト上を移動するために、オペレーターコマンドの後に使用されます。

1
Pythonブロックモーションの終了
pythonブロックの終了/開始に移動するモーションが必要です。また、前/次のメソッド/クラスの開始/終了に移動する別のモーションが必要です(すべての組み合わせ)。 私はvim-indent-object、python-mode、chapa、vim-python-objectなどを試しました。それらのどれもブロックの終わりをサポートせず、上記のモーションのすべての組み合わせをサポートしません。 私は私が提供したプラグインを持っていた時間に一度覚えて]]、[[、][および[](検索「] [」および「[]」の動き、前/次のメソッド/クラスの/最後の初めのために、私は私のプラグインディレクトリにそれを見つけることができませんプラグインされたディレクトリですべての発生を分析しましたが、「] [」または「[]」を定義するものは見つかりませんでした。 使用したプラグインを知っていますか?この機能を提供するプラグインを知っていますか?

3
動きのあるマッピング
マッピング内の後続のモーションで演算子を使用する方法を理解しようとしています。例えば: nmap /c c{here we pending for a motion}/<C-r>"<CR> マップは次のことを行う必要があります。 cオペレーターをアクティブにして、次の動きを聞きます。 たとえば、t,次のコンマの前にすべてを変更するためにここに入力できます。 カーソルとコンマの間のすべてを削除する挿入モードに移動します。 削除されたテキストはパターンとして自動的に検索されます 簡単に言うと、モーションテキストが削除された後、削除されたテキストが強調表示された挿入モードのままになります。誰かがこの事件を解決するのを手伝ってくれたらとても感謝しています。 更新 答えはほとんど私が欲しいものです。だが!を押す/cwと、単語の代わりに何かを入力し、を押し<Esc>ます。次の出来事でも同じことをするつもりだ。ただし、presing n(次のオカレンスに移動)および.(最後のコマンドを繰り返す)の後、最後に入力したテキストを置き換えるのではなく、先頭に追加します。マッピングの主な目標は、とそれを使用しているn/Nと.繰り返しに。私は何かを見逃しましたか?

3
マークを使用して、最近開いたが変更されていないファイルの場所にジャンプするにはどうすればよいですか?
多くの場合、私はファイルを編集します-私の仕事は終わったと思います-それからファイルを閉じて次の作業に進みます。しかし、そのコードに戻り、もう少し調整する必要があることに気付きました。 もう一度ファイルを開く.と、マークを使用して、で最後に編集した位置にジャンプできます'.。 現在、vimのマークを使用して、最近アクセスしたが変更されていないファイル内の場所にジャンプする方法を見つけようとしています。 手動でマークを設定できることはわかっていますが、ほとんどの場合、戻ってくることを期待していないため、マークを設定せず、vimが自動的に生成するマークを使用する必要があります。これはから、これを達成するための方法かもしれないようにマークが思えます。 ":h motion " 現在のバッファを最後に終了したときのカーソル位置。デフォルトは最初の行の最初の文字です。| last-position-jump |を参照してください 開いたファイルごとにこれを使用する方法について。各ウィンドウに1つではなく、バッファーごとに1つの位置のみが記憶されます。バッファがウィンドウに表示されている限り、位置は変更されません。{Viにはない}。 しかし私が バッファーを表示しているすべてのウィンドウを閉じます(ただし、バッファーはまだバッファーリストに存在しています)。または: バッファのすべてのインスタンスを殺す マークが更新されていないようですが、マークを使用してバッファ/ファイルの最後のカーソル位置にジャンプするにはどうすればよいですか?


2
テキストオブジェクトとしての長方形の領域?
長方形の領域に作用するvimでテキストオブジェクトを定義することは可能ですか? たとえば、次のように、テキストの列が垂直方向に整列しているとします。 column 1 co column 2 col lumn 1 colu umn 2 column mn 1 column 2 column 2 c 1 column 1 olumn 2 colu textobject定義することは可能であろうc列のため、そのようにdac列を削除するだろうが、yacそれをヤンクだろう、cacそれを変更するだろう、などを? (私は、矩形領域を選択するためのコントロール-Vについて知っている、と私はあなたがして使用することができます知っているd、yなどは削除し、ヤンクなど、選択された領域。しかし、私はテキストオブジェクトを使用して可能ですかについて、具体的興味があります。)

3
先頭の空白を決して含まない「」に似た動きはありますか?
私はa"vimでかなり頻繁にモーションを使用しています。たとえばca"、コードの一部をリファクタリングするときに使用して、ハードコードされた引数を変数名に置き換えます。このアプローチの問題a" は、末尾に空白がない場合、先頭の空白が含まれることです。 末尾の空白は含まれますが、空白がない場合は先頭の空白が含まれます。 したがって、次のように関数呼び出しを編集すると、 aFunction(arg1, "toBeReplaced", arg3) #original aFunction(arg1, replacedArg, arg3) #refactored 私は再挿入スペースの前に手動に持っているreplacedArgとしてca"、それが削除されます。 この空白を含まない同様のモーションはありますか、それとも代わりに使用できる何か他のca"スペースを入力する手間を省くことができますか? ノート: cf"文字列にエスケープされた引用符が含まれていない限り、私がやりたいことを行いますが、文字列の先頭にカーソルを置く必要があります。文字列内のどこからでも使えるものを使いたいのですが、入力するのが少し?"<Enter>cf"面倒です。 それは、単一の<Space>キーストロークではなく、最初にスペースを含めることを忘れがちで、少なくとも4回の追加のキーストローク(bi<Space><Esc>)がかかり、フォーカスを失うという事実についての詳細です。したがって、置換コマンドの長さは、指定された文字の間のテキストのみを削除してから挿入モードに入る限り、それほど重要ではありません。

4
操作をコードのセクションに制限する
日常業務の中で、特定の関数(変数の強調表示や検索など)を操作する必要があることがよくありますが、編集/検索の範囲を制限することはできませんでした。 vimで、$colorこれらの中括弧のセットへのすべての参照、またはこの折り目などを選択的に言う方法があります。可能であれば、これは比較的一般的で、テキストの編集/置換に適用できるのが理想的です。 例として: $color = "#fff"; function PickColor () { $color = "#bbb"; $newColors = ["#000", "#fbf", $color]; foreach ($newColors as $c) { if ($c == "#fff") { break; } } } $differentColor = $color; このコードは比較的悪い例ですが、$ colorのすべてのインスタンスを置き換える必要がある場合、PickColor関数のコンテキストでこれをどのように行うのでしょうか。別の例として、使用する#と、*あなたはそのテキストオブジェクトの次のインスタンスに移動することができ、どのように(基本的には、検索をラップする)だけで、この機能の検索のための範囲を制限する行の数千人に及ぶ可能性がファイル全体に反対して負けあなたの場所、またはあなたが持ってはならない別の機能の何かを誤って置き換えますか?

1
オペレーター保留モードでカーソルの形状を変更する
Gvimでのカーソル: を押した後のGvimのカーソルd: オペレーター保留モードのときにターミナルVimでカーソルを変更する方法はありますか?スクリーンショットのように見える必要はありません。 これはによって行われo:hor50-Cursorでguicursorgvimをのために。Vimに表示されるオプションは3つだけです。 t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* |termcap-cursor-shape| しかし、オペレーター保留モードについては何も...

2
「[[」、「]]」、「[]」、「] [」を理解する
これらのテキストオブジェクトの動きを理解するのは難しいと感じました。 *]]* ]] [count] sections forward or to the next '{' in the first column. When used after an operator, then also stops below a '}' in the first column. |exclusive| Note that |exclusive-linewise| often applies. *][* ][ [count] sections forward or to the next '}' in the first column. …

1
テキストの長さを簡単に取得するにはどうすればよいですか?
たとえば、次の例のように、テキストの長さを確認したい場合があります。 str = 'Hello, world!' if len(str) == 13: print('Hello back to you!') 文字列の長さを知りたいのHello, world!ですが。 私が今していることは、で列番号を入力rulerformatし%c、最初の文字にカーソルを置き、最後の文字に移動し、手動で減算することです。 しかし、これはかなり厄介です。たとえば、ルーラーの仮想モードでの選択の長さは欲しいのですが、私が見る限り、これに対する選択肢はありません。 これはできますか?または他の簡単な方法で?

2
文の最後の文字に移動するにはどうすればよいですか?
通常モードで(と)、それぞれの文の前のまたは次の最初の文字に移動します。最後のキャラクターに移動するにはどうすればよいですか。 すべての文がピリオド)T.(次の文の最初の文字、最初のピリオドに戻る)で終わる場合、マクロで使用するより堅牢なソリューションが必要です。 私はビジュアルモードで動作していることを知ってasおりis、動作しますvis<ESC>(ビジュアルモード、文の内部を選択して、ビジュアルモードを終了します)。 私は途方に暮れています。助けて!


3
前の行の最後まで削除する方法は?
例(^カーソル位置です): 前: a bc def ghi j k l mn o p q rs ^ 後: a bc def ghimn o p q rs ^ または少なくとも: a bc def ghimn o p q rs ^ を使用できることはわかっていますがd0i<BS>、これを行うためのより高速な方法が必要で、コマンドモードを維持したいと思っています。私はvimの初心者であり、おそらく答えはの修正だと思いますkA。 どうもありがとうございました! :-)

2
単語の終わりの後に移動するか、cusorの後に削除する
カーソル位置の後の行の終わりまで削除する最も速いシーケンスは何ですか? 例: この行をもっと早く削除したい シーケンス:5eD単語の最後の文字を削除しますline この林を削除したい vimで移動すると、単語の最初または最後の文字に移動することが多く、行末まで削除するたびに1つ以上のキーストロークで移動する必要があります(上記の例では、右に1つのモーションを追加します)。5elD)。より効率的な方法はありますか(単語の終わりの後に移動するか、カーソルの後に削除することによって)?

1
TeX入力の「段落」の意味を変更しますか?
私はこのようなセクションがたくさんあるLaTeXコードを書いています \begin{definition} blah blah blah ... ... \end{definition} 通常のテキストでは、gq]すべてをうまくリラップするのがとても好きです。上記のようなブロックセクション内では、endコマンドもラップされています。 vimが行の開始\endで段落を終了することを伝える方法はありますか?または、使用できる別の書式設定コマンドがあります(に<F8>マップしましたがgq]、再定義してもかまいませんか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.