キーボードショートカット – emacs: pythonコードのインデント/アンインデント領域を4つのスペースで区切るには?

emacs indentation keyboard-shortcuts python text-editing

私はemacsで選択されたpythonコードの領域を持っています。その中のすべての行のインデントとアンインデントを4スペースで行う最も効率的な方法は何ですか?

理想的には、文脈に依存しないものが欲しいです(例えば、インデントがpythonの構文に関係しないdocstringsの中でのインデントを可能にしてくれます)

私のモード行には (Python) と表示されています。ウェブを検索すると、pythonの代わりにpython-modeを使うという議論をたくさん見つけましたが、私は数日前にemacsを使い始めたばかりなので、理解する機会がないうちにデフォルトを変更することには注意しています。もし、python-modeに変更することが最良の選択肢であるならば、私はそれを答えとして受け入れることができます

試してみたこと(マニュアルより)

  • <TAB> 効果なし
  • C-M-\ 効果なし
  • C-x <TAB> (indent-rigidly) 1行ごとに1カラムずつインデントします(領域の選択を解除します)
  • M-i 1行目をタブでインデントする(長さ8スペース)
  • C-M-q – “C-M-qは未定義です”

私が見つけた唯一の方法はregex-replaceを使用することですが、このような単純なタスクのために、それはひどいキーストローク数です

  61  Ian Mackinnon  2010-08-09


ベストアンサー

変数python-indentを4とすると

M-x python-shift-right (C-c >)
M-x python-shift-left  (C-c <)

68  Chen Levy  2010-08-09


indent-rigidlyは、インデントする量を示す接頭辞引数を取るので、C-u 42 C-x TABは42カラムでインデントし、デフォルトの接頭辞引数は4なので、C-u C-x TABは4カラムでインデントします

再度地域を選択したい場合は、C-x C-xの後にC-x C-xを行ってください

18  Gilles ‘SO- stop being evil’  2010-08-09


indent-rigidly コマンドを数値の接頭辞で使用します

C-u 4 M-x indent-rigidlyで領域を4つのスペースでインデントし、C-u -4 M-x indent-rigidlyで4つのスペースを削除します

9  KeithB  2010-08-09


C-x C-xはコードをマークしてからM-x indent-for-tab-modeにします

行ごとにタブを押した場合の保存ですね

4  Nestor A. Diaz  2012-11-06


カラムモードを使うのもいいかもしれません

カラムモードで行を選択し、その行のすべてに一度に4つのスペースを追加します

  1. インデントしたい1行目の1列目にジャンプします
  2. C-<space>でマークを設定する
  3. ポイントを最後の行に移動します(1列目のまま)
  4. C-x r tでカラムモードに入ります(CUAモードの場合はC-<RET>
  5. <space><space><space><space><RET>

4つのスペースを削除するために同様の操作を行うことができます — マークされた領域に4つの列を含めて(ステップ2-3)、<DEL>を押すだけです

3  Steve Lianoglou  2010-08-09


上の Chen のソリューションを更新すると、現在 (Emacs 24.4.1 でテストしています) コマンドの名前が変更されています。つまり、変数python-indentに従ってインデントすると仮定すると、コマンドはpython-indent-shift-leftとpython-indent-shift-rightになります。することができます

  1. は、M-x python-indent-shift-rightまたはM-x python-indent-shift-leftと入力して発行します

  2. デフォルトの python モードのショートカット C-c >C-c < を使用します

  3. を再バインドします。例:私が使っているウィンドウズボタンのあるキーボードでは

    (global-set-key (kbd "s-s") 'python-indent-shift-left)
    (global-set-key (kbd "s-d") 'python-indent-shift-right)
    

3  Amnon Harel  2015-02-25


コンポーザビリティはEmacsの王様で、https://github.com/magnars/multiple-cursors.elM-iを組み合わせるだけで、インデントブロックコマンドができます。これがあなたのやることです

  1. M-> N回(ここでNはブロック内の行数)
  2. M-i

0  Evgeniy Dolzhenko  2015-08-04


S-<LEFT> and S-<RIGHT>はどちらもPythonメジャーモードでは問題なく動作します。特にクアモードでは、C-cC-xの動作が領域選択時にコピー/カットに変わるので便利です

0  Vincent  2017-09-26


タイトルとURLをコピーしました