私は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列目にジャンプします
C-<space>
でマークを設定する- ポイントを最後の行に移動します(1列目のまま)
C-x r t
でカラムモードに入ります(CUAモードの場合はC-<RET>
)<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になります。することができます
は、
M-x python-indent-shift-right
またはM-x python-indent-shift-left
と入力して発行しますデフォルトの python モードのショートカット
C-c >
とC-c <
を使用しますを再バインドします。例:私が使っているウィンドウズボタンのあるキーボードでは
(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.elにM-i
を組み合わせるだけで、インデントブロックコマンドができます。これがあなたのやることです
M->
N回(ここでNはブロック内の行数)M-i
0 Evgeniy Dolzhenko 2015-08-04
S-<LEFT>
and S-<RIGHT>
はどちらもPython
メジャーモードでは問題なく動作します。特にクアモードでは、C-c
とC-x
の動作が領域選択時にコピー/カットに変わるので便利です
0 Vincent 2017-09-26