Может ли курсор вернуться назад на предыдущую позицию?

24

Могу ли я сделать мой курсор в буфере, чтобы вернуться к своей последней позиции? (желательно без необходимости отмечать предыдущую позицию)

Например, Ca прыгает в начало текущей строки, могу ли я вернуться туда, где он был раньше?

Например, когда Cx Cf открывает файл в другом каталоге, я хочу вернуться к предыдущей позиции в имени пути.

Спасибо.

Тим
источник
Будет ли C-x xпробегать exchange-point-and-markделать? Emacs хранит не все движения курсора, а только те, которым вы специально это сказали. Добавление и добавление меток является одним из способов сохранения истории движения курсора. emacswiki.org/emacs/MarkCommands - вот хорошее обсуждение этой темы.
wvxvw
1
C-x xявляется неопределенным. M-x exchange-point-and-mark: в этом буфере нет отметки.
Тим
@ Тим Это так C-x C-x. Также вам нужно сначала поставить отметку, чтобы это работало. Чтобы установить отметку явно, вы делаете C-SPC. Чтобы вернуться к предыдущей отметке, вы делаете C-u C-SPC.
Каушал Моди
Да, верно, извини, это было C-x C-x. C-x xэто моя собственная привязка.
wvxvw
1
Не уверен, что это дубликат, но emacs.stackexchange.com/q/3421/454 может быть полезен.
Фил

Ответы:

30

Вот несколько привязок, связанных с отметками, которые могут вам помочь:

  • C-SPC- установить отметку и активировать регион (привязан к set-mark-command)
  • C-SPC C-SPC - установить отметку (активирует, а затем деактивирует регион)
  • C-x C-x - связан с exchange-point-and-mark
  • C-u C-SPC - перейти к предыдущей отметке

Проверьте документацию Mark для лучшего понимания этой темы.

Каушал Моди
источник
9
Обратите внимание, что команды, которые могут перемещать курсор на произвольное (но потенциально большое) расстояние от того места, где вы были (обычно), сначала автоматически нажимают на метку. Таким образом, вы можете часто вернуться туда, где вы были раньше с одним C-u C-SPC.
Филс
С counsel-mark-ringего также можно перечислить все марки и управлять ими с курсорами, получать в режиме реального времени просмотра в буфере.
Ариальдо Мартини
6

Если вы делаете редактирование в местах, в которых вы приземлились, goto-last-changeсделаем это за вас. http://www.emacswiki.org/emacs/GotoLastChange

incandescentman
источник
2
В Spacemacs это связано сg ;
iLemming
1

Вы можете использовать «Регистры».

Из информационного файла emacs

13.1 Сохранение позиций в регистрах

C-x r <SPC> R' Record the position of point and the current buffer in register R (точка-регистра ').

C-x r j R' Jump to the position and buffer saved in register R (Скачок к регистру ').

Нажатие « C-x r <SPC>' (точка-регистр»), за которым следует символ «R», сохраняет положение точки и текущий буфер в регистре R. Регистр сохраняет эту информацию до тех пор, пока вы не сохраните в ней что-то еще.

Команда `Cx rj R 'переключается на буфер, записанный в регистре R, и перемещает точку в записанную позицию. Содержимое регистра не изменяется, поэтому вы можете перейти к сохраненной позиции любое количество раз.

Если вы используете C-x r j' to go to a saved position, but the buffer it was saved from has been killed,Cx, rj пытается снова создать буфер, посетив тот же файл. Конечно, это работает только для буферов, которые посещали файлы.

Джо
источник