Вкладки

    Открываем


    VIM Tabs
    Открыть вкладку можно тремя разными способами, самый простой и интуитивный :tabnew в нормальном режиме, он откроет новую вкладку с пустым буфером. Можно сразу открыть вкладку с файлом, передав его имя как параметр

    :tabnew futuri.co

    Вкладки можно также открыть сразу после запуска, если добавить ключ -p перед списком имен файлов — для каждого откроется своя вкладка.

    vim -p habra.sh habr.py

    Конечно, открывать табы до бесконечности не получится, по-умолчанию стоит ограничение в 10 вкладок. Устанавливается оно параметром tabpagemax, например:

    :set tabpagemax=15

    Ограничение работает только для открытия вкладок при помощи ключа -p. И если вы собираетесь открыть больше вкладок, чем разрешено, то файлы откроются, но вкладки не отобразятся и перемещаться по ним можно будет при помощи команд :next и :prev.

    И еще один способ открыть вкладку :tabf. Параметром ему передается шаблон и если файл найден, то он откроется в новой вкладке. Например:

    :tabf index*

    Если шаблону соответствует больше, чем один файл, то вим просто выругается и ничего не сделает. Полезная особенность :tabf в том, что с ним работает автодополнение по <tab>.

    Перемещаемся


    Переключаться по табам можно командами :tabn и :tabp, для следующего и предыдущего таба, или в нормальном режиме gt и gT соответственно, причем можно использовать 5gT и т.п.

    Когда вкладок открыто много, могут пригодиться команды :tabfirst или :tabfir открывающие первую вкладку и :tablast, открывающие последнюю.

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

    :set showtabline=2

    Посмотреть все открытые табы можно при помощи :tabs.

    Конечно же, всем этим командам можно назначить свои сочетания клавиш, я использую следующее:

    nmap ,t :tabnew<CR>

    Перемещаем


    Перемещать вкладки можно командой :tabm n, где n это номер позиции, на которую мы хотим ее переместить, конечно же, по правилам хорошего тона, нумерация вкладок начинается с 0.

    :tabm 2

    Кстати, использование вкладок никак не ограничивает другие возможности вима, по этому никто не запрещает разделить одну вкладку на несколько областей видимости, например (:sp, :vsp).

    Командуем


    Выполнять команды над содержимым всех табов можно при помощи :tabdo command, например, можно поменять всюду имя переменной:

    :tabdo %s/шило/мыло/g

    Подсматриваем


    :tabnew [filename] Открыть новую вкладку
    :tabf pat*ern Открыть вкладку по шаблону
    :tabs Список открытых вкладок
    gt или :tabn Следующая вкладка
    gT или :tabp Предыдущая вкладка
    :tabfirst или :tabfir Первая вкладка
    :tablast Последняя вкладка
    :tabm n Переместить вкладку в n (от 0)
    :tabdo command Выполнить над всеми вкладками

    И если этого недостаточно :help tab-page-intro
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 21
    • 0
      ctrl+n
      ctrl+tab
      • 0
        если замапить, то да
        • 0
          ctrl+n по умолчанию — следующий вариант автодополнения, мапить лучше на свободные кнопкосочетания.
          • 0
            У меня например ctrl+n переносит курсор на следующую строку (аналогично j).
            В настройках по этому поводу ничего не менял.
            • 0
              В нормальном режиме — да. А в режиме ввода это автодополнение.
        • 0
          Для более удобного перемещения табов вот это подойдёт:
          allaboutvim.blogspot.com/2007/08/blog-post.html
          • +1
            А в чем приемущество перед буферами?
            • 0
              В гвиме табы отображаются как привычные табы, например. Плюс в табвх тоже можно держать буферы.
              • 0
                >Плюс в табвх тоже можно держать буферы.
                Да это бы была полезная фича, вот только :ls у них общий.
              • +1
                Нагуглил таки ответ, основная функциональная нагрузка табов это группировка окон.
                • +1
                  Удобное переключение. Ctrl-PgUp, Ctrl-PgDn
                  • 0
                    Их сделали для тех, кто не умеет пользоваться буферами.
                  • 0
                    А я отказался от табов в пользу буферов. Поставил плагины bufexplorer (наглядный ls буферов) и buftabs (отображает список буферов внизу окна). Забендил переключение буферов на F-клавишие (F5 — список, F6 — предыдущий, F7 — следующий, F10 — закрыть текущий). Получилось очень функционально и удобно.

                    Кстати, а еще для пущей интерактивности можно поставить fuzzyfinder с удобным поиском (в частности по буферам).
                    • +1
                      Я использую и буферы и табы, табы, кстати, не парсятся заново при переключении, по этому работают несколько быстрее
                    • +6
                      А сплиты в табах это просто няшно. Переключаюсь по табам Alt+номер
                      map <M-1> 1gt
                      map <M-2> 2gt
                      map <M-3> 3gt

                      • 0
                        Я пользуюсь NERDTree и замапил для себя следующие комбинации:

                        " По F2 открывается новый таб с открытым NERDTree для выбора файла
                        map :tabnew:NERDTree
                        imap :tabnew:NERDTree" По Shift+F2 открывается новый таб без NERDTree
                        map <S-F2> :tabnewimap <S-F2> :tabnewПользуйтесь, если сочтете это удобным. :)
                        • 0
                          Черт. Как много о vim я еще не знаю!
                          • +1
                            Небольшой хинт:
                            """ Открытие группы файлов в отдельных табах (эмуляция vi -p для ленивых)
                            autocmd VimEnter * nested if argc() > 1 && !&diff | tab sball | tabfirst | endif
                            И теперь можно запускать vim для группы файлов без параметра -p (вечно про него забываю).
                            • 0
                              alias vim='vim -p' ;)
                              • 0
                                Угу. Я с этого начал. С этим подходом были проблемы, не помню уже, какие конкретно — может из mc не очень корректно работало, может ещё что. Следующим этапом был sh-скрипт ~/bin/vi. Он работал, но не хотелось за собой его везде таскать. Поэтому третья итерация привела к реализации внутри .vimrc.
                            • 0
                              gT или :tabp или :tabN :)

                              Больше спасибо за gt и gT, не знал!

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.