#emacs #evil-mode
#emacs #злой режим
Вопрос:
Представьте, что у меня есть сценарий Emacs Lisp, который я выполняю с помощью M-x eval-buffer
. В этом скрипте я хочу вызвать :vsp
(вертикальное разделение) несколько раз.
Как я могу сделать это программно?
C-h k
приводит меня к команде evil-ex. Однако я не могу найти там ничего подобного vsp
или split
.
Обновление 1:
Я нашел evil-window-vsplit
в evil-commands.el.
Однако это работает не так :vsp
. Если я выполню скрипт
(evil-window-split)
(evil-window-vsplit)
(evil-window-down 1)
окно выглядит так, как показано ниже.
Если я выполняю команды C-w s
, :vsp
, и C-w j
вручную, результат будет таким:
Обновление 2: похоже (evil-window-down 1)
, это вызывает проблему.
Вот почему: если я запускаю скрипт
(evil-window-split)
(evil-window-vsplit)
(evil-window-vsplit)
Я получаю правильный результат (окно разделено по горизонтали на две части, верхние части разделены на три части). Нижняя часть не разделяется, потому что в скрипте нет команд для ее разделения.
Затем я добавляю команду для перехода к нижней части горизонтального разделения ( (evil-window-down 1)
, эквивалент C-w j
):
(evil-window-split)
(evil-window-vsplit)
(evil-window-vsplit)
(evil-window-down 1)
Этот скрипт выдает неправильный результат: не только верхняя половина разделяется на три части (как и должно быть), но и нижняя (ее не следует разделять).
Обновление 3: вышеуказанная ошибка не возникает, если я выполняю скрипт с помощью M-x load-file
.
Комментарии:
1. Хм, интересно. Если вы выполняете эти три команды по отдельности, это дает результат, который вы ищете. Но результирующий макет окна изменится, если вы
eval-buffer
. РЕДАКТИРОВАТЬ: это работает, если вы вводите три командыprogn
.2. Удаление
(evil-window-down 1)
также делает эту работу изeval-buffer
. Странно.