Использование вкладок Vim, таких как буферы



Я бы посмотрел на возможность использования вкладок в Vim (с :tabe,:tabnew и т. д.) в качестве замены моей текущей практики открытия многих файлов в одном окне в скрытых буферах.



Я хотел бы, чтобы каждый отдельный файл, который я открыл, всегда был на своей вкладке. Однако, есть некоторые вещи, которые мешают этому. Как я могу исправить это:




  1. когда такие команды, как gf и ^] перейти к месту в другом файле, файл открывается в новом буфере на текущей вкладке. Есть ли способ, чтобы все эти виды команд открывали файл на новой вкладке или переключались на существующую вкладку с файлом, если он уже открыт?


  2. при переключении буферов я могу использовать
    :b <part of filename><tab>
    и он завершит имена файлов в существующих буферах. <part of filename> может быть даже середина имени файла вместо начала. Есть ли эквивалент для переключения вкладок?


842   10  

10 ответов:

Стоп, стоп, стоп.

это не то, как вкладки Vim предназначены для использования. На самом деле, их неправильно называют. Лучшим именем было бы" viewport "или" layout", потому что это то, что вкладка-это другой макет окон все существующих буферов.

попытка избить Vim в 1 tab == 1 буфер-это упражнение в тщетности. Vim не знает или не заботится, и он не будет уважать его во всех командах-в частности, все, что использует quickfix буфер (:make,:grep и :helpgrep являются те, которые приходят на ум) будет с радостью игнорировать вкладки и нет ничего, что вы можете сделать, чтобы остановить это.

вместо:

  • :set hidden
    Если у вас еще нет этого набора, то сделайте это. Это заставляет vim работать, как и любой другой редактор с несколькими файлами на планете. Вы можете редактировать буферы, которые не видны в окне где-то.
  • использовать :bn,:bp,:b #,:b name и ctrl-6 чтобы переключиться между буферами. Мне нравится ctrl-6 сам (в одиночку он переключается на ранее используемый буфер, или #ctrl-6 переключается на номер буфера #).
  • использовать :ls список буферов, или плагин, как MiniBufExpl или BufExplorer.

немного поздно на вечеринку здесь, но удивлен, что я не видел следующее В этом списке:

:tab sball - откроется новая вкладка для каждого открытого буфера.

:help switchbuf - Это управляет поведением переключения буфера, попробуйте :set switchbuf=usetab,newtab. Это должно означать переход на существующую вкладку, если буфер открыт, или создание нового, если нет.

Vim :help window объясняет путаницу "вкладки против буферов" довольно хорошо.

буфер-это текст в памяти файла.
Окно просмотра на буфере.
Вкладка - это набор окон.

открытие нескольких файлов достигается в vim с помощью буфера. В других редакторах (например, notepad++) это делается с помощью вкладок, поэтому вкладка name в vim может вводить в заблуждение.

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

наконец-то в этой аналогии vim tab pages будет соответствовать нескольким рабочим столам, то есть разным перестановкам окон.

в Vim help: tab-page объясняет, что страница вкладки может использоваться, когда вы хотите временно отредактировать файл, но не хотите чтобы изменить что-либо в текущей компоновке окон и буферов. В таком случае другая страница вкладки может быть использована только для редактирования этого конкретного файла.

конечно, вы должны помнить, что отображение одного и того же файла на многих вкладках или окнах приведет к отображению одной и той же рабочей копии (буфера).

в отличие от некоторых других ответов здесь, я говорю, что вы можете использовать вкладки, как вы хотите. vim был разработан, чтобы быть универсальным и настраиваемым, а не заставлять вас работать в соответствии с предопределенными параметрами. Мы все знаем, как программисты любят навязывать свою "этику" всем остальным, поэтому это достижение, безусловно, является основной особенностью.

<C-w>gf является эквивалентом табуляции буферов по умолчанию, которая создаст новую вкладку.

для документации по вкладкам введите :help tab-page в нормальном режиме. (После этого вы можете практиковать перемещение окна на вкладку с помощью <C-w>T.) Есть длинный список команд. Некоторые команды окна имеют отношение к вкладкам, поэтому вы можете посмотреть на это документация также через :help windows.

дополнение: 2013-12-19

чтобы открыть несколько файлов в vim с каждым файлом в отдельной вкладке, используйте vim -p file1 file2 .... Если вы похожи на меня и всегда забываете добавить -p, вы можете добавить его в конце, так как vim следует обычным правилам синтаксического анализа командной строки. Кроме того, вы можете добавить сопоставление псевдонимов bash vim до vim -p.

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

Проверьте плагин под названием Mini Buffer Explorer, после установки и настройки, вы сможете работать с буферами virtaully так же, как вкладки без потери какой-либо функциональности.

это ответ для тех, кто не знаком с Vim и приходит из других текстовых редакторов (в моем случае Sublime Text).

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

во-первых, как объяснили другие:

Tab Pages, звучит очень похоже вкладки, они действуют как вкладки и выглядят очень похоже на вкладки в большинстве других графических редакторов, но это не так. Я думаю, что это плохая ментальная модель, которая была построена на Vim, которая, к сожалению, затуманивает дополнительную мощность, которую вы имеете на вкладке.

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

I скажем, они похожи на другие редакторы / браузеры:

  1. вкладка группировки
  2. Sublime Text workspaces (т. е. список открытых файлов, которые у вас есть в проекте)

когда вы видите их такими, вы понимаете их силу, что вы можете легко группировать наборы файлов (буферов) вместе, например, ваши файлы CSS, ваши файлы HTML и ваши файлы JS на разных вкладках. Что на самом деле довольно круто.

другое описание, что Меня смущает

просмотра

это не имеет никакого смысла для меня. Видовой экран, который хотя и имеет определение термин словарь, я только слышал, ссылаясь на окна Vim в :help window док. Viewport-это не термин, который я когда-либо слышал в отношении таких редакторов, как Sublime Text, Visual Studio, Atom, Notepad++. На самом деле я никогда не слышал об этом для Vim, пока не начал использовать вкладки.

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

рабочие

это, возможно, имеет больше смысла, в словарь - это:

хранилище памяти для временного использования.

Так что это похоже на место, где вы храните группу буферов.

Я изначально не звучал как концепция возвышенного текста рабочей области, которая представляет собой список всех файлов, которые вы уже открыли в ваш проект:

файл sublime-workspace, который содержит пользовательские данные, такие как открытые файлы и изменения к каждому из них.

однако, думая об этом больше, это на самом деле согласен. Если вы рассматриваете страницу вкладки Vim как возвышенный текстовый проект, то было бы странно иметь только один файл, открытый в каждом проекте, и продолжать переключаться между проектами. Следовательно, почему использование вкладки для открытия только одного файла является нечетным.

коллекция из окон

The :help window относится к страницам вкладок таким образом. Кроме того, многие другие ответы используют ту же концепцию. Однако до тех пор, пока вы не поймете, что такое окно vim, тогда это не очень полезно, например, строить замок на песке.

Как я уже упоминал выше, окно vim-это то же самое, что и окно просмотра, и тихо отлично объяснено в этом linux.com статья:

действительно полезная функция в Vim-это возможность разделить видимое область между одним или несколькими файлами, или просто разделить окно, чтобы просмотреть два бита одного и того же файла более легко. Документация Vim ссылается на это как на видовой экран или окно, взаимозаменяемо.

возможно, вы уже знакомы с этой функцией, если вы когда-либо использовали функцию справки Vim, используя :раздел справки или нажав клавишу F1. При вводе справки Vim разбивает видовой экран и открывает справочную документацию в верхнем видовом экране, оставляя документ открытым в Нижнем область просмотра.

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

глядя на : вкладки справки не похоже, что ВИМ хочет работать так, как ты...

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

Это хорошая идея.

вы, вероятно, можете получить желаемый эффект, используя терминал, который поддерживает вкладки, такие как multi-gnome-terminal, а затем запускает экземпляры vim на каждой вкладке терминала. Хотя и не идеально...

  • вы можете отображать команды, которые обычно управляют буферами для управления вкладками, как я сделал с gf в моем .vimrc:

    map gf :tabe <cfile><CR>
    

    Я уверен, что вы можете сделать то же самое с [^

  • Я не думаю, что vim поддерживает это для вкладок (пока). Я использую gt и gT для перехода на следующую и предыдущую вкладки соответственно. Вы также можете использовать Ngt, где N-номер вкладки. Одна из моих проблем заключается в том, что по умолчанию номер вкладки не отображается в строке вкладки. Фиксировать это, я поставил пару функций в конце мой .vimrc file (Я не вставлял здесь, потому что это долго и не форматируется правильно).

Я использую буферы, такие как вкладки, с помощью BufExplorer плагин и несколько макросов:

" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>

" gz in command mode closes the current buffer
map gz :bdelete<cr>

" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>

С BufExplorer у вас нет панели вкладок в верхней части, но с другой стороны это экономит место на экране, плюс вы можете иметь бесконечное количество файлов/буферов открытых и список буферов для поиска...

Если вы хотите, чтобы буферы работали как вкладки, проверьте табличный плагин.

, который использует одно окно, и добавляет строку сверху для моделирования вкладок (просто показывает список буферов). Это вышло давно, когда вкладки поддерживались только в GVim, но не в командной строке vim. Поскольку он работает только с буферами, все хорошо интегрируется с остальной частью vim.

Comments

    Ничего не найдено.