Vim 편집기에서 행 세트의 공백을 삭제하십시오.


12

파일에 다음과 같은 텍스트가 있습니다.

  sample text
    some random text
            even more random text
text with no indent
 worst indention

각 줄 앞에 빈 공간을 삭제해야합니다. 한 줄에 내가하는 일은 0dw

를 사용하여 동일한 명령을 반복 할 수 있습니다. 다음 줄로 직접 이동하면됩니다.

그러나 해당 행 블록에 '0dw'를 적용하는 방법이 있습니까?

매크로를 사용하는 방법이 있다고 생각하지만 이전에는 사용하지 않았습니다. 그러나 다른 선택이 없다면 기꺼이 배우겠습니다.


+1 좋은 질문, 나는 같은 일을 많이합니다. 그리고 사이트에 오신 것을 환영합니다.
Sardathrion-남용에 반대

답변:


10
:%s/^\s\+
" Same thing (:le = :left = left-align given range):
:%le

http://vim.wikia.com/wiki/Remove_unwanted_spaces 에서 자세히 알아보십시오.

특정 범위의 행에 대해이 작업을 수행하려는 경우 :

:19,25s/^\s\+//

BTW, vim 학습을 시작하는 가장 좋은 방법은 vimtutor명령 을 실행 하는 것입니다. Vim 편집기에서 Vim을 사용하는 방법을 알려줍니다.


1
: le는 굉장했고 대안과 링크에 감사드립니다. :)
saiy2k

3
좋은 답변과 함께 언급 한 사람이 +1입니다.
Sardathrion-남용에 반대

1
V커서 를 사용 하고 움직여 선을 선택하여 관련 선을 선택하십시오. 그런 다음을 눌러 :자동으로을 입력 '<,'>하면 Nikhil의 정규 표현식을 사용할 수 있습니다.
UncleZeiv

1
일련의 라인을 수행하는 또 다른 방법은 (항상 라인 번호를 잊어 버렸기 때문에) 2 라인을 표시하고 마크를 조작하는 것입니다. 예를 들어, 19 행으로 이동하여 'ma'를 누르고 25 행으로 이동하여 'mb'를 누른 다음을 수행하십시오 :'a,'bs/^\s\+//.
Patrick

7

이를 수행하는 다른 방법은 VIM의 들여 쓰기 도구를 사용하는 것입니다 (보통 </에 바인딩 됨 >). 먼저 어떤 라인이 영향을 받는지 나타내는 방법이 필요합니다. 시각적 선택 모드 또는 영향을받을 줄 범위를 지정하는 다른 방법을 사용한 다음 임의로 높은 수 또는 들여 쓰기 수준을 사용하여 제거 할 수 있습니다. 9<일반적으로 현재 줄에서 적어도 9 단계의 가능한 들여 쓰기 (탭 / 공백)를 제거하는 트릭을 아주 잘 수행합니다.


3

간단한 다음 단계 에서이 작업을 수행하는 방법이 있습니다.

1. press `v` to go to visual selection mode
2. select the lines you want to affect
3. :'<,'>normal 0dw

세 번째 단계에 대한 설명 :

0 줄의 시작으로 이동합니다.

dw 단어를 삭제합니다 (빈 공간).

normal명령을 적용합니다 0dw.

'<,'> 시각적 모드에서 선택한 모든 선에 대해 법선을 반복합니다.


1

ctrl+v원하는 것과 비슷하지만 정확하게 할 수없는 것을 할 수 있습니다. 시각적 블록을 선택하고 로트에 하나의 명령을 적용 할 수 있습니다.


2
블록 모드에서 해당 줄을 선택 하고이 명령이 작동했습니다. : '<,'> normal 0dw
saiy2k

1
@ saiy2k :normal는 여기서 중요한 것이며, 이것이 가장 좋은 대답이라고 생각합니다. 답변으로 게시 할 수 있습니까?
Gilles 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.