2011-12-31 11 views
17

vi{va{を使用してC++コードブロックを選択できます。私はそれらをヤンク/削除する必要があるとき私に多くを助けます。Vimを使ってPythonコードブロックを選択する方法は?

しかし、Pythonはインデントを使用してコードブロックを示します。私はもっ​​と良い方法を見つけることができません。何か案は?

+0

:あなたの関数は、いくつかのクラスの中にある場合

、あなたの代わりに "ZM" の "ZC" あなたはZMを作るために〜/ .vimrcとに次の行を追加します。必要

/ZC作業を使用することができます可能な複製[Vimのインデントレベルに基づいてブロックをマークする](http://stackoverflow.com/questions/7377771/mark-block-based-on-indentation-level-in-vim) –

答えて

23

私はまだそれを使用する機会はあまりありませんでしたが、マイケルスミスのvim-indent-objectはあなたの望むものに近いかもしれません。上のカーソル5.
を通じてライン2を選択する

1 This is 
    2 some text 
    3  with multiple 
    4 levels of 
    5 indentation. 
    6 There is also 
    7  another stanza. 

ライン2上のカーソルが、4または5種類Vii

使用例(行番号がアクティブset numberと同様に示されています) 5を介して行2を選択するライン3、ライン3上のカーソル3.
を通じてライン2を選択するタイプVai、タイプVaiii(又はViiii)は、(ビジュアルモードでインデントオブジェクトの複数の用途は次のレベルに選択範囲を拡張しますアップ/アウト)。
上記現在のインデントレベルプラスライン 便利なあなたは入門ラインをつかむしたい(例えばifとその「それから」ブロックをつかむ):

テキストは、それが定義オブジェクトです:

  • ai
  • ii:現在のインデントレベル
  • aI:現在のインデントレベルに加え、上記1行
    USEF以下一行"end"ステートメントを使用する言語の場合はul:if/endif)。
  • iI:現在のインデントレベル(効果的に、ii、およびiIが同じである)

オブジェクトは、現在のインデントレベルとスタートを削除するには、テキストオブジェクト(すなわちciiを期待して、他のコマンドでも使用することができますその置換を挿入する)。

+0

現在のインデントレベルに空白行がある場合は機能しますか? – industryworker3595112

6

ビジュアルモードの場合はvと打ち込み、(または)と表示されます。これにより、次の空白行に移動します。それはあなたのコードブロックに対応していなければなりません。

+1

これは正しいですか?'{}'は段落のためのもので、次の空白行に移動します。 – progo

+1

'('と ')'は文のためのものです。 "文は' .'、 '!'または '?'で終わり、行の終わりかスペースかタブで終わるものと定義されています。 –

1

行を表示して(:set nu)、コードブロックが始まる行(:lineNumber)に移動してそれらをヤンクすることができます。

0

私は通常、ファイル全体を折り畳むために "zM"を使用し、次に関数全体をヤンクするには "2yy"を使用します。

autocmd FileType python set foldmethod=indent 
関連する問題