タグ付けされた質問 「external-command」

ViまたはVim内からの外部(シェル)コマンドの呼び出しに関する質問。

9
シェルコマンドをサイレントに実行する方法は?
:!<command>シェルでコマンドを実行するために使用できます。しかし、これは私の端末を「引き継ぎ」、stdoutその特定のコマンドで埋めます。 ゼロ以外の終了コードのみを通知するコマンドをバックグラウンドで実行するにはどうすればよいですか?


4
Vimで外部コマンドを使用して、選択した単語や行を変更する方法は?
私が他のエディターで有用だと感じたのは、次の機能です。 選択したテキストを取ります 外部コマンドを実行し、選択をそのに渡します stdin 外部コマンドstdoutを使用して、現在の選択をそれに置き換えます。 このようにして、基本的なioを実行できる任意の言語を使用して選択範囲を操作する便利なテキストツールを作成できます。 選択を使用してvimでこれをどのように行うことができますか?...単一の文字、単語、段落など。 (直接コマンドラインで、またはキーバインディングを介して?) 注意 !sort行レベルで動作するなどのコマンド、この質問をしている理由は、選択範囲を操作したいからです。(つまり、x押された場合に削除されるテキスト)。

2
シェルコマンドの結果を.vimrcファイルの変数に抽出しますか?
私の.vimrcファイルでは、外部コマンドの結果を変数に保存したいと思います。私の場合は: $ echo $LANG 私のvimrcファイルは次のようになります: let language = output(!echo $LANG) if language == 'en' nnoremap <somekey> <ohanotherkey!> end if 今のところ、私はそれを行う方法を見つけることができませんでした。コマンドモードで:read !echo $LANGは、探しているコンテンツが現在のファイルに挿入されることがわかりました。しかし、vimrcファイルに書き留める方法がわかりません。

2
vimからbashスクリプトを実行する
私はbashスクリプトにvimを使用しています。問題は、新しいファイルを作成し、実行可能にし、実行してから削除したくないことです。1回だけ使用されるスクリプトを意味します。 たとえば、vimを開いて次のように入力します。 #!/bin/bash ll | while read line do echo $line done このファイルは保存せず、bashスクリプトを単純化するためにvimを使用しています。!vim 経由でbashコマンドを実行できることを知っています。しかし、バッファ内にあるすべてを実行するのはどうでしょうか?

1
gxにvimの完全なURLを認識させるにはどうすればよいですか?
デフォルトでは、vimのバッファーになどのURLが含まれているhttp://www.google.com場合gx、通常モードではそのURLでブラウザーが開きます。それは非常に便利です。ただし、URLにURLパラメーターがある場合(例http://www.google.com/search?q=stuff:)、URLパラメーターは失われます(つまり、単にhttp://www.google.com/search開かれます)。 私はMacVim 7.4パッチ183を使用しており、Chromeをプライマリブラウザとして使用しています(OS X 10.9上)。 gx完全なURL を認識するための簡単な方法、理想的には最小限のカスタマイズはありますか?

3
Vimウィンドウでインタラクティブシェルを発行できますか?
外部コマンドを実行できること、:!または:r!オプションでその出力をテキストに挿入できることを知っています。実行することもでき:!sh、終了するまで生存するシェルを生成しますが、シェルがアクティブな間、Vimは「スリープ」状態になり、アクセスできなくなります。しばらくVimに戻りたい場合は、シェルを終了し、新しいシェルを作成する必要があります-あまり便利ではありません。 私はVimを懸濁させて、反対の端にシェルにアクセスすることができ^Z、スルーVimの仕事を管理しbg、fgそしてjobs。これは理にかなっていますが、長期的には非常に面倒です。使用Screen可能であれば(使用できない場合が多い)、ウィンドウマネージャーの複数のウィンドウを開きます(そして、sshを使用して各ホストから順にホストをターゲットにし、リモートホストでvimとシェルの両方を使用します)。 Vimでシェルセッションを開いて、たとえば(内部)ウィンドウの1つに保持したり、シェルセッションに切り替えたり元に戻したりすることが許可されている場合、これが最も適切です。このようなことは可能ですか?

2
Vimのスタート画面またはイントロ画面を変更するにはどうすればよいですか?
ファイルなしでVimを起動すると、常に次のように表示されます。 VIM - Vi IMproved version 7.4.580 by Bram Moolenaar et al. Vim is open source and freely distributable Become a registered Vim user! type :help register<Enter> for information type :q<Enter> to exit type :help<Enter> or <F1> for on-line help type :help version7<Enter> for version info これを変更するにはどうすればよいですか? 具体的には、fortuneここにシェルコマンド()の出力を配置します。 vim-startifyについて知っています。しかし、私はそれらのすべての機能を必要としません。単純なテキストを表示したいだけです...



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

3
vimを終了せずに、ファイルの一部の単語を数えるにはどうすればよいですか?
テキストでいっぱいのファイルがあります(MarkdownまたはLaTeXなど)。このファイルの一部の単語数を数えたいのですが。 :! wc -w %現在のバッファーでwc -wを実行する方法を知っています。そして、関心のあるセクションを名前付きレジスターにヤンクできることを知っています。名前付きレジスタをコマンドまたはパイプで使用するためにオペレーティングシステムに送信する方法はあると思いますが、それを見つけることができませんでした。または、レジスター内の単語を数えるより良い方法はありますか? 私のユースケースは、vimでプログラミング以外の書き込み(メモ、論文など)をたくさん行っていることです。編集中にファイルの特定のセクションに追加した単語数をカウントしたいと思います。セッション。

5
選択を外部コマンドの出力で置き換えます
ファイルに次のようにXXXX選択したプレースホルダーを含む行があると仮定vします。 XXXX Some other text どうすれば変更できるだけXXXXのような、外部コマンドの出力でdate +%Y%m%d? 私は限りを得ました :'<,'>!date +\%Y\%m\%d しかし、それは行全体を置き換えました。

3
viコマンド:shからシェルにいることをどのように確認しますか?
viでは、:shコマンドでシェルターミナルを取得できます。そして後で、exitシェルでviに戻ることができます。 しかし、シェルターミナルを長期間使用していて、exit何かを閉じるか、viを返すかを忘れてしまった場合。 viに戻るかどうかを確認する方法はありますか?jobsまたは機能しfgていません。

1
外部コマンドで視覚的に選択されたブロックを変更する方法は?
2つの垂直部分で構成されるファイルがあります。左側では、データは既にフォーマットされており、変更したくありません。右側のデータのみをフォーマットします。次のような行があるファイルがあるとします foo=bar baz # Neato Junk quux=xyzzy # Bilbo Baggins Ring そのような多くの行で。「#」文字の右側のテキストのみを変更したい。次の式で必要なテキストを選択しました。 gg /# ctrl-v G $ しかし、それを(たとえばで:'<,'>!column -t)変更しようとすると、実際にはすべての行全体が変更されます。視覚的に選択された部分のみを変更するために使用する正しい式は何ですか?

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