0

の出力をバッファ:read !lsに追加できることはすでにわかっています。ls出力に適切なインデントを取得したい場合はどうですか?

例:私のバッファは次のようになります

def foo
  # run :read !ls here
end
4

2 に答える 2

4

最も一般的な方法は>、領域をインデントするためにモーションを使用してから、.コマンドを使用してインデントを繰り返すことです。

  • シェルコマンド:r!lsの出力を読み込むために行います。ls
  • 経由で出力の先頭に移動し`[ます。
  • 出力をインデントする>`]
  • .正しくなるまで、コマンドでインデントを繰り返すだけです。

およびマークは[]最後に変更されたテキストの開始と終了にそれぞれ設定されます。この場合、:r!lsコマンドを出力します。

詳細については、次を参照してください。

:h `[
:h .
于 2013-08-14T19:11:26.917 に答える
1

<C-R>=と挿入モードで組み合わせることで、これを行うことができますsystem()

カーソルを目的の位置に移動します。次に、挿入モードに入り、次のように入力します。

<C-R><C-P>=system('ls')<Enter>

<C-R><C-P>は、 との 2 つのキー コンボCtrlRを順番に表しCtrlPます。これに を続けるとすぐ=に、カーソルがプロンプトにドロップダウンしsystem('ls')、コマンドを完了するために入力します。

それはそれを行う必要があります。

ここでの秘訣は、 :system()の代わりに使用することです。これは関数、つまり式であるため、挿入モードで式レジスタと組み合わせることができます。この特殊レジスターの詳細については、を参照してください。:read!system():h @=

<C-R>いくつかのレジスターの内容を挿入するための挿入モードについては、すでによく知っているかもしれません。<C-R><C-P>それと同じですが、さらにインデントを「修正」します。ドキュメントは にあり:h i_CTRL-R_CTRL-Pます。

于 2013-08-14T19:38:25.920 に答える