2011-08-06 9 views
2

vim Iでは、現在の1行をフィルタリングします!! Unixコマンドを使用します。 mycommandは私の単一入力行は正確に一つの出力ラインも置き換える場合は、これを達成するために、私は<Enter>を押すvimのfilterコマンドからの入力の後にカーソルを次の行に移動します

:map <Enter> !!mycommand<CR>:,+1<CR> 

の.vimrcに次のショートカットを定義し、これは現在の下の行に私を取ります。出力がより多くの行(コマンド実行前に未知の行の数)を持っている場合、それでも現在の行の下の行に移動します。 ここでは、挿入された出力の下にある最初の行にどのようにしていつまで行くことができるかを知りたいと思います。mycommand

変更されたショートカットを使用すると、毎回出力を表示する<Enter>だけを使用して、テキストファイルを1行ずつ「実行」することができます。 mycommandの出力に関する以前の知識なしにこれを行う方法がない場合は、各出力行の最初の文字を知っている人がいるかもしれません。

ありがとうございます!

答えて

2

特別なマーク'[']は、最後に変更された(またはヤンクされた)テキストの開始と終了を示します。私はあなたの元のコマンドの代わりに+を使用してい

:map <Enter> !!mycommand<CR>']+ 

注:にマップを変更します。これは、次の行の空白でない最初の文字にジャンプします。それはあなたが望むものではありません場合は、単にJを試すか、あなたの元のマップの短いバージョンを使用可能性があります

:map <Enter> !!mycommand<CR>']:+1<CR> 

をあなたは本当にこの範囲にするために、カンマは必要ありません。このコマンドは簡略化された:#です。#はジャンプする行番号です。ここでは.を「現在の行」とし、:.+1を次の行に移動することができます。しかし、ドットを省略することができます。そのため、:+1は同じことを行います。

関連する問題