Подтвердить что ты не робот

В чем разница между списком местоположений и списком fastfix в vim

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

In Vim the quickfix commands are used more generally to find a list of positions 
in files.For example, |:vimgrep| finds pattern matches.  You can use the positions 
in a script with the |getqflist()| function. Thus you can do a lot more than the
edit/compile/fix cycle!
...
...

                         *location-list* *E776* 
A location list is similar to a quickfix list and contains a list of positions 
in files.  A location list is associated with a window and each window can have 
a separate location list.  A location list can be associated with only one window.  
The location list is independent of the quickfix list.

...

enter image description here

UPDATE

Я нашел здесь .

These commands all fill a list with the results of their search. "grep" and 
"vimgrep" fill the "quickfix list", which can be opened with :cw or :copen, 
and is a list shared between ALL windows. "lgrep" and "lvimgrep" fill the 
"location list," which is local to the current window, and can be opened 
with :lw or :lopen. Both of these lists can be used to instantly jump to 
the matching line in whatever file it occurs in.

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

4b9b3361

Ответ 1

Список местоположений локален для текущего окна, поэтому вы можете иметь столько списков местоположений, сколько окон: 30 окон? Нет проблем, вот ваши 30 параллельных списков местоположений.

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

Не путайте списки "location/quickfix" (структуры данных) с окнами location/quickfix "окна" (окна, отображающие содержимое этих структур данных). "Окна" имеют сходное поведение, но "списки" этого не делают. Разница важна, потому что эти окна, к счастью, не единственные способы взаимодействия с этими списками: есть много команд, которые позволяют нам перемещаться по этим спискам, не открывая связанные окна, и зная, что разница между этими списками является ключом к эффективному использованию этих команд.

Практический иллюстрированный пример:

$ vim -O foo.txt bar.txt

  • Сделайте :lvim foo % в foo.txt, чтобы создать список местоположений для окна, содержащего foo.txt.

  • Сделайте :lne несколько раз, чтобы перейти к нескольким foo в foo.txt.

  • Сфокусируйтесь на bar.txt и сделайте :lne. Что происходит?

  • Теперь сделаем :lvim bar % в bar.txt, чтобы создать список местоположений для окна, содержащего bar.txt.

  • Сделайте :lne несколько раз. В каких матчах вы прыгаете? В каком буфере? В каком окне?

  • Переключитесь в другое окно и выполните :lne несколько раз. Что происходит?

  • Переключитесь снова на bar.txt. Что делает :lne?

  • Теперь сделайте :vim bar % в bar.txt, чтобы создать список быстрого удаления.

  • Сделайте :cn несколько раз, чтобы перейти к нескольким bar в bar.txt.

  • Теперь сосредоточьтесь на foo.txt, что делает :cn?

Местоположение, с которым вы переходите с помощью :lne, зависит от окна, в котором вы находитесь, но ошибка, с которой вы переходите с помощью :cn, всегда одна и та же (до тех пор, пока вы не замените текущий список быстрого удаления другим).

В обоих списках есть относительно четкие роли IMO: список quickfix (и, следовательно, окно quickfix) обычно и вполне логически посвящен ошибкам, и список местоположений кажется мне подходящим для поиска.