рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдбреАрдИ рдХреЗ рд░реВрдк рдореЗрдВ Emacs

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ "рдХрдВрд╕реЛрд▓" рд╕рдВрдкрд╛рджрдХ (vim / emacs) рд╕реЗ рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрдИрдбреАрдИ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рд╕рдлрд▓ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкрд╛рдпрдерди-рдЬреЗрдбреА.рдПрд▓ рдкреИрдХреЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдордПрд╕реАрдПрд╕ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд░рд╕реНрд╕реА рдХреА рдЬрдЧрд╣ рдмрдВрдбрд▓ (* - рдЬреЗрдбреА) рд╡рд┐рдо рдХреЗ рд▓рд┐рдП рднреА рд╣реИ, рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЫрд╡рд┐

1. рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░реА


рдПрдордПрд╕реАрдПрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ ~ / .emacs рдФрд░ ~ / .emacs.d рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рдЖрдкрдХреЛ рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдЕрдВрдХрди рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рднреА рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕реЗ C (рдбрд┐рдлрд╝реЙрд▓реНрдЯ Ctrl) рдФрд░ рдореЗрдЯрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ Alt)ред рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреБрдЫ рдирд┐рдпрдо рднреА рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: Ch t рдпрд╣ рдХрдорд╛рдВрдб рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рде Ctrl рдФрд░ h рдХреЛ рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рд╕реЗ рдЬрд╛рд░реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ tред рдЧрд░реНрдо рдХреБрдВрдЬреА рдХреА рдкреВрд░реА рд╕реВрдЪреАред
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдмреБрдирд┐рдпрд╛рджреА рдХреБрдВрдЬреА рд╕рдордЭ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

2. рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ


рдмреЗрд╢рдХ, рдЕрдЬрдЧрд░-рдЬреЗрдбреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдкреИрдХреЗрдЬ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреИрд╕реЗ:

рдкрд╛рдпрдерди-рдЬреЗрдбреА рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдСрдЯреЛ-рд╕рдорд╛рдкрди рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдСрдЯреЛ-рдкреВрд░реНрдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдЙрд╕ рдХреЛрдб рдХреЛ рдкреВрд░рдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдпрд╛рдд рдкреВрд░рд╛ рдХрд░рдирд╛

2.1 Emacs-24 рдореЗрдВ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

Emacs рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреА рд╕рд░рд▓ рдФрд░ рддреНрд╡рд░рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП, ELPA (Emacs Lisp Package Archive) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ .emacs config рдлрд╛рдЗрд▓ рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
 (add-to-list 'load-path "~/.emacs.d/") (load "package") (require 'package) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/"))) 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
 Mx: package-list-packages 

рдФрд░ рдСрдЯреЛ-рдХрдореНрдкреНрд▓реАрдЯ, рдСрдЯреЛрдкреЗрдпрд░, рдлреНрд▓рд╛рдЗрдЪреЗрдХ, рдЖрдИрдкрд╛рдЗрдерди рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВ
 Mx: package-install 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреИрдХреЗрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдПрд▓-рдЧреЗрдЯ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИред рдПрд▓-рдЧреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, * рд╕реНрдХреНрд░реИрдЪ * ( Cx b ) рдмрдлрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:
 (url-retrieve "https://raw.github.com/dimitri/el-get/master/el-get-install.el" (lambda (s) (let (el-get-master-branch) (goto-char (point-max)) (eval-print-last-sexp)))) 

рдлрд┐рд░ Cj рджрдмрд╛рдПрдВ (рдпрд╣ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛), рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд рдХреЗ рд╕рд╛рде рдПрд▓-рдкреНрд░рд╛рдкреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдбрд┐рд╕реНрдХ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
 (add-to-list 'load-path "~/.emacs.d/el-get/el-get") (unless (require 'el-get nil 'noerror) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (let (el-get-master-branch) (goto-char (point-max)) (eval-print-last-sexp)))) (el-get 'sync) )))) (add-to-list 'load-path "~/.emacs.d/el-get/el-get") (unless (require 'el-get nil 'noerror) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (let (el-get-master-branch) (goto-char (point-max)) (eval-print-last-sexp)))) (el-get 'sync) 

рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ ido рдкреИрдХреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА emacs 24 рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ .emacs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВ:
 (require 'ido) (ido-mode t) 


2.2 рдЬреЗрдбреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

рдЕрдЬрдЧрд░-рдЬреЗрдбреА рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрди рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдУрдПрд╕ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
 pip install virtualenv 

 Mx: el-get-install jedi 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
 (add-hook 'python-mode-hook 'auto-complete-mode) (add-hook 'python-mode-hook 'jedi:ac-setup) 


реи.реи рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ emacs-nav рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
 Mx: el-get-install emacs-nav 

рдЫрд╡рд┐

3. рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрджреНрдзрд░рдг рдФрд░ рдХреЛрд╖реНрдардХ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдареАрдХ рдХрд░реЗрдВ редemacs:
 (add-hook 'after-init-hook #'global-flycheck-mode) (require 'autopair) (autopair-global-mode) 

рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз (рдСрдЯреЛрдкрд╛рдпрд░) рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрд╖реНрдардХ рдпрд╛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ ipython рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ
 (setq-default py-shell-name "ipython") (setq-default py-which-bufname "IPython") 


рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рд╕рдм, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрдкрд╛рджрдХ рд╕реЗ рд╣рдореЗрдВ рдорд┐рд▓рд╛, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдИрдбреАрдИред
рдЫрд╡рд┐
рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In188376/


All Articles