Полезные ссылки
- GNU Emacs
- GNU Emacs Lisp Reference Manual
- Шпаргалка по редактору "Emacs"
- Markdown Mode for Emacs
- Emacs для начинающих
- Руководство по GNU Emacs
- EMACS: автоустановка пакетов и хоткеи в русской раскладке
Установка Emacs
sudo apt install emacs emacs-goodies-el
Команды
Перемещения по тексту
- C-p : перейти на предыдущую строку
- C-n : перейти на следующую строку
- C-f : перейти на один символ вперёд
- C-b : перейти на один символ назад
- C-u N !!! : N раз выполнить !!!
- C-a : перейти к началу текущей строки
- C-e : перейти к концу текущей строки
- C-v : перейти вперёд на экран (аналог Page Down)
- M-v : перейти назад на экран (аналог Page Up)
- C-l : установить текущую строку по центру экрана (отцентрировать)
- M-< : перейти в начало файла
- M->: перейти в конец файла
- M-f : перейти к следующему слову
- M-b : перейти к предыдущему слову
- M-a : перейти к началу текуего параграфа.
- M-e : перейти к концу текущего параграфа.
- C-s : нажмите C-s, после чего введите слово для поиска.
- C-r : обратный поиск, в остальном то же самое что и C-s.
- C-M-s : нажмите C-s после ввода регулярного выражения, чтобы начать поиск.
- C-M-r : обратный поиск, в остальном то же самое что и C-M-s.
-
$emacs +N file : перейти на N-ую строку после открытия файла
-
M-g g N: перейти на N-ю строку
Удаления текста
Delete the character just before the cursor- C-d Delete the next character after the cursor
- M-
Kill the word immediately before the cursor - M-d Kill the next word after the cursor
- C-k Kill from the cursor position to end of line
- M-k Kill to the end of the current sentence
Работа с выделением
- C-
- начало выделения текста - C-w - вырезать выделенную область
- M-w - скопировать выделенную область
- C-y - вставить текст которую ранее скопировали/вырезали
-
M-y - заменить текст
-
C-/ - отмена действий
Работа с файлами
- C-x C-f - создание нового файла
- C-x C-s - сохранение файла
- C-x C-w - сохранение буфера с новым именем
Работа с буферами
- C-x C-b - список буферов
- C-x b - перейти на буфер
- C-x k buffer - закрыть буфер buffer
- M-x kill-some-buffers - закрыть все буферы
Работа с окнами
- C-x 1 - оставить только один буфер
- C-x 0 - закрыть буфер
- C-x o - перейти на следующий буфер
- C-x 2 - открыть горизонтальное окно
- C-x 3 - открыть вертикальное окно
пустой конфиг .emacs
;; System-type definition
(defun system-is-linux()
(string-equal system-type "gnu/linux"))
(defun system-is-windows()
(string-equal system-type "windows-nt"))
IDE for Common Lisp
- пакеты для превращения emacs в среду Common Lisp:
sudo apt install slime sbcl
IDE for Python
Плагины Emacs
- Sr SpeedBar - для удобной навигации по файловой системе
- Yasnippet - для различных снипетов
- Practical Emacs Lisp
Пример конфигурационного файла .emacs:
;; System-type definition
(defun system-is-linux()
(string-equal system-type "gnu/linux"))
(defun system-is-windows()
(string-equal system-type "windows-nt"))
;; Start Emacs as a server
(when (system-is-linux)
(require 'server)
(unless (server-running-p)
(server-start))) ;; запустить Emacs как сервер, если ОС - GNU/Linux
;; 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"))
;; My name and e-mail adress
(setq user-full-name "kaefik")
(setq user-mail-adress "ilnursoft@gmail.com")
;; 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")
;; 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) ;; экран приветствия можно вызвать комбинацией C-h C-a
;; Show-paren-mode settings
(show-paren-mode t) ;; включить выделение выражений между {},[],()
(setq show-paren-style 'expression) ;; выделить цветом выражения между {},[],()
;; 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") ;; задаем формат нумерации строк
;; Line wrapping
(setq word-wrap t) ;; переносить по словам
(global-visual-line-mode t)
;; 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) ;; отдельный список буферов при нажатии C-x C-b
(global-set-key (kbd "<f2>") 'bs-show) ;; запуск buffer selection кнопкой F2
;; 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)
;; Clipboard settings
(setq x-select-enable-clipboard t)