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

от автора

Если не хотите потратить время зря!

Пока что, эта статья только для EMACS-еров, а изначально создана лишь для меня

Насколько я знаю многие программисты используют VIM, а некоторые тоже используют VIM, но они это делают в EMACS-е, EVIL (злом) режиме, это значит, что эти люди понимают все прелести VIM (быстрое редактирование текста без использования мыши, наличие нескольких режимов и т.д.), но им очень нравится возможность добавлять миллиарды плагинов. Но ещё я знаю, что VIM был сделан несколько миллионов лет назад, для программистов того времени и для того чтобы быть отдельным редактором (не для EMACS), поэтому VIM использует не все возможности которые мог бы, например: Клавиша для входа в командный режим находится в самой жопе углу клавиатуры (и. да я знаю что это можно легко поправить в .vimrc), также если я захочу перейти к редактированию другого файла, то мне нужно:

  1. Перейти в командный режим (Нажав сами знаете куда)

  2. Напечатать `:find` и имя файла

  3. Если я ошибся в имени файла —> во 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 всё описано, но я всё-таки обьясню краткий способ как это сделать:

  1. Скачать xah-fly-keys через MELPA package manager для EMACS

  2. Вставить и исполнить такой 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

go

haskell

js

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 , — включить браузер в Emacs

Space l d — включить эмулятор терминала в Emacs

Space 9 — проверить на грамотность слово

a — выполнить команду ELisp (тоже самое, что Alt+X)

Помощь. HELP

Space 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 — очистить регистр 1

Space k 3 — копировать в регистр 1 = очистить регистр 1; добавить в регистр 1 текст

Space k 4 — вставить содержимое

Кастомизируем

В Emaces любое действие можно сделать через какую-то Eisp фуекцию поэтому настройка также будет на ELisp-е.

  1. Чтобы настроить выполнение какой-нибудь функции при нажатии какой-то клавиши в 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
  2. Чтобы то же самое провернуть только в 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

Это всё!!!

ссылка на оригинал статьи https://habr.com/ru/post/557892/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *