Emacs python-mode を使用しています。私は私の中でこれを使ってそれを呼び出します.emacs
(add-to-list 'load-path "~/emacs/python-mode.el-6.0.3/")
(autoload 'python-mode "python-mode" "Python Mode." t)
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))
(require 'python-mode)
(add-hook 'python-mode-hook
(lambda ()
(set-variable 'py-indent-offset 4)
;(set-variable 'py-smart-indentation nil)
(set-variable 'indent-tabs-mode nil)
(define-key py-mode-map (kbd "RET") 'newline-and-indent)
;(define-key py-mode-map [tab] 'yas/expand)
;(setq yas/after-exit-snippet-hook 'indent-according-to-mode)
))
私が書いた場合、それは一般的に問題ありません。
if condition:
Return キーを押すと、カーソルがインデントされた改行に適切に配置されます。問題は、インデントから正しく終了しないことです。他のシステムでは、インデントされた句の本文 (if
文の本文など) に新しい行を作成して Backspace キーを押すと、バックスペースではなく、インデントで 1 レベル飛び出します。たとえば、私が持っていた場合:
if condition:
statement1
statement2
そして、リターン、バックスペースを押した後statement2
、カーソルをここに置きます:
if condition:
statement1
statement2
<-- cursor position
多くの識別レベルがあり、これを行わない場合、適切なインデント レベルに到達するまで手動でバックスペースする必要があるため、Python の編集は不可能になります。エラーが発生しやすく、面倒です。
for something:
for other:
if hello:
while x:
statement1
<-- How to indent back to level of "for other"?
編集: 「emacs -nw」として emacs を実行している間、これを機能させることができませんでした (サーバーにリモートでログインしていて、X インターフェイスを開始したくありません)。「-nw」を削除して、より遅い X インターフェイスをリモートで使用して emacs を使用すると、すべて動作します...これはなぜでしょうか? バックスペースなどに関連するシェル構成の問題でしょうか?
これはどのように修正できますか?句の中にいる場合は、インデント レベルでバックスペースするだけです。ありがとう。