質問: emacs:pythonコードの領域を4スペースでインデント/インデント解除する方法は? pythonコードの領域がemacsで選択されています。その中のすべての行を4つのスペースでインデントおよびインデント解除する最も効率的な方法は何ですか?理想的には、文脈依存ではないものを希望します(たとえば、インデントがpython構文に関連しない)docstring内のパッセージをインデントできるようにします)。モード行に(python)と表示されます。 webを検索したところ、pythonの代わりに python-mode を使用することについて多くの議論がありましたが、emacsを使い始めたのは数日前なので、デフォルトの変更には注意が必要です。それらを理解する機会があった前に。 python-modeに変更するのが最善の方法である場合は、それを回答として受け入れます。私が試したこと(マニュアルから): <tab>影響なし c-m-\影響なし c-x <tab>(indent-rigidly)すべての行を1列ずつインデントします(領域の選択を解除します) m-i最初の1行をタブでインデントします(長さ8スペース) c-m-q-「c-m-qは未定義です」 私が見つけた唯一の方法はregex-replaceを使用することですが、それはそのような単純なタスクのための恐ろしい数のキーストロークです。
回答: 上記の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 <を使用します それらを再バインドします。たとえば、私が使用するwindowsボタンを備えたキーボードの場合: (global-set-key (kbd "s-s") 'python-indent-shift-left) (global-set-key (kbd "s-d") 'python-indent-shift-right)