[Emacs] НЕ VIM, а круче (xah fly keys) или XAH FLY KEYS. Большой выпуск

Автор Сообщение
news_bot ®

Стаж: 6 лет 8 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
18-Май-2021 06:31

Если не хотите потратить время зря!Пока что, эта статья только для EMACS-еров, а изначально создана лишь для меняНасколько я знаю многие программисты используют VIM, а некоторые тоже используют VIM, но они это делают в EMACS-е, EVIL (злом) режиме, это значит, что эти люди понимают все прелести VIM (быстрое редактирование текста без использования мыши, наличие нескольких режимов и т.д.), но им очень нравится возможность добавлять миллиарды плагинов. Но ещё я знаю, что VIM был сделан несколько миллионов лет назад, для программистов того времени и для того чтобы быть отдельным редактором (не для EMACS), поэтому VIM использует не все возможности которые мог бы, например: Клавиша для входа в командный режим находится в самой жопе углу клавиатуры (и. да я знаю что это можно легко поправить в .vimrc), также если я захочу перейти к редактированию другого файла, то мне нужно:
  • Перейти в командный режим (Нажав сами знаете куда)
  • Напечатать `:find` и имя файла
  • Если я ошибся в имени файла ---> во 2 пункт
Это может занять целую вечность, а менять текущий файл приходиться очень часто! А ещё если вы используйте раскладку dvorak, то как возможно вообще пользоваться VIM-ом? И вообще все клавишы VIM настроены не для того чтобы быстро ими пользоваться, а для того чтобы быстрее запомнить это тоже конечно классно, ведь каждая команда в VIM может превращаться в целое красивое и понятное любому носителю языка, предложение, а XAH FLY KEYS таким похвастаться не может, ведь он крут в другом, быстром редактировании текста, причем если вы пользователь какой-то не популярной раскладке, то лучше вы вряд ли найдете!Переходим к самому главному в этой прекрасной статье.XAH FLY KEYSВсе эти недостатки не имеет наш XAH FLY KEYS, он уже был разработан в наше время и не имеет все недостатки VIM, и по моему скромному мнению это самый лучший в мире способ для редактирования текста!Чуть-Чуть ИсторииЭтот мощный инструмент разработал XAH LEE, если вы уважающий себя EMACS-ер то вы знаете его имя, ведь этот мудрый китаец придумал ErgoEmacs и возможно вы также пользовались им.
Однако у него есть 1 недостаток (точнее больше, но о них Я вам не расскажу), это не наличие нормальной документации, она конечно есть, но сами посмотрите:
Вам конечно этого может и хватит, но блин XAH FLY KEYS имеет в несколько 10-в раз больше возможностей, которые я попробую объяснить (к сожалению я пользователь QWERTY раскладки и не буду объяснять как всем этим пользоваться на раскладке DVORAK или AZURE).УстановкаНа github всё описано, но я всё-таки обьясню краткий способ как это сделать:
  • Скачать xah-fly-keys через MELPA package manager для EMACS
  • Вставить и исполнить такой Emacs Lisp код:
    (require 'xah-fly-keys)
    (xah-fly-keys-set-layout "qwerty") ; обязательно
    (xah-fly-keys 1)
ПолбзуемсяВообще XAH-FLY-KEYS имеет 2 режима: COMMAND и INSERT (как в VIM), но в COMMAND есть тоже несколько режимов или не режимов, а префиксов для HOT-KEYS, сейчас всё объясню чуть по подробнее:
  • INSERT mode - (для вход из COMMAND наберите f) обычное редактирование файла
  • COMMAND mode - (для входа из INSERT наберите Alt+SPACE) режим для набора команд
А если вы в COMMAND mode, то вы можете набрать какую-то буковку и что-то произойдет, например если нажать f, то вы окажетесь в INSERT mode, НО также если вы нажмете SPACE (пробел), то все клавиши изменят свое значения, например если вы нажмете Space f, то вас заставят написать имя буфера для перехода в него, но также есть специальный клавиши и если на них нажать после того как вы нажали SPACE, то клавиши опять изменят свое значение, например если вы напечатайте Space i f, то перейдете в файл путь которого был под курсором.БАЗАНачнем с чего-то по проще:Перемещениеj - влево на один символi - вверх на один символk - вниз на один символl - вниз на один символo - вперёд на 1 словоu - назад на 1 слово; - вперёд на 1 предложение, Пример:
h - назад на 1 предложениеm - на прошлую закрывающую скобку. - на прошлую открывающую скобку/ - на противоположную скобку, Пример:
0 - перейти на место прошлого перемещения. Это очень удобно, например если вам надо просто добавить import файла, то вы идете сначала в начало файла, пишите импорта, нажимаете 0, и работайте дальше, думая о том что вы гений.Ctrl+4 - перейти на место следующей ошибки (работает только flycheck-mode)Ctrl+3 - перейти на место прошлой ошибки (работает только flycheck-mode)Space H - перейти в начало файла (Space - пробел)Space N - перейти в конец файла (Space - пробел)Space p - проскролить (если нажали первый раз -> расположить текущую строчку по середеине экрана, второй раз -> на начало экрана, третий раз -> на конец экрана)
Выделение8 - выделить текущее слово, если нажмете снова, то выделится вся строка, а потом по одной строке далее
1 - выделить то, что возможно или увеличить, то, что уже выделено
2 или 7 - выделить текущую строку6 - выделить "блок"
9 - выделить текст в ковычкахt - начать выделять то, где ты двигаешься (VISUAL MODE)Space a - выделить весь файлSpace o Space - включить режим выделение блоком
Удалениеd - удалить 1 символ позади5 - удалить 1 символ впередиe - удалить слово позадиr - удалить слово впередиx - вырезать строчку если что-то выделено вырезать то, что выделено (см. Копирование/Вставка)Space g - удалить всё от положения курсора до конца строкиg - удалить блок:
Space k f - удалить все строки, которые подходят к тому, что мы напишимSpace k t - удалить все строки которые совпадают с текущейSpace k g - удалить все строки которые не совпадают с текущейSpace k a - удалить все "пустые" строчкиРедактирование' - изменить виды разделителей. (Если пробелы -> поменять на подчеркивания, Если подчеркивания -> минусы (тире)), Пример:
z - Закомментировать/Раскомментировать текущую строчку или то, что выделеноw - если нету пробела поставить, если есть удалить.Очень странная штука.p - вставить пробел (Для этого не надо переходить в INSERT мод)b - поменять регистр (Заглавный Регистр, нижний регистр, ВЕРХНИЙ РЕГИСТР)Space 6 - поменять регистр у всего предложенияSpace k e - отсортировать выделенные строчкиSpace k p - экранировать все выделенные ковычки (поставить "" перед ", которые находятся в выделенном тексте)Space k k - повторить прошлую командуSpace o f - каждую линию обернуть в ковычки или в скобки или в то что вы там напишите, и разделить тем, что вы там выберитеSpace o g - превратить пробелы в переходы на новую строкуs - создать новую строчку, но на неё не перейтиРабота с окнами/файлами (FRAMES) , - перейти в другое окно (FRAME)
4 - разделить окно по горизонтальной линииSpace 4 - разделить окно по вертикальной линииSpace 5 - сделать все окна одинакого размераCtrl+7 - следующий буфер (открытый файл)Ctrl+8 - прошлый буфер (открытый файл)Ctrl+t - новый пустой буферCtrl+w - закрыть текущий буфер (открытый файл) Ctrl+s - сохранить буфер (открытый файл)Space m - просмотреть в dired режиме текущую дерикториюCtrl+Shift+s - сохранить буфер как...Space l b - сохранить все файлыSpace i w - открыть в приложение по умолчаниюSpace i g - скопировать полный путь до файлаSpace i s - открыть в проводнике файлSpace i f - открыть файл путь которого под курсором (путь не обязательно полный)Space , Del - удалить текущий файлSpace , x - сохранить все файлы + закрыть редакторSpace , c - запустить текущий файлПри старте поддерживаются вот такие, вот языки:php perl python ruby gohaskelljs typescript shell clojure racket ocaml cscript tex/latex javaВидSpace l Space - включить подрисовку пробелов
Space l . - расширить на весь экран (похоже на f11 в вашем браузере)Space l 2 - подсвечивать текущую строкуSpace l 4 - вкл./выкл. показ номера строкSoace l t - вкл./выкл. перенос строкCtrlr+= - увеличить шрифтCtrlr+- - уменьшить шрифтSpace l g - создать новое окно и отрыть в нём EMACS с текущим файломПлюшки (от Emacs)Space l 6 - календарь (красивый очень)Space l 7 - калькулятор (Вот как им пользоваться)Space l 9 - выполнить команду в териналеSpace l 0 - выполнить команду в терминале, применить к выделениюSpace l c - проверить все орфографические ошибки в файлеSpace l , - включить браузер в EmacsSpace l d - включить эмулятор терминала в EmacsSpace 9 - проверить на грамотность словоa - выполнить команду ELisp (тоже самое, что Alt+X)Помощь. HELPSpace j a - найти все команды совпадающие с нашим шаблономSpace j j - описать функциюSpace j v - описать горячую клавишуSpace j l - описать переменнуюSpace j g - дать информацию по всему что у меня естьМакросыSpace o e - запись макросаSpace o r - стоп записи макросаSpace o h - вызвать последний макросSpace o w - применить макрос ко каждой выделенной строкиПоискn - поиск с переходом, Я не знаю как объяснить, короче вот:
Space k r - поиск + замена, сначала выделит все совпадения так же как и при поиске с переходм, потом будет спрашивать надо ли заменить слово:
  • Напечатайте SPACE, если да
  • Напечатайте DEL, ксли нет
  • Напечатайте ENTER, если пропустить
Space k d - Поиск строк по шаблону (выделенных строк)Space y - начать поиск текущего словаКопирование/Вставкас - копировать (Если ничего не выделено копировать строку)v - вставитьx - вырезать (Если ничего не выделено вырезать строку)Работа с регистром 1. WTF?Если, что регистр 1 - очень классная вещь, это такой специальный буфер в который вы можете копировать текст, добавлять текст, вставлять его содержимое в текущий файл и т.д. и т.п.Space k 1 - добавить в регистр 1 выделенный текст (если ничего не выделено -> добавить строку)Space k 2 - очистить регистр 1Space k 3 - копировать в регистр 1 = очистить регистр 1; добавить в регистр 1 текстSpace k 4 - вставить содержимое КастомизируемВ Emaces любое действие можно сделать через какую-то Eisp фуекцию поэтому настройка также будет на ELisp-е.
  • Чтобы настроить выполнение какой-нибудь функции при нажатии какой-то клавиши в COMMAND режиме, то :
    (defun my-xfk-addon-command ()
      "Modify keys for xah fly key command mode keys
    To be added to `xah-fly-command-mode-activate-hook'"
      (interactive)
      (define-key xah-fly-key-map (kbd "какая-то клавиша") 'имя какой-нибудь функции)
      )
    (add-hook 'xah-fly-command-mode-activate-hook 'my-xfk-addon-command)
    ;; Здесь мысоздаем функцию my-xfk-addon-command,
    ;; которая связывает какую-нибудь функцию с какой-то клавишей.
    ;; а потом с помощью add-hook выполняем эту функцию перед входом в Command mode
  • Чтобы то же самое провернуть только в INSERT ружиме надо выполнить почти такой же код:
    (defun my-xfk-addon-command ()
      "Modify keys for xah fly key command mode keys
    To be added to `xah-fly-command-mode-activate-hook'"
      (interactive)
      (define-key xah-fly-key-map (kbd "какая-то клавиша") 'имя какой-нибудь функции)
      )
    (add-hook 'xah-fly-insert-mode-activate-hook  'my-xfk-addon-command)
    ;; Здесь мысоздаем функцию my-xfk-addon-command,
    ;; которая связывает какую-нибудь функцию с какой-то клавишей.
    ;; а потом с помощью add-hook выполняем эту функцию перед входом в insert mode
Это всё!!!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_emacs, #_vim, #_emacs, #_redaktirovanie (редактирование), #_programmirovanie (программирование), #_semeninrussia, #_redaktor (редактор), #_bolshoj_vyrusk (Большой выруск), #_emacs
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 01-Ноя 06:28
Часовой пояс: UTC + 5