ビジュアルブロックを外部コマンドに送信するにはどうすればよいですか?VIM:ビジュアルブロックを外部コマンドに送信
ブロックをCtrl-qで選択してから、それを押します。 program_nameしかし、vimは選択したテキストブロックではなく、行全体を送信します。
私は常に外部コマンドに行全体を送っていますが、この問題のromainlの答えの機能を使用していることを行うことができますVimのWindowsの10で
ビジュアルブロックを外部コマンドに送信するにはどうすればよいですか?VIM:ビジュアルブロックを外部コマンドに送信
ブロックをCtrl-qで選択してから、それを押します。 program_nameしかし、vimは選択したテキストブロックではなく、行全体を送信します。
私は常に外部コマンドに行全体を送っていますが、この問題のromainlの答えの機能を使用していることを行うことができますVimのWindowsの10で
をgvimをを使用しています:
Sending visual selection to external program without affecting the buffer
次のように行われています
- バックアップレジスタ
- の内容は、その中で選択をヤンク
- レジスタ(システムに登録し、その内容を渡す)と出力結果
- レジスタに
を復元ここでは、あります関数内:
あなたは、このようなマッピングで使用することができますfunction! VisualCountWords() range
let n = @n
silent! normal gv"ny
echo "Word count:" . system("echo '" . @n . "' | wc -w")
let @n = n
" bonus: restores the visual selection
normal! gv
endfunction
:
xnoremap <F6> :call VisualCountWords()<CR>
ありがとう。残念なことにデザインのために、私は自分がしたいことをすることができなくなるでしょう。私は、外部のコマンドやスクリプトの柔軟性を持ってテキストブロックをセンシングする能力が必要です。しかたがない。 – user2001487
ブロックワイズビジュアルモードがVimの拡張であるのに対し、実施例のコマンドは、ラインベースです。これは、フィーチャの不一致を説明するものです。
vis.vim pluginには、実際に選択したブロックをExコマンドに送信できるようにする:B
コマンドがあります。また:!
で動作しますので、あなたがこのようなことを行うことができます。
:'<,'>B !tr 'a-z' 'A-Z'
ありがとう!これはまさに私が探しているものです! – user2001487
私はあまりにも早く話しました。このプラグインは私が探しているものに近いですが、ブロック選択内のすべての行を並べ替える必要があります。私が使用している外部ソートコマンドでは、バージョン番号(ソート-V)でソートすることができます。 Vissortに似ていますが、より柔軟性があります。 – user2001487
選択したテキストを並べ替えるだけで(行の前と後をそのまま残しておく)、vis.vimが解決策です。行全体を並べ替えるのではなく、選択した列に基づいて並べ替えるには、 ':!sort ...'を使いますが、 '--key = ...'で)フィールドを指定してください。 –
も含めhttp://vi.stackexchange.com/questions/7388/replace-selection-with-output-of-external-command参照してくださいトップの答えにコメント – Sundeep