Я хотел бы перейти к файлу, который я только что отредактировал, последним и следующим, как плагины MRU.
:bnext
и :bprev
иногда работает, но чаще всего я просто попадаю в какой-то непонятный файл, который я не помню, редактирую, и вынужден возвращаться к плагину MRU.
Есть ли способ это исправить?
Ctrl-^
перестановки между двумя последними файлами. Каков наилучший способ навигации между другими?
Я понимаю, что это может быть сложно, но я согласен на все, что может улучшить текущее :bn
:bp
поведение. Буферы, которые я часто вижу, совершенно неуместны. Может быть, есть плагин, который может отслеживать последние файлы и предоставлять хуки, чтобы я мог создавать сопоставления?
Отвечая на комментарии немного прояснилось. Я считаю, что я хочу, чтобы иметь возможность перемещаться по файлам в порядке последних сохранений. Таким образом, если я вернусь в историю, порядок не изменится, пока я не сохраню файл, который станет последним, и сделаю один шаг «назад» к файлу, сохраненному прямо перед этим, то есть к тому, с которого я начал.
Что-то вроде Ctrl-O
Ctrl-I
пары, которая переключает файлы сразу, не перепрыгивая через текущий буфер. Вроде как u
и U
в netrw:
u Change to recently-visited directory |netrw-u|
U Change to subsequently-visited directory |netrw-U|
Ctrl-O
(или иногдаCtrl-T
), пока я не доберусь туда.Ctrl-O
и делаюCtrl-I
. Но он прыгает между точками редактирования, и это нарушает поток. Все, что я хочу, чтобы идти вперед и назад между буферами в порядке доступа. Как плагины отображают список самых последних файлов? Они отслеживают их внутренне?Ctrl-^
перестановки между двумя последними файлами. Но как лучше переходить между ними?Ctrl-O/I
являются специфичными для окна, а MRU обычно глобальными. Если вам нужен порядок по последнему доступу, как только вы вернетесь назад, порядок в списке изменится, что еще больше усложнит ситуацию.Ответы:
Я написал небольшую функцию для многократного нажатия CTRL-O для меня, пока не изменится буфер.
Вы можете найти это здесь . Я сопоставил его с CTRL-U, но вы можете переопределить CTRL-O, если хотите.
Возможно, вы могли бы написать что-то подобное для
<C-I>
.Вопросы:
Связанный:
:jumps
перечисляет исторические местоположения, через которые CTRL-O будет возвращаться.источник
:kwbd
для закрытия нескольких буферов Vim возвращается к предыдущим буферам в ожидаемом обратном историческом порядке. Возможно, у Vim есть список MRU, которым он не делится с нами, или, возможно, он выбирает, к какому буферу обращаться, основываясь на истории расположения CTRL-O (:jumps
).autocmd InsertLeave * normal mZ
будет помнить последний измененный файл в глобальной марке Z . Вы можете вернуться к этому сg'Z
. // У меня есть,nmap <C-y> g'Z
но я все еще склонен использовать Ctrl-U чаще.Вы можете использовать,
:ls
чтобы показать все буферы. Например:Чтобы вернуться в буфер
ext.markdown
, используйте:e +Nbuf
, гдеN
номер буфера из первого столбца. Например::e +2buf
.Вы можете создать простую функцию для более интерактивного взаимодействия:
После использования
:ChooseBuf
или<Leader>b
вы можете просто ввести номер буфера, который вы хотите редактировать.Это не совсем «последний использованный», так как ордер «недавно открытый» (это, вероятно, также почему
:bnext
/:bprev
не работает, как вы ожидаете).источник
<C-6>
это то, что вам нужно, это возвращает вас к предыдущему буферу, который вы открыли перед текущим. Есть также:bprev
и:bnext
которые вы могли бы использовать для того же.источник
<C-6>
неплохо, но я не могу использовать это, чтобы перепрыгнуть через два буфера.bprev
иbnext
не в порядке прыжков.<C-6>
так<C-^>
. В то время как на многих эмуляторах терминалов нет никакого различия, на некоторых (включая тот, который поставляется с OS X), есть. В последнем случаеShift
требуется использование ключа (при условии расположения Qwerty).Вы также можете использовать,
:oldfiles
чтобы получить список файлов, которые вы редактировали.В списке будут номера, связанные с именами файлов. Выберите файл, запишите номер (скажем, 14) и откройте его с помощью
:edit #<14
Вы также можете запустить другие команды для этого файла или передать несколько файлов команде одновременно. Подробнее об этом ЗДЕСЬ
источник
:bro[wse] ol[dfiles][!]