[vim] Vim에서 위치 목록과 Quickfix 목록의 차이점은 무엇입니까?

다음은 빠른 수정 목록 및 위치 목록에 대한 문서에서 가져온 것입니다. 그러나 실제로 무엇이 다른지 잘 모르겠습니다. 아래 이미지는 위치 목록 및 빠른 수정 목록에서 동일한 항목을 보여줍니다. 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.

...

여기에 이미지 설명 입력

최신 정보

여기 에서 다음 찾았습니다 .

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.

따라서 차이점은 빠른 수정 목록의 모든 창과 위치 목록의 로컬 창입니다. 그러나 다른 창에서 위치 목록을 열 수 있습니다. 그렇다면 차이점은 무엇입니까 ??



답변

위치 목록은 현재 창에 로컬이므로 창 수만큼 위치 목록을 가질 수 있습니다. 창 30 개? 얼마든지 요. 30 개의 동시 위치 목록이 있습니다.

빠른 수정 목록은 전역이므로 한 번에 둘 이상을 사용할 수 없습니다. 현재 빠른 수정 목록을 이전 목록으로 바꿀 수있는 명령이 있지만 두 개의 동시 빠른 수정 목록을 가질 수 없습니다.

위치 / 빠른 수정 “목록”(데이터 구조)을 위치 / 빠른 수정 “창”(해당 데이터 구조의 내용을 표시하는 창)과 혼동하지 마십시오. “창”의 동작은 비슷하지만 “목록”은 그렇지 않습니다. 그 차이는 중요합니다. 고맙게도 해당 목록과 상호 작용하는 유일한 방법은 이러한 창뿐이 아니기 때문입니다 . 관련 창 열지 않고도 목록을 이동할 수있는 많은 명령이 있으며 이러한 목록 간의 차이점을 아는 것이 이러한 명령을 효율적으로 사용하는 데 중요합니다. .

실습 예시 :

$ vim -O foo.txt bar.txt

  1. 수행 :lvim foo %foo.txt포함 된 윈도우의 위치 목록을 만들 수 foo.txt.

  2. 수행 :lne몇 가지에 점프에 몇 번 foo에서 foo.txt.

  3. 집중 bar.txt하고 수행하십시오 :lne. 무슨 일이야?

  4. 이제 수행 :lvim bar %bar.txt포함 된 윈도우의 위치 목록을 만들 수 bar.txt.

  5. 수행 :lne몇 번. 어떤 경기로 점프합니까? 어떤 버퍼에 있습니까? 어느 창에서?

  6. 다른 창으로 전환 :lne하고 몇 번 수행하십시오. 무슨 일이야?

  7. 로 다시 전환하십시오 bar.txt. 무엇을 :lne합니까?

  8. 이제 수행 :vim bar %bar.txtquickfix 목록을 만들 수 있습니다.

  9. 수행 :cn몇 가지에 점프에 몇 번 bar에서 bar.txt.

  10. 이제 초점 foo.txt어떻게 않습니다 :cn합니까?

이동하는 위치 :lne는 현재있는 창에 따라 다르지만 이동하는 오류 :cn는 항상 동일합니다 (현재 빠른 수정 목록을 다른 목록으로 바꿀 때까지).

두 목록 모두 상대적으로 명확한 역할 IMO를 가지고 있습니다. 빠른 수정 목록 (따라서 빠른 수정 창)은 일반적으로 논리적으로 오류에 전념하고 위치 목록은 검색에 적합합니다.


답변