Emacs — замечательный инструмент, и с помощью подходящих сторонних пакетов вы можете создать в нем свою собственную среду. Такие функции, как создание окон и эмуляция терминала, — это лишь некоторые части Emacs, которые скрыты от обычного пользователя. Цель этой статьи — пролить свет на некоторые из них, чтобы вы могли максимально эффективно использовать свою установку Emacs.
1. Создание нового окна
Одной из наиболее полезных функций Emacs является возможность разделить окно . Используя Ctrl+ Contents
1. Создание нового окна
trl+ x, 3, вы можете легко дублировать текущий буфер как по горизонтали, так и по вертикали. Это может быть особенно полезно, если вы работаете с разными частями одного файла.Зная это, вы также можете использовать эту парадигму Ctrl+ x, чтобы разделить окно для нового файла. По умолчанию обычные команды Emacs занимают окно, в котором вы сейчас находитесь. Например, если вы нажмете Ctrl+ x, fи откроете файл, этот файл займет весь экран.
Однако, нажав Ctrl+ x, 4, а затем f. Вы можете указать Emacs открыть этот файл в отдельном буфере. Это может быть невероятно полезно, если вы хотите проверить новый файл, но при этом хотите сохранить буфер, над которым вы сейчас работаете.
Кроме того, вы также можете использовать это для переключения на текущий открытый буфер в вашем сеансе Emacs. Для этого вы можете нажать Ctrl+ x, 4, затем b, чтобы указать Emacs открыть командный буфер.. Это, в свою очередь, перечисляет все открытые в данный момент буферы в вашем сеансе.
Читайте также: Как использовать Emacs для RSS с Elfeed
2. Эмуляторы терминала
По умолчанию Emacs поставляется с двумя встроенными оболочками. Первый — это собственный интерпретатор команд, написанный на Emacs Lisp, под названием «eshell». Это текстовая оболочка, которую вы можете использовать для запуска UNIX-команды прямо из Emacs.
Поскольку вы можете использовать только текст, вы также можете изменить любой вывод команды в eshell, аналогично любому текстовому буферу Emacs. Это может быть полезно, если вы находитесь в сеансе отладки и хотите делать заметки между ошибками компиляции.
Из-за особенностей eshell он не может запускать какие-либо сложные программы пользовательского интерфейса терминала (TUI). Для этого Emacs также поставляется с эмулятором Терминал VT100 term.
Подобно обычному терминалу Linux, term эмулирует все функции VT100, включая его escape-последовательности. Это означает, что вы можете запустить любое приложение TUI в Emacs. Например, в настоящее время я использую вим в Emacs в течение срока.
При этом вы можете запустить как eshell, так и term, нажав Alt+ x. Это откроет буфер команд Emacs. Отсюда вы можете либо ввести eshell
, чтобы загрузить текстовый терминал, либо ввести term
, чтобы загрузить эмулятор VT100.
Важно отметить, что термин также имеет ограниченный режим «только текст», доступ к которому можно получить, нажав Control+ c, jкбд>.
Это переведет текущий сеанс термина в «строчный режим», в котором вы сможете легко копировать и вставлять команды в командную строку и из нее. Отсюда вы можете вернуться в обычный режим терминала, нажав Ctrl+ c, k.
Читайте также: Как управлять Git в Emacs с помощью Magit
3. Доступ к удаленным файлам в Emacs
Еще одна блестящая встроенная программа в Emacs — Прозрачный удаленный доступ к файлам, несколько протоколов (TRAMP). Это простая программа, которая позволяет вам беспрепятственно получить доступ к любому файлу через любой протокол в Emacs.
Он работает с помощью вспомогательных программ, таких как ssh, rlogin и su, для подключения пользователя к удаленному компьютеру. Оттуда TRAMP монтирует файлы удаленного компьютера на локальный компьютер пользователя. Это, в свою очередь, заставляет эти файлы выглядеть локальными.
Зная это, вы можете использовать TRAMP, нажав Ctrl+ x, fи Ctrl+ Backspace, чтобы очистить подсказку о файле. Далее вам нужно ввести определенный формат пути, чтобы Emacs использовал TRAMP:
/protocol:address:/path/to/your/file
Например, я ввел следующий путь TRAMP для подключения к моему файловому серверу через SSH:
/sshx:myfileserver.net:/home/ramces/documents/myfile.txt
Вы также можете использовать TRAMP для редактирования привилегированных файлов внутри Emacs. Это очень полезно, если вам нужно быстро редактировать системные файлы и вы не хотите использовать привилегированный редактор. Это также снижает риск проблем с безопасностью, поскольку TRAMP создает песочницу для привилегированного файла.
Чтобы получить доступ к привилегированному файлу через TRAMP, вам необходимо использовать su
в качестве протокола:
/su::/etc/yggdrasil.conf
В этом примере я редактировал файл конфигурации Иггдрасиль через TRAMP. Поскольку я получил доступ к файлу только локально, мне не нужно было указывать адрес su
.
Как только я нажал Enter, TRAMP запросил мой пароль пользователя. После этого файл загружается в буфер Emacs, как если бы это был просто непривилегированный файл.
Читайте также: 3. Доступ к удаленным файлам в Emacsдать красивые слайды Beamer с помощью Emacs">Как создать красивые слайды Beamer с помощью Emacs
4. Выполнение нечеткого поиска в Emacs
Emacs функция поиска по умолчанию довольно неуклюж. Вы можете нажать Ctrl+ Sдля поиска вперед и Ctrl+ Rдля поиска в обратном направлении. Однако эта форма поиска строго ограничена поиском конкретной строки.
Это означает, что все, что вы вводите в поле поиска, будет точно соответствовать, включая пробелы. В большинстве случаев это не проблема, поскольку большинство текстовых запросов состоят только из отдельных слов и коротких фраз.
Несмотря на это, могут быть случаи, когда вам нужно, чтобы Emacs выполнял нечеткий поиск. Это тип текстового поиска, который находит только небольшие части нескольких строк.
Например, используя поиск Emacs по умолчанию, невозможно выполнить поиск по фразе «hello world», просто указав «he ld» в поле поиска.
Чтобы это стало возможным, вам нужно добавить в файл init.el следующий код Lisp:
(setq search-whitespace-regexp ".*") (setq isearch-lax-whitespace t) (setq isearch-regexp-lax-whitespace nil)
- Первая функция,
search-whitespace-regexp
заменяет пробел на любой символ (.*) при использовании текстового поиска. - Вторая функция,
isearch-lax-whitespace
, включает несколько совпадений пробелов при поиске одного пробела. Использование этой функции в сочетании с первой функцией позволяет выполнить нечеткий поиск. - Наконец, третья функция,
isearch-regexp-lax-whitespace
, гарантирует, что вам нужно будет использовать только один пробельный символ для сопоставления и создания нечеткого поиска.
Зная это, теперь вы можете перезагрузить свой клиент Emacs и проверить, работает ли нечеткий поиск. В моем случае мне удалось найти фразу «привет, мир», просто набрав «he ld».
Читайте также: Как управлять своими финансами с помощью режима книги в Emacs
5. Редактирование буфера Dired
Диред — файловый менеджер Emacs по умолчанию. По своей сути он позволяет вам легко просматривать файловую систему вашего компьютера и открывать любой файл прямо в буфере Emacs. Вы можете легко получить доступ к Dired, нажав Ctrl+ x, dили Ctrl+ x, f.
Однако одна из основных проблем Dired заключается в том, что сложно изменить любой файл в его буфере. Например, если вы хотите переименовать файл в Dired, вам нужно сделать две вещи:
- Сначала вам нужно отметить файл, который вы хотите отредактировать, выделив его и нажав M.
- Оттуда вам нужно нажать Shift+ R, чтобы переименовать и указать новое имя для вашего файла.
Хотя переименования файла таким спос
4. Выполнение нечеткого поиска в Emacs
енение нескольких файлов может оказаться сложной задачей.Чтобы справиться с этим, в Emacs также предусмотрена возможность редактировать буфер Dired непосредственно как текст. Это позволит вам не только переименовать несколько файлов , но и изменить их биты разрешения .
Для этого можно нажать Ctrl+ x, Ctrl+ q. Это включит режим «Редактируемый Dired». Отсюда вы теперь можете редактировать буфер Dired, и после его сохранения эти изменения будут применены к вашим файлам.
Например, если вы хотите переименовать несколько файлов, вы можете просто ввести текущие имена файлов и написать новые. После этого просто нажмите Ctrl+ C, Ctrl+ C, чтобы сохранить изменения, и эти файлы будут переименованы.
Изменение прав доступа к файлу с помощью Dired
Как обсуждалось выше, еще одна вещь, которую вы можете сделать в Editable Dired, — это обновить настройки разрешений файлов. Для этого вам нужно добавить в файл init.el следующую строку:
(setq wdired-allow-to-change-permissions t)
Теперь вы можете редактировать биты разрешений файлов непосредственно из Editable Dired. Например, рассмотрим следующий файл:
-rw-r--r-- 1 ramces ramces 8316 Mar 11 10:53 test.txt
Первый столбец текста указывает, что этот файл имеет для меня права на чтение и запись (rw-). Кроме того, он также имеет оба разрешения на чтение для всех остальных (r–r–).
Чтобы изменить это, я выделил этот столбец текста и нажал W, чтобы позволить другим людям редактировать этот файл:
-rw-rw-rw- 1 ramces ramces 8316 Mar 11 10:53 test.txt
С другой стороны, чтобы отменить это действие, вы можете нажать -для любого бита разрешения, и разрешение для этого поля будет очищено:
-r--r--r-- 1 ramces ramces 8316 Mar 11 10:53 test.txt
Вот и все, теперь вы знаете 5 скрытых функций стандартного Emacs, которые можно использовать для улучшения процесса редактирования!
Читайте также: Как использовать IRC в Emacs с ERC
Часто задаваемые вопросы
1. Можно ли создать новое окно для других пакетов Emacs?
К сожалению, нет. Команда Ctrl+ x, 4работает только для открытия новых файлов, аналогичных Ctrl+ x, fи открытие буферов аналогично Ctrl+ x, b.
Один из способов обойти это ограничение — открыть пакет обычным способом с помощью Alt+ x. Отсюда вы можете вернуть предыдущий буфер, нажав Ctrl+ x, 4, b.р>
2. Могу ли я использовать другую оболочку для эмулятора VT100?
Да! Когда вы запускаете команду term, используя Alt+ x, Emacs предложит вам указать оболочку, которую вы хотите использовать. По умолчанию он добавит оболочку по умолчанию для вашей системы. Это означает, что если ваша оболочка
5. Редактирование буфера Dired
в этом приглашении «/bin/bash».Чтобы использовать другую оболочку, вам необходимо заменить это значение путем к оболочке, которую вы хотите использовать. Например, если вы хотите использовать ksh в term, вам нужно написать /bin/ksh
, когда term предложит вам терминал, который вы хотите использовать.
3. Могу ли я отменить изменения в буфере Dired?
И да, и нет. Вы можете отменить все изменения, внесенные вами в Editable Dired, нажав Ctrl+ c, ESC. Однако это сработает только в том случае, если вы еще не сохранили изменения на диске.
Как только вы нажмете Ctrl+ C, Ctrl+ C, Emacs запишет все внесенные вами изменения. сделал. К тому времени единственный способ отменить это — снова отредактировать файлы вручную.
Изображение предоставлено: Unsplash