Vi & Vim

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

1
vimでの単語レベルの相違
私が理解している限り、デフォルトのvimdiffは行ごとの差分のみを実行しています。ただし、特にMarkdown、LaTeXなどのテキストファイルの場合は、単語レベルの差分を作成するのに役立ちます。wdiffやdwdiffなど、単語レベルで差分を作成するツールがいくつかあります。それらをvimで使用して、2つのテキストファイルを並べて比較することはできますか?
11 vimdiff 

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などは削除し、ヤンクなど、選択された領域。しかし、私はテキストオブジェクトを使用して可能ですかについて、具体的興味があります。)

1
カンマ区切りの単語に基づいて並べ替え
通常のコマンド:sortは、列または仮想列(\%cまたは\%v)に基づいて行をソートできます。より高いレベルの論理列をソートキーとして使用できますか?正規表現の使用は、このシナリオでは少し複雑に見え(列は行末にありますか?)、ソートユーティリティの機能(sork -k)と似ていますが、この機能によるソートはWindowsでは使用できません。Vimプラグインも役立ちます。 たとえば、コンマで区切られた最後の列に従って、下の2行を並べ替えます。私の実際のシナリオには、はるかに多くの列と文字列パターンがあります。列区切り文字を指定すると、大幅に簡素化されます。 xxx,yyy,zzz,0x123 zzxz,xxxx,yyyy,0x121

4
javascriptを直接実行して出力を表示するにはどうすればよいですか?
私はDOM操作なしでJavaScript言語機能を使っていくつかのテストを行っています。だから私はjsファイルを編集していて、それを単に実行してコンソール出力を表示する方法を知りたいですか?moll / vim-nodeプラグインをインストールしましたが、jsコードを実行する方法がわかりません。

3
Vimは構文をオンにして時間をかけて遅くなります
syntax onVimを使用する際に守れることはありますか? 実質的なものを開くとすぐに、しばらくすると編集することがほぼ不可能になります。キーを押すたびに遅延が発生します。構文の強調表示をオフにするか、vimを再起動すると、問題ありません。 私はsynmaxcol120に設定しました。サンプルのルビファイルは59行のみで、80文字を超えません。 とを使用vim-rubyしていvim-railsます。 問題は、遅延が時間の経過とともに蓄積するように見えることです。ファイルを最初から開くと問題ありません。しばらくすると、だんだん遅くなります。

3
コマンドラインモードタイプを<Esc>およびCtrlコマンドにする
以下の単語を引用したいとします。場合は|、カーソル位置がある、あなたは簡単に言葉を引用することができcw""&lt;Esc&gt;P、通常モードから。 |below コマンドラインモードでも同じ動作を実現したいと考えています。私の質問は、コマンドラインモードで「」と入力する方法を教えてください&lt;Esc&gt;。私は:norm cw""&lt;Esc&gt;P他のいくつかのバリエーションを試しましたが、""&lt;Esc&gt;P代わりにを取得しました"below"。 まだこれに関連して、コマンドラインモードタイプのCtrlコマンドを作成する方法を教えてください。たとえば、cw"&lt;C-r&gt;""&lt;Esc&gt;代わりに前述の単語を引用できます。しかし、入力するにはコマンドラインが必要になり&lt;C-r&gt;ます。これどうやってするの?

1
行のインデントを特定の値にシフトするにはどうすればよいですか?
行が適切にインデントされていない状況に何度も出くわします。貼り付けによるイーサ、悪い/推奨されないインデントプラグイン、またはほとんどの場合、インデント値をオフセットする余分なスペース。私は通常、これを修正するために、&lt;&lt;または&gt;&gt;ラインで数回修正します。余分なスペースがある場合は、実際に必要なインデントレベルごとに100&lt;&lt;a &gt;&gt;を実行します。 問題は、|番号で列を設定できるモーションのように10|、カーソルを10番目の列に送ることです。インデントレベルを指定するにはどうすればよいですか? の例(これは機能しません)shiftwidth=4 expandtab: The quick (indent level 0) ••••Brown Fox (indent level 1) ••••••••••Jumped over the lazy dog (indent level 2 with two extra spaces) この場合、私は現在、最後の行(2)3&lt;&lt;のインデントレベルをカウントし、余分なスペースに1を追加してから、入力したインデントレベルをカウントする1&gt;&gt;必要があります(またはautoindent、==コマンドを使用します)。 1==インデントをレベル1に強制するようなものを求めています。または、場合によって0==は、インデントをすべて一緒に削除する必要があります。 上記の例は、1行または0行で(それぞれ)自動インデントを実行しているので、希望どおりに機能しませんが、問題をよりわかりやすく説明できると期待しています。


4
:行の後ではなくカーソルの後に読み取る
私は:r !uuidgen頻繁に新しいuuidをバッファーに挿入するために使用します。これは機能しますが、私は通常、引用符の間にuuidを挿入しようとし:r !uuidgen、uuidを新しい行に出力します。 この問題を回避するために、私は現在単純なキーマップを使用しています: nnoremap &lt;C-u&gt; mm:r!uuidgen&lt;CR&gt;dW"_dd`mp このマクロは、マークを設定しmm、uuidを挿入しr!uuidgen、挿入されたuuid dWを削除し、余分な行を削除"_ddし、マークBACKTICKmに戻り、最後にuuidを貼り付けpます。 :rレジスターを浪費するこのマクロ/キーバインディングなしでカーソルの直後に行く方法はありますか?

2
実行時にフォントをすばやく切り替える
フォントはメニューからGVimで手動で選択できますが、手元のタスクに応じて切り替えたいフォントがいくつかあります(小さなビットマップ、大きなOTF ...など)。 vimrcで事前定義されたフォントのリストを循環するようにキーバインドを設定する方法はありますか?

1
挿入モードで一連の文字をマッピングする
挿入モードですでにキーの組み合わせをマッピングできます。 :inoremap abc &lt;do stuff&gt; ただし、これにはいくつかの欠点があります。 などのシーケンスの部分的なバージョンを入力する場合ab、完全なコマンドを入力するかどうかを確認するために「待機」しているため、文字は実際には短時間表示されません。これは望ましくありません。チェーンの部分的な部分文字列が入力された場合、一時停止せずに文字のチェーンをマッピングしたい。 「」と入力してabから一時停止し(上記のポイントで説明したように文字が実際に表示されるまで待ちます)、「」と入力するcと、コマンドは実行されません。待機時間に関係なくコマンドを実行したい。 私はを使用しますがiab、次の理由で機能しません: 文字列の後にスペースを入力する必要があります それで任意のコマンドを実行することはできません。テキストの文字列を挿入するだけです。 マップを使用せずに、挿入モードで特定の文字列が入力された場合にコマンドまたはキーストロークを実行する方法はありますaか?

2
別のキーボードレイアウトで動作するようにVimを変更するにはどうすればよいですか?
QWERTY以外のキーボードレイアウトで入力します。Vimが使用するキーの多くは現在ホーム行にありますが、一部のキーバインディングは機能しませんhjkl。最も明白なものはキーです。 キーボードレイアウトでより適切に機能するように、これらのキーバインディングをどこでどのように変更できますか?

5
複数のファイルをナビゲートする
例えば、コマンドラインで複数のファイルを持つIオープンvimの、場合vim debug.log*の負荷debug.log、debug.log.1およびdebug.log.2私はそれらの間を移動することができ、複数のウィンドウ(に割り当てる:split/ :vsplit)または、そのような? この操作モードで知っている唯一のショートカットはです:n。これは、リストの次のファイルをロードします。このマルチファイル操作モードでできることは何ですか?(または、どのヘルプ主題がそれをカバーしていますか?)

2
vimのclientserver機能を使用して設定の同期を維持することは可能ですか?
通常、同じマシンでvimの複数のインスタンスを実行しています。vimrcに変更を加える場合:source ~/.vimrc、簡単なマッピングまたはautocmd を使用して変更できます。しかし、実行中のすべてのインスタンスに変更を反映させるには、それぞれのインスタンスで個別に実行する必要があります。このclientserver機能を使用して、すべてのインスタンスにvimrcをリロードするように指示できますか? を使用しないソリューションにも興味がありますclientserver。


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