Fork me on GitHub

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:
    • реализация Common Lisp - SBCL
    • Slime — режим Emacs для разработки приложений на языке Common Lisp
    sudo apt install slime sbcl

IDE for Python

Плагины Emacs

Пример конфигурационного файла .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)

social