GNU Emacs 私が芋぀けたこずのない蚘事...

読者の皆さん、こんにちは

この蚘事では、 GNU Emacsテキスト゚ディタヌのセットアップに぀いお詳しく説明したす。

GNU Emacs オペレヌティングシステムは、プログラム可胜なプログラミング蚀語で曞かれたプログラマ向けのプログラム可胜なテキスト゚ディタです。

Emacsを拡匵するには、 Lisp蚀語の方蚀-Emacs Lispが䜿甚されたす。
厳密に蚀えば、Emacsを単なるテキスト゚ディタヌず呌ぶこずはできたせん。 Emacsは、Emacs Lisp蚀語のむンタヌプリタヌであり、ナヌザヌ向けにカスタマむズされたテキスト゚ディタヌのコンストラクタヌです。 プログラムのごく䞀郚はC蚀語で実装され玄30がOSずの基本的な察話、入出力、りィンドりのレンダリングを担圓、すべおの䞻芁な機胜はEmacs Lisp以降、elispにありたす。 GNU Emacsを他のプロのテキスト゚ディタヌから際立たせるのはこのアヌキテクチャです—それは途方もなく拡匵可胜です。

この゚ディタヌの機胜は非垞に倧きく倚様であるため、この環境を初めお䜿甚するナヌザヌが快適になるこずは非垞に困難です。 チュヌニングプロセスのみずは䜕ですか-それには数幎、 たたは䞀生かかるこずがありたす。 それが、私がこの蚘事を曞くこずにした理由です-Emacsの初期蚭定の詳现なガむドです。


珟代のIT業界では、「21䞖玀のテキスト゚ディタヌ」、Emacsの殺人者、および/たたはVimの代替品の開発に関連しお、さたざたな野心的なプロゞェクトがたすたす登堎しおいたす。


私は䜕を蚀うこずができたす...この困難な仕事で圌らに幞運を。 そしお、おそらくGNU Emacsを蚭定する぀もりです。


はい あなたは間違っおいたせんでした。 映画「トロンレガシヌ」。 GNU Emacsもそこで䜿甚されたす。 誰が考えたでしょう...

譊告するのを忘れたした Common Lisp Lisp蚀語のもう1぀の方蚀で曞いおいるので、このプログラミング蚀語甚のマップず女の子を備えた本栌的なIDEにEmacsを倉える方法に぀いおの資料がありたす。 良い䟋、ずころで...

さあ、行こう

蚭眮


MS Windowsの堎合


GNU / Linuxディストリビュヌションには4぀の方法がありたす䟋ずしおdebベヌスのディストリビュヌションを䜿甚


Mac OS Xの堎合


執筆時点で、゚ディタの最新バヌゞョンはEmacs-24.4です。 Mac OS XたたはMS Windowsで䜿甚しおください。 GNU / Linuxの堎合、ディストリビュヌションの暙準リポゞトリにあるバヌゞョンを䜿甚するこずをお勧めしたす。

カスタマむズ


Emacsを構成するには、少なくずも4぀の方法がありたす。


私たちは簡単な方法を探しおいたせん 蚭定ファむルをelisp蚀語で曞きたす
すぐに蚀っおやった

.Emacs蚭定ファむル


GNU Emacsをコンピュヌタヌに正垞にむンストヌルしたら、 .emacsずいうファむルを䜜成し、その䞭に基本蚭定を曞き蟌む必芁がありたす。
蚘事で䜿甚されおいる名称繰り返し-孊習の母


したがっお、Emacsを実行したす。 Cx Cfキヌの組み合わせを䜿甚しお、新しい.emacsファむルを䜜成し、曞き蟌みを開始したす。 気分を害するこずはありたせんが、私はelisp蚀語の構文には觊れたせん-これは蚘事を怪物に倉えたす。 最埌に、必芁なリ゜ヌスぞのリンクを提䟛したす。

始めるために、Emacsでどのオペレヌティングシステムが実行されおいたかを䌝えたしょう。 これを行うために、elispでこれを支揎する2぀の関数を䜜成したす。

 ;; System-type definition (defun system-is-linux() (string-equal system-type "gnu/linux")) (defun system-is-windows() (string-equal system-type "windows-nt")) 

珟圚、これらの関数を分岐挔算子の条件ずしお呌び出しお、Emacsのクロスプラットフォヌム構成ファむルを構成できたす䜜業の結果は、MS WindowsおよびGNU / Linuxディストリビュヌションで正垞に動䜜する.emacsファむルになりたす。MacOS Xではテストしおいたせん 。

Common LispのIDE


EmacsをCommon Lisp蚀語の完党な開発環境に倉えるには、2぀のパッケヌゞが必芁です。


あなたがMS Windowsのナヌザヌであり、 突然 Lispに曞き蟌む堎合、次のものが必芁です。


GNU / Linuxでは、すべおがよりシンプルですコマンドラむンから実行したす

 sudo aptitude install slime sbcl 

さらに行こう


Mac OS XたたはGNU / Linuxディストリビュヌションの幞せなナヌザヌであれば、Emacsをサヌバヌずしお実行するず䟿利です。

 ;; Start Emacs as a server (when (system-is-linux) (require 'server) (unless (server-running-p) (server-start))) ;;  Emacs  ,   - GNU/Linux 

次に、むンストヌルされたアドオン特に、SlimeおよびSBCLパッケヌゞを芋぀ける方法をEmacsに瀺したす。

 ;; MS Windows path-variable (when (system-is-windows) (setq win-sbcl-exe "C:/sbcl/sbcl.exe") (setq win-init-path "C:/.emacs.d") (setq win-init-ct-path "C:/.emacs.d/plugins/color-theme") (setq win-init-ac-path "C:/.emacs.d/plugins/auto-complete") (setq win-init-slime-path "C:/slime") (setq win-init-ac-dict-path "C:/.emacs.d/plugins/auto-complete/dict")) ;; Unix path-variable (when (system-is-linux) (setq unix-sbcl-bin "/usr/bin/sbcl") (setq unix-init-path "~/.emacs.d") (setq unix-init-ct-path "~/.emacs.d/plugins/color-theme") (setq unix-init-ac-path "~/.emacs.d/plugins/auto-complete") (setq unix-init-slime-path "/usr/share/common-lisp/source/slime/") (setq unix-init-ac-dict-path "~/.emacs.d/plugins/auto-complete/dict")) 

私たちが誰なのかをEmacsに䌝えたしょう誰が知っおいるか、Emacs経由でメヌルを送信するか、 jabber 'e ...

 ;; My name and e-mail adress (setq user-full-name "%user-name%") (setq user-mail-adress "%user-mail%") 

私のお気に入りはdired-modeです 。 蚭定しおください

 ;; Dired (require 'dired) (setq dired-recursive-deletes 'top) ;;      ... 

これで、キヌの組み合わせCx dでdired-modeを開始できたす。 diredモヌドでフォルダヌを削陀するには、そのフォルダヌにカヌ゜ルを合わせおdを抌し、次にxを抌したす。 フォルダヌから削陀マヌクを削陀するには、 uを抌したす。

ほずんどすべおのプログラミング蚀語の関数定矩を「ゞャンプ」する玠晎らしい方法はImenuです。 100,500行の関数ファむルを含むプログラムファむルがあるずしたす。 関係ありたせん F6を抌しお、ミニバッファヌに目的の関数の名前の䞀郚を入力し、 TABで補完したす。 Enterキヌを抌したす -そしお、目的の機胜の定矩に぀いお説明したす。

 ;; Imenu (require 'imenu) (setq imenu-auto-rescan t) ;;       (setq imenu-use-popup-menu nil) ;;  Imenu    (global-set-key (kbd "<f6>") 'imenu) ;;  Imenu  F6 

りィンドりのヘッダヌにオヌプンバッファの名前を曞き蟌みたす。

 ;; Display the name of the current buffer in the title bar (setq frame-title-format "GNU Emacs: %b") 

Emacsがアドオンず倖郚プログラムを探す方法を特定したこずを芚えおいたすか 起動時にこれらのパスに沿っお「远加」されたす。

 ;; Load path for plugins (if (system-is-windows) (add-to-list 'load-path win-init-path) (add-to-list 'load-path unix-init-path)) 

Emacsがプレヌン/テキストノヌトオヌガナむザヌ、参照情報、プロゞェクト管理、ナレッゞベヌス線成などのための優れた環境を提䟛するこずを忘れないでください。 -org-mode  構成

 ;; Org-mode settings (require 'org) ;;  org-mode (global-set-key "\C-ca" 'org-agenda) ;;      (global-set-key "\C-cb" 'org-iswitchb) ;;  org-mode (global-set-key "\C-cl" 'org-store-link) (add-to-list 'auto-mode-alist '("\\.org$" . Org-mode)) ;;  *.org   org-mode 

犁欲䞻矩に矎しさをもたらしたしょう-起動時にりェルカム画面を削陀したす

 ;; Inhibit startup/splash screen (setq inhibit-splash-screen t) (setq ingibit-startup-message t) ;;      Ch Ca 

カヌ゜ルが角括匧の1぀にある堎合、 {}、[]、の間の匏を遞択したす-プログラマヌにずっお䟿利です

 ;; Show-paren-mode settings (show-paren-mode t) ;;     {},[],() (setq show-paren-style 'expression) ;;     {},[],() 

Emacsは、新しいバヌゞョンで電気改造を導入したした 。 それらの最初は自動的にむンデントしたす非垞にひどく動䜜したす、2番目は括匧、匕甚笊などを閉じたす。 最初のものを無効にし Pythonプログラマヌは私を理解したす... 、2番目のものを有効にしたす

 ;; Electric-modes settings (electric-pair-mode 1) ;;  {},[],()      (electric-indent-mode -1) ;;   electric-indent-mod' (default in Emacs-24.4) 

䞊に入力するずきに遞択したテキストを削陀できるようにしたいですか お願い

 ;; Delete selection (delete-selection-mode t) 

䜙分なものを削陀したしょうあらゆる皮類のメニュヌ、 スクロヌルバヌ 、 ツヌルバヌなど

 ;; Disable GUI components (tooltip-mode -1) (menu-bar-mode -1) ;;    (tool-bar-mode -1) ;;  tool-bar (scroll-bar-mode -1) ;;    (blink-cursor-mode -1) ;;    (setq use-dialog-box nil) ;;      -    (setq redisplay-dont-pause t) ;;    (setq ring-bell-function 'ignore) ;;    

自動保存ずバックアップはありたせん ハヌドコアのみ

 ;; Disable backup/autosave files (setq make-backup-files nil) (setq auto-save-default nil) (setq auto-save-list-file-name nil) ;;   ...   -  nil  t 

蚭定するのが最も苊しくお難しい堎所ぱンコヌディングです

 ;; Coding-system settings (set-language-environment 'UTF-8) (if (system-is-linux) ;;  GNU/Linux  utf-8,  MS Windows - windows-1251 (progn (setq default-buffer-file-coding-system 'utf-8) (setq-default coding-system-for-read 'utf-8) (setq file-name-coding-system 'utf-8) (set-selection-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8-unix) (set-terminal-coding-system 'utf-8) (prefer-coding-system 'utf-8)) (progn (prefer-coding-system 'windows-1251) (set-terminal-coding-system 'windows-1251) (set-keyboard-coding-system 'windows-1251-unix) (set-selection-coding-system 'windows-1251) (setq file-name-coding-system 'windows-1251) (setq-default coding-system-for-read 'windows-1251) (setq default-buffer-file-coding-system 'windows-1251))) 

行番号付けをオンにしたす。

 ;; Linum plugin (require 'linum) ;;  Linum (line-number-mode t) ;;     mode-line (global-linum-mode t) ;;       (column-number-mode t) ;;     mode-line (setq linum-format " %d") ;;     

私たちは矎しさをもたらし続けたす

 ;; Fringe settings (fringe-mode '(8 . 0)) ;;     (setq-default indicate-empty-lines t) ;;           (setq-default indicate-buffer-boundaries 'left) ;;    ;; Display file size/time in mode-line (setq display-time-24hr-format t) ;; 24-    mode-line (display-time-mode t) ;;    mode-line (size-indication-mode t) ;;    %- 

長い行の自動ハむフネヌション

 ;; Line wrapping (setq word-wrap t) ;;    (global-visual-line-mode t) 

起動時にEmacsでりィンドりのサむズを決定したす。

 ;; Start window size (when (window-system) (set-frame-size (selected-frame) 100 50)) 

オンラむンでファむルを怜玢しお開きたすか お願い

 ;; IDO plugin (require 'ido) (ido-mode t) (icomplete-mode t) (ido-everywhere t) (setq ido-vitrual-buffers t) (setq ido-enable-flex-matching t) 

オヌプンバッファ間のクむックナビゲヌション

 ;; Buffer Selection and ibuffer settings (require 'bs) (require 'ibuffer) (defalias 'list-buffers 'ibuffer) ;;      Cx Cb (global-set-key (kbd "<f2>") 'bs-show) ;;  buffer selection  F2 


カラヌスキヌム。 それらなしではどうですか これを行うには


 ;; Color-theme definition <http://www.emacswiki.org/emacs/ColorTheme> (defun color-theme-init() (require 'color-theme) (color-theme-initialize) (setq color-theme-is-global t) (color-theme-charcoal-black)) (if (system-is-windows) (when (file-directory-p win-init-ct-path) (add-to-list 'load-path win-init-ct-path) (color-theme-init)) (when (file-directory-p unix-init-ct-path) (add-to-list 'load-path unix-init-ct-path) (color-theme-init))) 

コヌドの匷調衚瀺

 ;; Syntax highlighting (require 'font-lock) (global-font-lock-mode t) ;;    Emacs-22.  ... (setq font-lock-maximum-decoration t) 

むンデント蚭定

 ;; Indent settings (setq-default indent-tabs-mode nil) ;;     TAB' (setq-default tab-width 4) ;;   - 4   (setq-default c-basic-offset 4) (setq-default standart-indent 4) ;;    - 4   (setq-default lisp-body-indent 4) ;;  Lisp-  4   (global-set-key (kbd "RET") 'newline-and-indent) ;;   Enter      (setq lisp-indent-function 'common-lisp-indent-function) 

スムヌズなスクロヌル

 ;; Scrolling settings (setq scroll-step 1) ;; -  1  (setq scroll-margin 10) ;;   /    10   /  (setq scroll-conservatively 10000) 

ミニバッファヌ内のメッセヌゞを短くしたす。

 ;; Short messages (defalias 'yes-or-no-p 'y-or-np) 

䞀般的なOSクリップボヌド

 ;; Clipboard settings (setq x-select-enable-clipboard t) 

バッファヌの最埌の空行の蚭定

 ;; End of file newlines (setq require-final-newline t) ;;          (setq next-line-add-newlines nil) ;;         ;;   

怜玢結果を匷調衚瀺したす。

 ;; Highlight search resaults (setq search-highlight t) (setq query-replace-highlight t) 

M矢印キヌの組み合わせを䜿甚した分割間の移動 org-modeを陀く

 ;; Easy transition between buffers: M-arrow-keys (if (equal nil (equal major-mode 'org-mode)) (windmove-default-keybindings 'meta)) 

行末の䜙分なスペヌスを削陀し、 TABをスペヌスに眮き換え、バッファヌをファむルに自動的に保存するずきにむンデントを揃えたす。

 ;; Delete trailing whitespaces, format buffer and untabify when save buffer (defun format-current-buffer() (indent-region (point-min) (point-max))) (defun untabify-current-buffer() (if (not indent-tabs-mode) (untabify (point-min) (point-max))) nil) (add-to-list 'write-file-functions 'format-current-buffer) (add-to-list 'write-file-functions 'untabify-current-buffer) (add-to-list 'write-file-functions 'delete-trailing-whitespace) 

CEDETパッケヌゞ-C / C ++ / Javaでの䜜業CEDETのAlex Ott 'a による優れた蚘事 

 ;; CEDET settings (require 'cedet) ;;  ""  CEDET.  ... (add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode) (add-to-list 'semantic-default-submodes 'global-semantic-mru-bookmark-mode) (add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode) (add-to-list 'semantic-default-submodes 'global-semantic-highlight-func-mode) (add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode) (add-to-list 'semantic-default-submodes 'global-semantic-show-parser-state-mode) (semantic-mode t) (global-ede-mode t) (require 'ede/generic) (require 'semantic/ia) (ede-enable-generic-projects) 

オヌトコンプリヌト入力。 これを行うには


 ;; Auto-complete plugin <http://www.emacswiki.org/emacs/AutoComplete> (defun ac-init() (require 'auto-complete-config) (ac-config-default) (if (system-is-windows) (add-to-list 'ac-dictionary-directories win-init-ac-dict-path) (add-to-list 'ac-dictionary-directories unix-init-ac-dict-path)) (setq ac-auto-start t) (setq ac-auto-show-menu t) (global-auto-complete-mode t) (add-to-list 'ac-modes 'lisp-mode) (add-to-list 'ac-sources 'ac-source-semantic) ;;    CEDET (add-to-list 'ac-sources 'ac-source-variables) ;;   (add-to-list 'ac-sources 'ac-source-functions) ;;    (add-to-list 'ac-sources 'ac-source-dictionary) ;;       (add-to-list 'ac-sources 'ac-source-words-in-all-buffer) ;;    (add-to-list 'ac-sources 'ac-source-files-in-current-dir)) (if (system-is-windows) (when (file-directory-p win-init-ac-path) (add-to-list 'load-path win-init-ac-path) (ac-init)) (when (file-directory-p unix-init-ac-path) (add-to-list 'load-path unix-init-ac-path) (ac-init))) 

Common Lisp- Slimeの環境をセットアップしたす。

 ;; SLIME settings (defun run-slime() (require 'slime) (require 'slime-autoloads) (setq slime-net-coding-system 'utf-8-unix) (slime-setup '(slime-fancy slime-asdf slime-indentation))) ;;    Slime ;;;; for MS Windows (when (system-is-windows) (when (and (file-exists-p win-sbcl-exe) (file-directory-p win-init-slime-path)) (setq inferior-lisp-program win-sbcl-exe) (add-to-list 'load-path win-init-slime-path) (run-slime))) ;;;; for GNU/Linux (when (system-is-linux) (when (and (file-exists-p unix-sbcl-bin) (file-directory-p unix-init-slime-path)) (setq inferior-lisp-program unix-sbcl-bin) (add-to-list 'load-path unix-init-slime-path) (run-slime))) 

ブックマヌクのセットアップ-テキスト内をすばやく移動するのに圹立぀ブックマヌク

 ;; Bookmark settings (require 'bookmark) (setq bookmark-save-flag t) ;;      (when (file-exists-p (concat user-emacs-directory "bookmarks")) (bookmark-load bookmark-default-file t)) ;;        (global-set-key (kbd "<f3>") 'bookmark-set) ;;    F3 (global-set-key (kbd "<f4>") 'bookmark-jump) ;;     F4 (global-set-key (kbd "<f5>") 'bookmark-bmenu-list) ;;    (setq bookmark-default-file (concat user-emacs-directory "bookmarks")) ;;     bookmarks  .emacs.d 

実際、それだけです Cx Csをクリックしお、 .emacsファむルを保存できたす。 .emacsファむルず.emacs.dフォルダヌを配眮する堎所my .emacsからのパスを䜿甚する堎合

MS Windows


GNU / Linux


私の.emacsは、 GitHubペヌゞからダりンロヌドできたす。

私のemacs

画像

䟿利なリンク


HabrahabrのGNU Emacs に関する倚くの有甚な蚘事 。 たた、Dmitry Bushenkoが公開したEmacsに関するYouTubeの玠晎らしいスクリヌンキャストシリヌズがありたす。



䞀連のスクリヌンキャスト 英語Emacs Rocks。

信じられないほど巚倧で詳现か぀有甚な蚘事英語 Sacha ChuaのEmacs蚭定 。

Emacs甚の倚皮倚様なカラヌテヌマ。 こちらをご芧ください 。

別の゚ディタヌVimのナヌザヌを無芖しないために、GitHubにある.vimrcぞのリンクを次に瀺したす。 そこですべおが詳现に説明されおいたすその堎合、Vimに関する蚘事を曞くこずができたす...。

芪愛なる読者の皆さんのコメントを楜しみにしおいたす。 自分にずっお䜕か圹に立぀/新しいものを芋぀けおほしい。

Emacsがあなたず䞀緒にいたすように...

ご枅聎ありがずうございたした。

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


All Articles