Почему эксперты Vim предпочитают буферы вкладкам?



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



поэтому я спрашиваю вас, эксперт Vim: каковы преимущества использования буферов над вкладки? Я не вижу, как разница может быть глубоко разной, но я бы считал себя только на начальном-промежуточном уровне при работе с Vim. Это :ls:b# действительно, что гораздо быстрее, чем gting вокруг? Я чувствую, что это должно быть глубже, чем это.

644   7  

7 ответов:

как сказал ZyX на #vim, этот вопрос звучит как " почему специалисты Vim предпочитают вкусное теплому?".

"эксперты Vim" не предпочитают буферы над вкладками: они используют буферы в качестве прокси-серверов файлов, а страницы вкладок-в качестве рабочих пространств. Буферы и вкладки имеют разные цели, поэтому предпочесть одно другому не имеет никакого смысла вообще.

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

  1. большинство" современных " текстовых редакторов и IDE используют tab метафора для представления загруженных файлов. Эта метафора действует как информационная система-она показывает пользователю, какие файлы открываются и их состояние - и как интерактивное устройство - она позволяет пользователю манипулировать (переупорядочивать, выбирать, закрывать...) эти открытые файлы. Несмотря на многие ограничения, вкладки есть везде и люди привыкли к ним и ожидал их везде.

  2. ВИМ представил tab pages в 7.0 как способ для пользователей, чтобы создать специальные "рабочие". Ничего в их функциях, их конкретных опциях, их конкретных командах или их :help разделы предполагают, что страницы вкладок могут или должны использоваться в качестве файловых прокси.

    ничего кроме названия и появление "закладок", конечно, что приводит к большому путаница.

  3. без :set hidden, который отключен по умолчанию и не очень легко найти, Vim делает невозможным переключение на другой буфер без записи текущего или отказа от его изменений. У новых пользователей, не знающих об этой опции, нет выбора, кроме как обратиться к использованию тяжелых окон или к ближайшей функции "tab-like", которую они могут найти: tab pages.

"Tab page" - неудачный выбор имени для этой функции, особенно в эпоху доминирует идея, что чтение документации-это пустая трата времени.

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

"буферный путь"

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

  1. восемь буферов открыты, виден только один:

    Eight buffers open

  2. переключение по номеру:

    Switching by number

  3. переключение по имя:

    Switching by name

буферы-это файловые прокси Vim. Если вы думаете в терминах файлов, вы думаете в терминах буферов.

окне "путь"

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

в windows навигация между открытыми файлами становится либо слишком сложной, либо слишком упрощенной, даже с 'switchbuf' и :sb. В основном потому что вы вынуждены использовать два набора команд для того, что по сути одно и то же: доступ к буферу.

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

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

Working on a colorscheme

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

вкладка "пути"

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

все еще работая с теми же файлами, что и выше, таблица занимает значительное место практически без пользы. Все мои файлы и все мои вкладки называются javascript*.vim так что я не могу сделать 3gt и будьте уверены, что я в конечном итоге на правильное место и невозможно добраться до определенной вкладки по имени. Добавьте к этому тот факт, что его метка вполне может быть очень бесполезной, но совершенно логичной [Quickfix List]... поскольку нет практического способа привязать файл / буфер к странице вкладки, у вас в основном остается только один практический способ навигации между страницами вкладок/буферами/файлами: велоспорт.

и да, моя таблица забита только 8 вкладками, представьте, если бы у меня было 20!

  1. открываются восемь буферов восемь закладок (неправильно)

    Wrong

  2. две вкладки, для двух конкретных задач (справа)

    Right

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

In вывод

" Vim experts "(предположим, я могу говорить, как если бы я был один)не предпочитайте буферы над вкладками: они просто используют Vim, как он был разработан, и совершенно удобны с этим дизайном:

  • "Vim experts" имеют 2, 30 или 97 загруженных буферов и очень рады, что им не нужно иметь дело с пространственным распределением;

  • когда им нужно сравнить два файла или работать в одной части текущего буфера в то время как сохраняя другой в качестве ссылки, "эксперты Vim" используют windows, потому что именно так они предназначены для использования;

  • когда им нужно какое-то время работать над отдельной частью проекта, не вмешиваясь в их текущий вид, "Vim experts" загружает совершенно новую вкладку.

раньше я держал каждый буфер в отдельной вкладке, но мне надоело постоянно gt и gT - ing вокруг везде.

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

вот некоторые методы, которые полностью изменили мое первоначальное мнение:

вот мой типичный рабочий процесс:

  • откройте Vim и используйте :e (обычно с помощью регулярных выражений как :e src/**/F*Bar.js), чтобы открыть буфер
  • понимаю, мне нужно открыть другой файл. Используйте :e и для этого тоже. Если я хочу переключаться между этим буфером и текущим открытым буфером, я буду использовать :sp или :vsp открыть его в отдельном окне.
  • повторяйте, пока у меня не будет 3-5 файлов, которые я буду переключаться между использованием методов в приведенном выше маркированном списке, чтобы летать между вашими буферами.
  • если я хочу "начать все сначала" с моих буферов, просто закройте Vim и снова открыть.

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

проблемы, которые вы описываете, заставляют его казаться, что вы используете ВИМ ошибся. Либо (в основном) один выделенный экземпляр. Затем буферы, которые становятся скрытыми, просто "появятся", если вы их повторно отредактируете (и теперь вы можете использовать список буферов для их вызова), и не будет сообщений о файлах подкачки. Или используйте отдельные экземпляры Vim для каждого сеанса project / file / edit, но затем сделайте это привычкой полностью :quit каждый экземпляр, когда вы закончите с файлом.

еще один совет, при использовании имени буфера в качестве аргумента :buffer, вам не нужно указывать полное имя. Однако, если более одного буфера соответствует данному аргументу, то буферы не будут переключаться.

любой фрагмент имени буфера может быть использован для сопоставления. Например, если у вас есть буферы request_manager.java и queue_manager.java затем :buffer que matches или: b que ' оба из них, но переключится на queue_manager.java, как это соответствует в начале.

Я использую вкладки, Ctrl -P и vim сеансы в моем рабочем процессе и уже более года:

  • У меня есть ) и ( сопоставлено с "перейти на следующую вкладку" и "перейти на предыдущую вкладку" соответственно. tn открывает новую вкладку. Я также использую tabm, чтобы помочь держать вещи организованными.

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

  • Я пока не нашел ничего лучше, чем Ctrl -P, но это займет немного, чтобы обработать все файлы для поиска.

добавьте их в свой .vimrc и начать любить буферов:

:nnoremap <Tab> :n<cr>
:nnoremap <S-Tab> :N<cr>

таким образом, вы можете цикл вперед / назад через них в нормальный режим через Tab/ShiftTab.

я загружаю" выбранные " буферы в виде вкладок, чтобы быстро (TAB/S-TAB) переключаться между ними. Структура рабочих пространств подходит здесь, поскольку для меня буферы против вкладок-это в основном видимость. Я могу всплывать важные / рабочие файлы в окнах и вкладках и скрывать те, которые мне в настоящее время не нужно использовать в фоновом режиме на лету, не запоминая пути или не тратя время на поиск и загрузку их снова, как только возникнет необходимость. Это позволяет обрабатывать несколько задач или проектов в одном сеансе VIM, я думаю это было важно в машинах с низкой памятью, но также хорошо для концентрации всех задач редактирования в одном фрейме приложения. У меня также есть ярлыки сдвига буфера, установленные в Ctrl-Right/Left, поэтому я могу быстро перемещаться по различным буферам.

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

для файлов подкачки, вы можете сказать VIM, чтобы сохранить все из них в одной папке вашего назначения. Для этого используйте :set directory.

Comments

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