
VIM의 명령 앞에는 숫자가 붙을 수 있지만 일부 작업에서는 번호 지정 방식이 일관되지 않습니다.
이동 명령 왼쪽, 아래, 위, 오른쪽(H, J, K, L) 앞에 숫자를 붙이면 커서가 예상 위치로 이동합니다. 예를 들어 1L
한 문자 오른쪽으로 이동합니다.
현재 행은 :m+N
또는 를 사용하여 위나 아래로 이동할 수 있지만 의 반대 효과를 얻으려면 을 :m-N
사용해야 합니다 .:m-2
:m+1
또한 Visual Studio 2019에서 VSVim을 사용하고 있으며 gt
및 gT
명령을 사용하여 탭 간을 전환하고 있습니다. 세 개의 탭이 열려 있고 현재 첫 번째 탭(가장 왼쪽)에 있는 경우 를 사용하면 3gt
세 번째 탭으로 전환됩니다. 세 번째 탭(가장 오른쪽)에 있는 경우 2gT
첫 번째 탭으로 다시 전환되지만 3gT
결과는 동일한 탭에 유지됩니다.
반대 효과를 얻으려면 왜 다른 숫자를 사용해야 합니까? 이것이 결코 변경되지 않은 설계 결함일까요?
답변1
불일치가 있다는 귀하의 관찰은 정확합니다.
the는 {count}
작업을 반복하는 데 가장 자주 사용되지만 항상 그런 것은 아닙니다. 예를 들어, 47G
47행으로 이동하거나, 35|
현재 행의 35열로 이동하거나, 90%
파일의 90% 행으로 이동하는 등 절대값으로 사용되는 경우도 있습니다 .
때로는 동일한 명령의 다른 특징을 표시하는 데 사용됩니다. 예를 들어, CTRL-G
현재 버퍼에 열려 있는 파일에 대한 정보를 인쇄합니다. 1 CTRL-G
해당 정보를 인쇄하지만 파일의 전체 경로를 표시합니다. 2 CTRL-G
(또는 더 큰 카운트 숫자)은 동일하게 인쇄하고 출력에 버퍼 수도 포함합니다. (보다:help CTRL-G
자세한 내용은.)
구체적인 사례를 다루세요:
이동 명령 왼쪽, 아래, 위, 오른쪽(
hjkl
) 앞에 숫자를 붙이면 커서가 예상 위치로 이동합니다. 예를 들어1l
한 문자 오른쪽으로 이동합니다.
{count}
이는 명령 반복으로 의 일반적인 사용입니다 .
현재 행은
:m +N
또는 를 사용하여 위나 아래로 이동할 수 있지만 의 반대 효과를 얻으려면 을:m -N
사용해야 합니다 .:m -2
:m +1
첫째, 이것은 실제로는 {count}
가 아니라 입니다 {address}
. 이것은 실제로 일관성이 있습니다(처음 보면 이상하다고 생각할 수도 있음). 이 :m
명령은 현재 줄을 이동합니다.아래에주소로 지정된 줄.
47번째 줄에 있다면 :m 48
다음 줄 아래로 이동하는 것이 좋습니다. 현재 줄이 이동되었으므로 48이었던 줄은 이제 47이 되고 현재 줄은 48이 됩니다. 이제 원래 위치로 되돌리려면 가 필요합니다 :m 46
.아래에주소가 있는 줄. +1
는 단순히 48의 단축어(47행에서 시작)이고 -2
46의 단축어(지금은 48행에 있음)입니다.
Vim이 라인을 옮기기로 결정했다면~ 위에주소가 주소 앞에 있으면 주소, 현재 행이 그 위인지 아래인지에 따라 명령의 동작이 :m 46
달라지므로 좋지 않습니다. 그래서 Vim은 이 요소에 대한 일관성이 더 중요하다고 결정했습니다.
탭 간을 전환하려면 gt 및 gT 명령을 사용하고 있습니다. 세 개의 탭이 열려 있고 현재 첫 번째 탭(가장 왼쪽)에 있는 경우 3gt를 사용하면 세 번째 탭으로 전환됩니다. 세 번째 탭(가장 오른쪽)에 있는 경우 2gT는 첫 번째 탭으로 다시 전환되고 3gT는 동일한 탭에 유지됩니다.
예, 이것은 실제로 일관성이 없지만 거기에는 이유가 있습니다.
탭을 구현하는 동안 Vim 작성자는 "N" 탭을 건너뛰는 것보다 "N" 탭으로 빠르게 전환하는 방법을 갖는 것이 더 중요하다고 결정했습니다. 후자를 수행해야 하는 경우는 거의 없습니다. 그래서 그들은 명령 {count}
의 절대 탭 번호로 를 사용하기로 결정했습니다 gt
.
반면에 gT
명령이 다음을 구현하는 데는 그다지 필요하지 않습니다.같은동작(이미 더 쉬운 키 입력이 있음)이므로 반복 의미가 {count}
거기에 남아 있으므로 누군가 "N" 탭을 건너뛰고 싶다면 해당 명령이 도움이 될 수 있습니다...
이 방법을 사용하면 두 개의 명령만 사용하면서 세 개의 명령(다음 탭, 이전 탭, "N" 탭으로 이동)을 사용할 수 있으며, gt
Vim gT
에는 이미 너무 많은 명령이 있기 때문에 더 적은 수의 명령을 사용하는 것이 다소 중요합니다. 우리가 기억할 수 있도록!