TextMate には、現在のコンテキスト内からスクリプトを実行し、出力を別のウィンドウに表示できる優れた機能があります。これにより、外出先でコードを記述してテストできます。MacVim/gVIM にも同様の機能があることはほぼ確実ですが、それが何であるかはわかりません。現在、バッファをディスクに保存してから、コマンドラインに移動し、その点でスクリプトを実行します。vim でそのワークフローを改善するにはどうすればよいですか?
9 に答える
コマンドを使用してvimでこれを行うことができます!
。たとえば、現在のファイルの単語数をカウントするには、次のようにします。
:! wc %
% は現在のファイル名に置き換えられます。スクリプトを実行するには、ファイルのインタープリターを呼び出すことができます。たとえば、perl スクリプトを作成している場合:
:! perl %
vim チュートリアル: Vim でのキーのマッピング
上記の jts で提案されているように、perl が現在のスクリプトを実行するようにキーをマップできます。
map <C-p> :w<CR>:!perl %<CR>
Ctrl+P をマップしてファイルを書き込み、perl で実行します
imap <C-p> <Esc>:w<CR>:!perl %<CR>
挿入モードで同じものを呼び出すことができます。
vim/home フォルダーに .vimrc (Windows の場合は _vimrc) ファイルが必要です。vim がどのように動作するかについての指示があります。
map <C-p> :w<CR>:!perl %<CR>
Ctrl+p を次のようにマップする命令です。
a)現在のファイルを書き込む:w
b) % (現在開いているファイル) をパラメーターとして使用してコマンド (perl) を実行します。:!perl %
<CR>
各コマンドの後に「キャリッジ リターン」を表します。特定のコマンドを実行する命令です。imap は map と同じことを行いますが、挿入モードで Ctrl+p をリッスンします。
vimから直接実行できます:
:!./script.sh
ここでの提案はすべて:!{cmd} %
、現在のバッファをシェル コマンドに渡すだけの例です。ただし、別のオプションがあります:write !{cmd}
。たとえば、:write !sh
コマンドの効果は、現在のバッファーの各行がシェルで実行されることです。
たとえば、バッファに数行を追加した後、最初にバッファを保存せずに実行結果をすぐに確認したい場合などに便利です。
また、バッファの内容全体ではなく、一部の範囲を実行することもできます::[range]write !{cmd}
ファイルを保存し、インタープリターを使用してスクリプトを呼び出します
例えば。:
:!python %
あなたが探しているように聞こえます!
:
:!{cmd}
{cmd}
シェルで実行します。
%
スクリプトに渡す必要がある場合は、現在のファイル名を示すために使用できます。
!proofread-script %
!
コマンドをフィルターとして使用するために、範囲で使用することもできます。
!{motion}{filter} " from normal mode
:{range}!{filter} " from command mode
(最初のケースでは、他の多くのコマンドと同様に、モーションを入力するとコマンド モードになり、モーションが範囲に変換されます。例: :.,.+2!
)
最後に、実際にはファイルから入力を渡す必要はないが、ファイルに出力が必要な場合、それは本質的に単純なフィルターであり、それを行う最も速い方法は!!{cmd}
. これにより、現在の行がコマンドの出力に置き換えられます。
まあ、それはあなたのOSに依存します - 実際、私はM $ Window $でテストしませんでした - しかし、Conqueはその周りで最高のプラグインの1つです: http://code.google.com/p/conque/
実際には、それはより良いかもしれませんが、うまくいきます。シェル ウィンドウを vim の「ウィンドウ」に埋め込むことができます。