Закладки
Место, куда хочется вернуться: строка, где живёт баг, функция, переименованная наполовину, то, что нужно удалить, когда рефакторинг приземлится. Правый клик по строке в просмотрщике, Закладка на эту строку — она появится в боковой панели, и щелчок вернёт вас туда.

Строка с закладкой несёт метку на полях, а наведение на любую строку показывает блёклую, по которой можно щёлкнуть, — контекстное меню нужно тогда, когда вы уже знаете, что функция есть.
Закладки приватны для этой машины и этого репозитория. В репозиторий ничего не пишется: их нельзя закоммитить, отправить или показать кому-то ещё — ровно как задачи.
Строка сдвигается. В этом вся проблема.
cart.ts:42 портится в тот момент, когда кто-то вставит строку выше, а закладка,
молча открывающая не ту строку, хуже, чем её отсутствие. Поэтому рядом с номером
хранится текст строки, и открытие ищет её заново:
- запомненная строка, если на ней всё ещё тот текст;
- иначе ближайшая строка с тем же текстом — ближайшая, чтобы строка, повторяющаяся по всему файлу, разрешилась в копию, ближайшую к прежнему месту;
- иначе ближайшая строка, совпадающая без учёта пробелов: это переживает переотступы и форматтер;
- иначе — сообщение, что строки больше нет, и открытие там, где она была, вместо догадок.
Когда строка сдвигается, закладка лечится: новый номер сохраняется, и следующее открытие стартует уже оттуда. Заметку можно добавить из контекстного меню — без неё подписью служит сам текст строки.
Ограничения
- Закладка указывает на рабочее дерево, а не на коммит. Она следует за вашими правками, но не путешествует назад по истории.
- Переписанный файл теряет свои закладки. Если ни точного текста, ни его формы без пробелов нет в пределах пары сотен строк, честно указывать уже не на что.
- Переименование файла ломает его закладки. Ключ — это путь; git видит переименование в диффе, но закладка не часть диффа.
- У пустой строки нет текста для поиска — её закладка держится только на номере.