Как переключать вкладки на основе инкрементального поиска в vim? - PullRequest
2 голосов
/ 07 августа 2011

Например, допустим, у меня в vim открыто три вкладки:

1: nice_program.c
2: something_fun.h
3: super_script.sh

Так что, если я нажму какую-нибудь волшебную клавишу-модификатор, а затем наберу 'n' и нажму клавишу ввода, я перейду на вкладку 1. Аналогично, вместо этого введя 'su', вы перейдете на вкладку 3. Вместо этого.

Возможно ли такое поведение? Существует так много расширений vim, и я действительно не понимаю весь язык расширений vim.

Кстати, я использую gVim на XP и MacVim на OS X. Предпочтительно решение будет работать на обоих ...

EDIT:

Обратите внимание, что я хочу, чтобы только при добавочном поиске осуществлялся поиск по именам открытых вкладок. То есть он не должен выполнять поиск внутри самих вкладок.

Кроме того, я никогда не использую буферы, это вкладки, для которых я хочу, чтобы это работало.

Ответы [ 3 ]

7 голосов
/ 07 августа 2011

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

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

По умолчанию Vim открывает запрошенный буфер, заменяя его в текущем окно. Это поведение регулируется параметром switchbuf. Один из варианты (называемые usetab), предоставляемые этой опцией, позволяют переключаться в окно на другой вкладке, если это окно содержит буфер для редактирования. Это именно то, что подходит для вашей манеры работы со вкладками.

Подводя итог, измените режим переключения следующим образом

:set switchbuf=usetab

и с помощью команды :sb откройте буфер, набрав несколько букв его имени и используя Tab -completion.

1 голос
/ 07 августа 2011

Решение :set switchbuf=usetab, данное ib, никогда не работало для меня по любой причине (даже без загрузки плагинов или моего .vimrc), но :tab drop name-of-file работает так, как вы хотите (я нашел его в вики Vim ).

Создайте пользовательское сопоставление для сохранения нескольких нажатий клавиш с помощью nnoremap <leader>t :tab drop.

Также я комментирую ib правильный и неправильный способ использования вкладок в Vim.

1 голос
/ 07 августа 2011

Я использую этот фрагмент, который я взял в vim wiki, для переключения между открытыми буферами (сопоставленными с F5):

" switch between numbered buffers
:nnoremap <F5> :buffers<CR>:buffer<Space>

(поместите в свой файл .vimrc или любой используемый вами точечный файл).

Что касается инкрементного поиска в открытых буферах, то, когда я что-то ищу, используя /[something] или * / # для текущего слова, оно автоматически подсвечивается и в других буферах / вкладках. Затем я могу переключать буферы и нажимать n или N, чтобы перемещаться между совпадениями в текущем просмотренном буфере. Это уже запечено в Vim.

Надеюсь, это поможет.

...