Emacsのテキストの選択した領域を特定のスペース数だけシフトする方法は?


26

私はPythonコードを書いているので、行のブロックを移動/移動することは、各行を個別に通過することを避けるために重要です。アドオンなしでこれを行うにはどうすればよいですか?これを行う操作キーストロークコマンドのタイプはありますか?


3
Python固有でない回答については、emacs.stackexchange.com / q / 11およびemacs.stackexchange.com/q/18を参照してください。
レゴシア

回答:


40

デフォルトでindent-rigidlyバインドさC-x TABれているcommandを使用します。

インデントするスペースの数を指定するには、などのプレフィックス引数を使用しますC-5 C-x TAB

または、コマンドを呼び出してから、左/右矢印を使用して、インデントレベルをインタラクティブに調整できます。


接頭引数をどのように追加しますか?
Vassの

1
たとえばC-5 C-x TAB、現在の領域を5スペース分インデントしてみてください。
グルーカス

素晴らしいですが、なぜ最初の行も移動しないのですか?選択した行の最後の部分をつかんで、移動する行のセットを作成する必要があります。
バース

1
前の行から何も選択する必要はありませんが、インデントする最初の行の先頭から選択する必要があります。たとえばC-a、行の先頭に移動したりC-SPC、リージョンのマークを開始しC-n C-nたり、2行下に移動したり、C-5 C-x TABこれら2行をインデントしたりします。
グルーカス

1
「左/右矢印を使用して、インデントレベルをインタラクティブに調整します」すばらしいです!私はこれを知りませんでした。時々、追加または削除する必要があるスペースを推測する必要がありました。これが役立つことを願っています。
imz-イヴァンザカリヤシェフ

9

python-mode.elを使用している場合、C-c >またはC-c <ブロックを左または右にシフトする場合


上の行の最後の部分を選択しないと、選択の最初の行が動かないままになるのはなぜですか?
バース

この動作を再現することはできません。選択範囲のすべての行が移動されます。Emacs 24.4
ロンピック

glucas'はコメントでは、行の先頭から選択しない場合、これが起こるのだろうと言う
Vassの

6

string-rectangleコマンドは(C-x r t)選択された領域内の任意のテキストを(スペースを含む)を挿入するために使用することができます。

このテキストブロックがあり、すべての行の前に5つのスペースを挿入するとします。

abc
  def
    ghi

以下に示すように、最初に「0列」領域を選択します(ポイントは文字「a」上にあり、マークは「ghi」を含む行の同じ列にあります。

▮bc
  def
▯   ghi

を使用string-rectangleして、選択した領域に挿入するテキストを挿入します。この例では、ポイントとマークを含むすべての行に5つのスペースを挿入します。

C-x r t M-5 SPC RET

これにより、以下のテキストが強制的にインデントされます。

     abc
       def
         ghi

4

があるC-x TAB(にバインドindent-rigidly)。インデントするスペースの数を示すプレフィックス引数を指定します。負の数はその数のスペースを削除します。


0

Alt-4を押してからSPCを押すと、目的の結果が得られることがわかりました。これが最善の方法かどうかはわかりませんが、同様に機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.