LINUX.ORG.RU
ФорумTalks

[UX][Советов тред] Удобная навигация по коду

 


0

1

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

И тут возникает проблема. Как вернуться обратно? В snaked я попытался решить это с помощью, так называемых, спотов (spots). Редактор следит за пользователем и отмечает все места, которые его заинтересовали и дает возможность быстрой навигации по этим местам.

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

Товарищи, поделитесь своими приемами. Интересует как это сделано в других редакторах. Может я упустил какой-то очевидный, простой и эффективный способ?

P.S. Придумал критерий: нужна возможность вернуться в старое место с закрытыми глазами.

★★★

Последнее исправление: baverman (всего исправлений: 1)

Обычно для такого открываю новый фрейм (emacs), возвращаюсь назад переключением на предыдущий.

xetf ★★
()
Ответ на: комментарий от Morphine

Открой 2 редактора.

Как правило, вся операция — сменить контекст, посмотреть, вернуться обратно, порядка 3-7 секунд. О каком новом редакторе идет речь?

baverman ★★★
() автор топика
Ответ на: комментарий от xetf

Ок. А если место, которое нужно подглядеть — в том же файле. Тоже открываешь новый фрейм?

baverman ★★★
() автор топика
Ответ на: комментарий от JFreeM

Ctrl+Alt+<-+<- сколько надо раз.

А если надо опять подсмотреть? Ctrl+Alt+->+->? Именно так у меня и сделан перебор спотов. Удобным бы я это не назвал — слишком много думать надо. Нужен способ на уровне рефлексов — на одной моторике, без распознавания образов.

baverman ★★★
() автор топика
Ответ на: комментарий от xetf

Ещё сплитом пользуюсь

Сплиты тоже есть, использую, когда нужно постоянно куда-то втыкать, помимо редактируемого кода.

регистры

Они же вимовские марки. Когда на нем сидел, так и не разъюзал их, слишком неудобно как-то.

baverman ★★★
() автор топика
Ответ на: комментарий от fero

Окна и тэг файлы, всё, что тебе нужно

Ты невнимательно прочитал начальный пост.

baverman ★★★
() автор топика
Ответ на: комментарий от fero

>Блин в vim же есть табы!
*во имя луны.

map <S-tab> :tabprevious<cr>

nmap <S-tab> :tabprevious<cr>


imap <S-tab> <ESC>:tabprevious<cr>i


map <C-tab> :tabnext<cr>


nmap <C-tab> :tabnext<cr>


imap <C-tab> <ESC>:tabnext<cr>i


nmap <C-t> :tabnew<cr>


imap <C-t> <ESC>:tabnew<cr>

etwrq ★★★★★
()

Открыть 2 редактора (два окна, две вкладки) - самое очевидное и нормальное.
Еще варианты:
* Запомнить строку
* Поставить пометку на полях
Ну а там найти не сложно (не долго).

moscwich
()
Ответ на: комментарий от baverman

ну тогда извините. Мне этот способ удобен.

JFreeM ★★★☆
()
Ответ на: комментарий от etwrq

Странная закономерность, все отметившиеся вимеры совершенно не могут читать.

baverman ★★★
() автор топика

Открываю файл в новой вкладке редактора Aptana Studio, потом просто возвращаюсь и продолжаю работать. ЧЯДНТ? :)

Alve ★★★★★
()

В тред приглашаются лисперы, так как думаю, у них это довольно таки частый юзкейз, когда надо *мельком* взглянуть в другой файл или место текущего.

Cast archimag, reaper, ugoday.

baverman ★★★
() автор топика
Ответ на: комментарий от Alve

ЧЯДНТ?

Невнимательно читаешь. Что если надо посмотреть в другое место *того же* файла и вернуться обратно.

baverman ★★★
() автор топика
Ответ на: комментарий от JFreeM

Ctrl+Alt+<-+<- сколько надо раз. Intellij Idea

Что-то я потыкал, так и не понял, что оно должно делать, у меня не делает ничего.

F11 — тоггл букмарк (можно ставить сколько угодно) Shift-F11 — показать окошко с букмарками

ну и т. д., еще разные шорткаты.

Ok
()
Ответ на: комментарий от Ok

открой по очереди пять файлов или попереключайся между методами. Для работы этой команды нужна история передвижений по коду. Так же очень удобно использовать Crtl+E для списка недавних файлов

JFreeM ★★★☆
()
Ответ на: комментарий от Ok

букмарки

У меня сейчас те же самые закладки, только анонимные и в профиль. И они уж точно лучше простых неповоротливых букмарков.

baverman ★★★
() автор топика

В QtCreator я использую метки (Ctrl + 'M' - поставить метку, Ctrl + '<' - предидущай метка, Ctrl + '>' - следующая метка).
Очень удобно получается, так же можно на завтра план работ в виде меток составить, сутра пробежаться - и ты уже в курсе всего.

trex6 ★★★★★
()

> И тут возникает проблема. Как вернуться обратно? В snaked я попытался решить это с помощью, так называемых, спотов (spots). Редактор следит за пользователем и отмечает все места, которые его заинтересовали и дает возможность быстрой навигации по этим местам.

В vim'e это называется «Jump Motions» http://vim.dindinx.net/orig/html/motion.txt.php#jump-motions и работает между файлами.

Типичный юзкейс: стоишь где-то еще где, дальше прыгаешь (Ctrl-] по тагу, :grep руками и тд) N раз, потом можно нажать N раз Ctrl-O и вернуться назад по стеку. А потом можно нажать Ctrl-I и залезть еще раз.

gods-little-toy ★★★
()
Ответ на: комментарий от trex6

Видимо, придется как-то прокачивать существующую систему спотов. Все советы, пока, сводятся к двум вещам:

1) Закладки, что очевидно.

2) Сплиты.

Интересно, как в текстмейте это сделано.

baverman ★★★
() автор топика
Ответ на: комментарий от gods-little-toy

Jump Motions

Как вариант. Сделать расставлялку спотов более тупой, а следовательно более предсказуемой. Надо попробовать.

baverman ★★★
() автор топика

А как насчет отмечать споты клавишами и работать с ними по принципу стека?

shimon ★★★★★
()
Ответ на: комментарий от shimon

А как насчет отмечать споты клавишами и работать с ними по принципу стека?

Принудительная маркировка спота есть. Но удобства не прибавилось.

Что-то надежды на гениальное и простое решение тают, видимо придется проанализировать сложные для спотов сценарии и подумать как их обойти.

baverman ★★★
() автор топика
Ответ на: комментарий от baverman

Да. Не забывай про изменение размеров буфера.

bk_ ★★
()
Ответ на: комментарий от amaora

В пределах файла хватает taglist. По всему коду, история C+o/i или location/erro list после поиска через cscope например.

amaora ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.