В настоящее время я пытаюсь перейти с vim на emacs и испытываю некоторые трудности при редактировании кода. Для большинства очень простых нажатий клавиш vim я нашел версию emacs, например, простое движение
h
, j
, k
, l
являются C-b
, C-n
, C-p
, C-f
w
, b
являются M-f
, M-b
I
, A
являются C-a
, C-e
- ...
но для некоторых "более продвинутых" функций, к которым я привык, я не уверен, что такое emacs.
Вот некоторые проблемы, которые возникают в моем текущем рабочем процессе, когда я использую emacs.
Пожалуйста, покажите мне, как emacs люди делают это (очевидно, без использования эмуляции vim ) или каков альтернативный рабочий процесс, дружественный к emacs.
Прыжки с f
Когда я пишу что-то в vim и замечаю, мне нужно что-то изменить в этой строке, я могу использовать f
, чтобы просто перейти к нему
int foo = caallFoo();
^
В этом случае я бы Fad
удалил это «а». В emacs я в настоящее время M-b
и C-f
, пока не найду символ, который хочу отредактировать. Я пытаюсь использовать Ace Jump (это хороший плагин), но для прыжков по линии, в которой я сейчас нахожусь, все еще плохо.
Так как же emacs быстро перемещается по линии, не сходя с ума?
Навигация по окнам
Мой рабочий процесс часто включает в себя несколько окон, открытых в vim (скажем, файловый браузер, 4 окна кода и панель тегов), и навигация работает с C-w h
, C-w j
, C-w k
и C-w l
. Когда я нажимаю C-w s
или C-w v
новое окно, оно открывается и ретранслирует все окна.
До сих пор я видел C-x 2
и C-x 3
в emacs, чтобы открывать новые окна, но их размер каждый раз становится меньше, так как вновь созданное окно и окно с фокусом теперь разделяют пространство, используемое фокусированным окном иметь. Для навигации я нашел только C-x o
, который просто перебирает окна и не позволяет мне выбрать конкретное окно для перехода.
Я видел, что некоторые люди используют плагины, чтобы получить более вменяемый многооконный рабочий процесс.
В emacs уже есть какая-то хорошая оконная навигация, или я должен найти плагин, который сделает эту работу за меня? Или мой рабочий процесс с 4-6 окнами - это то, что я не должен делать в emacs.
Копирование, вставка, перемещение линий и т. Д.
В файлах кода мне нравится создавать комментарии для визуальной маркировки определенных разделов.
////////////////////////////////////////////////////////////////////////////////
// SECTION
////////////////////////////////////////////////////////////////////////////////
В vim я создаю что-то вроде 80a/<ESC>yyppklC
(80 раз добавьте '/', скопируйте эту строку и вставьте ее два раза, во второй строке измените все после второй '/') и введите имя.
Создание первой строки так же просто в emacs C-u 80/
(80 раз напишите '/'), но вставка при копировании будет выглядеть примерно так: C-a C-SPC C-e M-w <ENTER> C-y <ENTER> C-y
(переходите к началу, если строка устанавливает метку, перейти в конец строки, скопировать все, два раза сделать новую строку и вставить). А затем написать имя раздела C-a C-p C-f C-f C-k
(перейти к предыдущей строке, перейти к началу, перейти на две буквы вправо, удалить до конца)
Мой вариант Emacs использует много нажатий клавиш и концептуально более сложен. Если бы я мог повторить последнее действие, как в Vim, у меня не было бы проблемы с копированием (в vim 80a/<ESC>j.j.
), но в emacs повторение последней команды привело бы к переходу на следующую строку вместо "80 раз вставить '/' «)
- Как мне лучше скопировать / вырезать / вставить целые строки? Или какая альтернатива?
- Как мне повторить последнее действие, которое не является движением?
Перемещение курсора
Что-то из более простого движения, которое мне нравится делать при просмотре кода, это перемещение курсора с помощью C-d
и C-u
. В emacs я знаю только C-v
и M-v
, которые перемещают экран вверх и вниз и помещают курсор в начало. Как мне переместить курсор на половину экрана? Или, альтернативно, как поместить курсор в середину / верх / низ экрана, как H
, M
, L
do в vim?