[vim] vim : 여러 줄의 처음 2 개 공백 삭제

VIM을 사용하여 각 줄의 처음 2 개 공백을 삭제하는 가장 쉬운 방법은 무엇입니까? 기본적으로 각 줄에 대해 “2x”를 반복합니다.

설명 : 여기에서 처음 두 문자가 공백이라고 가정합니다. 따라서 문제는 여러 줄을 함께 들여 쓰기하는 것입니다.



답변

더 많은 옵션. “가장 쉬운 방법”을 결정할 수 있습니다.

모든 줄의 처음 2자를 제거합니다.

:%normal 2x

공백 인 경우에만 모든 줄의 처음 2자를 제거합니다.

:%s/^  /

마지막 슬래시는 선택 사항이며 두 개의 공백을 볼 수 있도록 여기에만 있습니다. 슬래시 없이는 :.

모든 줄에 대해 들여 쓰기를 왼쪽으로 이동 :

:%normal <<


답변

  1. Ctrl-V(또는 붙여 넣기에 Ctrl-Q사용 Ctrl-V하는 경우) 시각적 블록 모드로 들어갑니다 .
  2. 화살표로 삭제할 영역을 선택하십시오.
  3. 그런 다음를 눌러 d선택한 영역을 삭제합니다.
  4. 프레스 Esc


답변

검색 및 바꾸기를 사용할 수도 있습니다 (ex 편집기에서 :문자 를 통해 액세스 ).

무엇이든지 처음 두 문자를 제거하십시오.

%s/^.\{2}//

처음 두 개의 공백 문자를 제거합니다 (처음에 있어야하고 둘 다 공백이어야합니다 … 해당 기준과 일치하지 않는 행은 건너 뜁니다).

%s/^\s\{2}//


답변

을 가정하고 shiftwidth=2다음 범위로 시프트를 사용합니다.%

:%<


답변

두 개의 공백 또는 두 개의 문자? ( 2x후자를 수행합니다.)

:[range]s/^  //

각 줄의 시작 부분에서 두 개의 공백을 삭제합니다. 전체 파일에 대해이 작업을 수행하는 것처럼 %(과 동일)을 사용 하십시오.1,$[range]

:[range]s/^..//

각 줄의 처음 두 문자를 삭제합니다. ( 반드시 두 개의 열이 아닌 두 개의 문자를 삭제합니다 . 탭 문자는 하나의 문자로 계산됩니다).

실제로 수행중인 작업이 들여 쓰기를 변경하는 경우 <명령을 사용하여 줄이거 나 >명령을 사용하여 늘릴 수 있습니다. shiftwidth이동 거리를 제어하도록 설정 합니다. 예 :

:set shiftwidth=2


답변

두 가지 접근 방식 중 하나를 시도합니다.

  1. Ctrl+V(종종에 매핑 됨 Ctrl+Q)을 사용하여 삭제할 블록에서 열 편집을 수행합니다 .
  2. q1(또는 기록 레지스터를 표시하려는 다른 숫자 / 문자)를 사용하여 첫 번째 행에 매크로를 기록한 다음 @1(이전 예제를 사용하려면) 해당 매크로를 여러 번 재생합니다 . 더 좋은 방법은 앞의 숫자를 사용하여 실행 시간- 10@1예를 들어 매크로를 10 번 실행하지만 기록한 내용에 따라 다릅니다 . 관련이있는 경우 커서를 되감 0거나 한 줄을 드롭 j해야합니다.


답변

또한 추가 할 사항 : vim에 대한 들여 쓰기를 구성하는 방법을 배우십시오. 그러면 간단한 gg=G것이 트릭을 할 것입니다.