vi [m]別のファイルから行の範囲を読み取ります


9

Linuxでは、file_Bvim で編集していfile_Aます。から10-25行目を追加します。例:ヘッダーがまったく同じHTMLドキュメントのセット全体があり、テンプレートを作成してそこから開始することもできますが、次のようになります。

1つのファイルから一定範囲の行を挿入し、現在編集中のファイルに追加するためのシンプルでエレガントな方法を探しています。vimで。

私がこれまでに見つけた解決策は、私が探しているものではありません。

  • file_Bコマンド内で:read file_A * file_A *全体をfile_Bに追加します。過度に
  • vim内にコピー&ペーストがありますが、このためには、開いている必要があります file_A
  • file_Aの 内部で:10,25w! file_Bは、指定された範囲の行をに送信しfile_Bます。
    これはコピー&ペーストにかなり近いようです
  • vimで複数のウィンドウを開くことができます
    が、8インチの画面で作業していると、複数のウィンドウが向きを難しくします

私は快適な解決策を見つけることができなかったので、私は何かを誤解しているか、それまでに見つけた方法が一般的に使用され、標準的な方法として採用されているのだろうかと思います。


このSOの質問を参照してください。@ Bernhardの回答は、その質問に対する受け入れられた回答でもありました。
slm

@slm私はこの答えを知っていましたが、見つけた解決策のリストには入れなかったので、ヒントをありがとうございます。私はまだ内に構築された何かを探していますvim。しかし、これは手の届かないようです。そして、これは外部のコマンドを介してのみ達成できるのかと思います。これまでのところ、私はvimここまでほとんど制限を設けていなかったからです。
2013

@ cellar.dwellerあなたが本当にもっと簡単なものを望むなら、あなたはそれからある種の機能を作ることができます。
Bernhard

回答:


11

私が思いつくことができる最良の解決策は、外部からそれを呼び出しsedて組み合わせることです:read !

:r !sed -n -e '10,25p' fileB

ここでは機能しません-なぜですか?まず、ご協力ありがとうございます。私は何を得ることである:「いいえ前のコマンドE34は」 Vimがコマンドを繰り返すしようとするかのように[おおよその翻訳します]。私が理解している限り、段階的に:vimの:r略ですread。私はそれについてsed、そしてその使い方を知りません。もちろん、fileB実際のファイルに置き換えました:)
2013

@ cellar.dweller私の答えは誰かによって更新されました、私はそのコードによって同じエラーを受け取りました。バックロールしました。これがうまくいくかどうか確認してください。
Bernhard

@Stephane回答を短くするのは良いですが、あなたの提案はうまくいきませんでした。
Bernhard

今ではうまくいきます!少しmyslefを追加するには::10rなどで開始すると、10行目からコンテンツが配置されます(これが存在する限り)。今は魅力のように動作します。すごい。どうもありがとう!
erch 2013

2
おっと、ごめんなさい。vimの!の拡張を忘れました。だったはず:r!sed 10,25\!dです。-eまたは引用符は必要ないので、:r!sed -n 10,25p略して書くこともできます。:r sed '10,$\!d;25q'ファイル全体を読み取らないようにします。
ステファンChazelas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.