Vi & Vim

テキストエディタのviおよびVimファミリを使用している人のためのQ&A


3
augroupを使用する理由は何ですか?
自動コマンドの仕組みと使用方法は理解していますが、augroupの目的は少し確信しています。読みました:help augroup *:aug* *:augroup* :aug[roup] {name} Define the autocmd group name for the following ":autocmd" commands. The name "end" or "END" selects the default group. To avoid confusion, the name should be different from existing {event} names, as this most likely will not do what you intended. これは、なぜそれらが有用であるのか、または単に一連のオートコマンドを隣り合わせに定義するだけではなく、オートコマンドグループ名を作成したい理由を実際には説明しません。 たとえば、オートコマンドfooとbarが関連している場合、なぜしたいのでしょうか augroup …
31 autocmd 

1
視覚的な選択範囲を他の方向に広げる
たとえば、Vjjjjjで視覚的な選択を選択したことがありますが、後で選択を1行上から開始する必要があることを後で認識します。ただし、を押すkと、選択範囲全体が1行上に移動するのではなく、選択範囲の範囲が狭くなります。 以下は視覚化(ha、ha)です。太字の線は私が選択したものです。 この行を選択しないでください この行を選択しないでください この行を選択してください! この行を選択してください! <- Vここを押しました... この行を選択してください! この行を選択してください! この行を選択してください! この行を選択してください! <-...そしてここに移動しました。しかし、私は始めたはずです この行選択を1行上に選択しないでください! この行を選択しないでください 開始点を他の方向に移動して視覚的な選択範囲を拡張するにはどうすればよいですか?これが不可能な場合、.vimrcにマッピングを追加する方法はありますか?

7
一致する行のみを表示しますか?
長いファイルで、約200行程度に一致するパターンを検索したいと思います。一致した行は、ファイル内のランダムな場所にあります。 行が一致すると、行自体のみが関連し、前後のコンテキストは関係しません。 通常、で/一致を検索してジャンプしnます。 ただし、画面上に一度に関連する行が1行または2行しかないことを意味します。 結果行のリストを調べながら、一致しなかったすべての行を非表示にする方法はありますか? 総当たり攻撃のアプローチは、一致しない行をすべて削除し、その削除を後で元に戻すことです。しかし、それが永続的な取り消しにならない場合でも、それはさまざまな点でいです...
31 search 

5
レジスタをクリアせずに特定の操作を実行する
多くの場合、構成ファイルで行のブロックをコピーして貼り付けてから、そのブロックに小さな変更を加えます。貼り付けた後、x削除する文字を削除してから、次のブロックを貼り付けます。を除きx、削除された文字をクリップボードに置くので、行ブロックを再度コピーする必要があります。 挿入モードに入らずにこれを行う方法はありますか?

5
xargsでVimを呼び出した後、ターミナルが停止しました
私は時々xargs、次のようにVimを呼び出してみました: find . -name '*.java' | xargs vim …どの種類の作品: Vimが起動すると、次の警告が短時間点滅します。 Vim: Warning: Input is not from a terminal 編集は機能します— 期待どおりに:filesすべての.javaファイルを正しく列挙します。 保存して終了できます。 しかし、Vimを終了した後、私の端末は停止します: シェルプロンプトで入力した内容はエコーされません。 キャリッジリターンはまったく表示されず、改行のみが表示される場合があります。 これはreset(1)、端末を再初期化するコマンドを発行するまで続きます。 これはVimのバグですか、それともそのような端末と対話する理由について、より満足のいく説明がありますか?LinuxおよびさまざまなUnicesでVimバージョン7.3(バージョンは重要ではないようです)までVimで発生するのを見てきました。 私は1つの回避策、すなわちを知っていますvim $(find . -name '*.java')。私の主な質問ではありませんが、他の回避策も歓迎します。

1
IFステートメントで条件演算子ANDまたはORを使用しますか?
これはおそらく非常に単純な質問ですが、これまでのところ何も答えが見つかりませんでした(適切な情報源が不足している必要があり、vimのヘルプで検索する場所がわかりません)。 条件があり、 'AND'を含めたい if (condition1 .AND. condition2) "do what I want you to do endif しかし、構文が見つかりませんでした。「OR」についても同じです。
30 vimscript 

2
Vimは端末のカラーエスケープコードを解釈できますか?
多くのCLIプログラムは、適切に強調表示されたテキストを出力します。それらのほとんどは、出力がファイルに送信されるかどうかをチェックしますが、一部にはターミナルエスケープコードが含まれます。エスケープコードを使用した出力は気に入っていますが、Vimでこれらのファイルを表示するのは苦痛です。 Vimはこれらのエスケープコードを予想される色に解釈できますか?そうでない場合、これらのエスケープコードを無視するようにVimを設定できますか?

5
2つのウィンドウの位置を入れ替える
私のウィンドウの現在の構造は次のとおりです。 + ----- + ---------------------------- | | | A | | | + ----- + | | | B | AとBの順序はまったく自然ではありません。Bが一番上にあれば良いでしょう。 しかし、私が行く場合<C-w>K、Bはすべてのウィンドウの一番上になりますが、これは私が望むものではありません。BをAの上に配置できますが、Aの上に既にある他のウィンドウの上には配置できません。 そして、2つのウィンドウが垂直に分割されている場合、それらを水平に分割するにはどうすればよいですか?

4
LaTeXの引用符をテキストオブジェクトとしてどのように扱うことができますか?
LaTeXの引用符は、フォーマット``like this''(または`like this'単一引用符)されているという点で通常のテキストとは異なります。これにより、Vimでそれらをナビゲートすることが難しくなります。 私は通常、T`ct'(backwards until `、change until ')のようなものを使用します。しかし、これは不格好で不自然です。私はの線に沿って何かを使用することができることを好むciq私にできることと同じように、(「引用符の変化」) 、ciw、ca)、ci"、ca'など Vimに``LaTeX'' `quotes'テキストオブジェクトとして扱うように指示する方法はありますか?(プラスとして、.texファイルの編集中にのみこれをトリガーする方法はありますか?)

4
Vimにフォーカスがないときにファイルを自動読み取りさせるにはどうすればよいですか?
私は、ファイルに書き込まれた出力の監視を含む、すべての種類(またはこの場合はgVim)にVImを使用しています。autoreadVimにファイルを再読み込みさせるために使用します。これは、キーボードフォーカスをファイルに切り替えるたびに行います。 キーボードフォーカスを切り替えなくても、Vimにバッファーを更新させる方法はありますか?設定を試みましたchecktimeが、キーボードフォーカスが他の場所にある間は効果がないようです。 私が監視している出力は、出力ファイルを完全に置き換えています。そして私はそれを見てtail -fいません。毎回新しいインスタンスにパイピングする、lessまたは何かにパイピングするなど、他のオプションがありますが、VImを使用して実行できればクールです。
29 filesystem 

2
letとsetの違いは何ですか?
Vimの背後にある理論の多くは知りません。setいくつかの変数とlet他の変数のように見えます。違いは何ですか?一方が他方よりも必要な場合は? また、ソラリゼーションされたvimカラースキームは、このインスタンスのlet g:blabla...重要性を何と言っていg:ますか?
29 vimrc  vimscript 

5
バッファリストの再番号付け
しばらくプロジェクトに取り組んできた後、連続するバッファ番号の間に大きなギャップが見られるようになりました。これは、それらの間のバッファがさまざまな理由で消去されたためです。残念ながら、これにより、を入力し:lsた後、特定のバッファーにジャンプしたり、バッファーの範囲を選択したりするのが面倒になります。すべてのファイルを再度開かずに、開いているバッファーの番号を1から始めて番号を変更する方法はありますか?

2
なぜYはy $ではなくyyの同義語なのですか?
これには特定の歴史的理由がありますか? 背景 —(質問を既に理解している場合は、この部分をスキップできます。) 中級/上級viユーザーが知っているようにy、 "yank"コマンドは次の移動コマンドで指定されたテキストをヤンク(コピー)します。* ye単語の最後までヤンクし、y0カーソル位置から行頭までヤンクしますy_現在の行全体をy$ヤンクし、カーソル位置から現在の行の最後までヤンクします。 d(削除)コマンドとc(変化する)コマンドが両方同様にこれらの動きのすべてで使用することができます。 ddは、d_現在の行全体の同義語であり、削除します。同様に、現在の行のcc同義語でc_あり、変更します(つまり、すべてのテキストを削除し、行の先頭で挿入モードにします)。** 「yank」コマンドはこの規則に従います。yyのように現在の行全体をヤンクしますy_。 同義語の別のセットがあります:Dは同義語でd$あり、カーソル位置から行末までを削除します。 Cは同義語でc$あり、カーソル位置から行末までテキストを変更し、挿入モードにして新しいテキストを入力します。 しかし、Yある別の同義語yyかy_とヤンクます全体のラインをあなたから期待通りだけでなく、カーソルから行末までCとDパターン。 Vimの下位互換性を維持するためにVimでこのように保持されていることを理解していviます:help Y。 「Y」をカーソルから行末まで(より論理的ですが、Vi互換ではない)動作させたい場合は、「:map Y y $」を使用します。 だから、これはからのホールドオーバーですvi。いいよ しかし、そもそもコマンドがそのように設計されたのはなぜですか?これまでに何か論理はありましたか? *具体的には、レジスタ0にテキストを配置し、名前のないレジスタをレジスタ0に向けます。 **これSは私の質問には関係ありませんが、ccまたはの別の同義語ですc_。


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