私はemacsを独学しようとしてきました.dvorakを使用しているため、愚かC-c
にも移動キーにリバウンドして慣れました。今、私は実際にそれを使ってプログラミングを始めています.pythonファイルをロードしC-c
、python-mode
.
init.el
プレフィックス キーを再バインドし、ファイル内のすべての python コマンドを一度に変更できますか? そうでない場合、すべての python コマンドを個別に再バインドする必要がありますか?
私はemacsを独学しようとしてきました.dvorakを使用しているため、愚かC-c
にも移動キーにリバウンドして慣れました。今、私は実際にそれを使ってプログラミングを始めています.pythonファイルをロードしC-c
、python-mode
.
init.el
プレフィックス キーを再バインドし、ファイル内のすべての python コマンドを一度に変更できますか? そうでない場合、すべての python コマンドを個別に再バインドする必要がありますか?
Ctrl+Cを として機能さleft
せ、F12として機能させたい場合C-c
:
(define-key key-translation-map [f12] "\C-c")
(define-key key-translation-map "\C-c" [left])
これはマルチキー バインドにも影響することに注意してください。たとえば、Emacs を終了するにはCtrl+を入力する必要があります。X F12このコインの裏側は、C-c C-c
とタイプされていF12 F12ます。
python.el のソース コードを見ると、完全な仕様を使用してコマンドが個別に追加されていることがわかります(define-key map "\C-c\C-r" 'python-send-region)
。
したがって、それらをすべて自分でやり直す必要があります。それはかなり簡単だと言いました。あなたのコメントから、プレフィックス キーを に変更したいのですがC-'、正しくエスケープするための秘訣は、エスケープをまったく使用せず、代わりにマクロを使用することですkbd
(ドキュメント リンク)。
これにより、モードマップ定義を次のように更新できます。
(defvar python-mode-map
(let ((map (make-sparse-keymap)))
;; Mostly taken from python-mode.el.
(define-key map ":" 'python-electric-colon)
(define-key map "\177" 'python-backspace)
(define-key map (kbd "C-' <") 'python-shift-left)
(define-key map (kbd "C-' >") 'python-shift-right)
(define-key map (kbd "C-' C-k") 'python-mark-block)
(define-key map (kbd "C-' C-d") 'python-pdbtrack-toggle-stack-tracking)
(define-key map (kbd "C-' C-n") 'python-next-statement)
(define-key map (kbd "C-' C-p") 'python-previous-statement)
(define-key map (kbd "C-' C-u") 'python-beginning-of-block)
(define-key map (kbd "C-' C-f") 'python-describe-symbol)
(define-key map (kbd "C-' C-w") 'python-check)
(define-key map (kbd "C-' C-v") 'python-check) ; a la sgml-mode
(define-key map (kbd "C-' C-s") 'python-send-string)
(define-key map (kbd "C-\\ M-x") 'python-send-defun)
(define-key map (kbd "C-' C-r") 'python-send-region)
(define-key map (kbd "C-' M-r") 'python-send-region-and-go)
(define-key map (kbd "C-' C-c") 'python-send-buffer)
(define-key map (kbd "C-' C-z") 'python-switch-to-python)
(define-key map (kbd "C-' C-m") 'python-load-file)
(define-key map (kbd "C-' C-l") 'python-load-file) ; a la cmuscheme
(substitute-key-definition 'complete-symbol 'symbol-complete
map global-map)
(define-key map (kbd "C-' C-i") 'python-find-imports)
(define-key map (kbd "C-' C-t") 'python-expand-template)
(easy-menu-define python-menu map "Python Mode menu"
`("Python"
:help "Python-specific Features"
["Shift region left" python-shift-left :active mark-active
:help "Shift by a single indentation step"]
["Shift region right" python-shift-right :active mark-active
:help "Shift by a single indentation step"]
"-"
["Mark block" python-mark-block
:help "Mark innermost block around point"]
["Mark def/class" mark-defun
:help "Mark innermost definition around point"]
"-"
["Start of block" python-beginning-of-block
:help "Go to start of innermost definition around point"]
["End of block" python-end-of-block
:help "Go to end of innermost definition around point"]
["Start of def/class" beginning-of-defun
:help "Go to start of innermost definition around point"]
["End of def/class" end-of-defun
:help "Go to end of innermost definition around point"]
"-"
("Templates..."
:help "Expand templates for compound statements"
:filter (lambda (&rest junk)
(abbrev-table-menu python-mode-abbrev-table)))
"-"
["Start interpreter" python-shell
:help "Run `inferior' Python in separate buffer"]
["Import/reload file" python-load-file
:help "Load into inferior Python session"]
["Eval buffer" python-send-buffer
:help "Evaluate buffer en bloc in inferior Python session"]
["Eval region" python-send-region :active mark-active
:help "Evaluate region en bloc in inferior Python session"]
["Eval def/class" python-send-defun
:help "Evaluate current definition in inferior Python session"]
["Switch to interpreter" python-switch-to-python
:help "Switch to inferior Python buffer"]
["Set default process" python-set-proc
:help "Make buffer's inferior process the default"
:active (buffer-live-p python-buffer)]
["Check file" python-check :help "Run pychecker"]
["Debugger" pdb :help "Run pdb under GUD"]
"-"
["Help on symbol" python-describe-symbol
:help "Use pydoc on symbol at point"]
["Complete symbol" symbol-complete
:help "Complete (qualified) symbol before point"]
["Find function" python-find-function
:help "Try to find source definition of function at point"]
["Update imports" python-find-imports
:help "Update list of top-level imports for completion"]))
map))