한 번의 키 입력으로 Vim에서 공백으로 확장 된 "탭"을 삭제 하시겠습니까?


19

Vim으로 파이썬 코드를 편집 합니다.

tab키를 사용하면 들여 쓰기를 위해 4 개의 공백이 삽입됩니다. 하나의 "Backspace"(?) 스트로크를 사용하여 공백을 삭제하려면 어떻게해야합니까?

그것에 대한 "설정"옵션이 있어야합니다 ...

내 .vimrc는 다음과 같습니다.

set autoindent
set ts=4
set sw=4
set et

답변:


23

Ctrl+D하나의 탭 정지를 백업하는 데 사용할 수 있습니다 . 이것은 실제로 전체 줄을 왼쪽의 탭 정지로 이동시킵니다. Ctrl+T오른쪽에도 같은 일을합니다. 참고 삽입 모드에서 (사용이 키 입력에만 작업 <<>>명령 모드에서 등가물은).


30
set softtabstop=4

10
IMO는 정확히 OP가 요구 한 것입니다. 더 많은 공감 비가 필요합니다.
Ludwig Weinzierl

2
이것이 정답입니다.
mk12

1
이것에 대해 몰랐는데, 이것은 내가 찾던 것입니다. +1
NigoroJr

5

tl; dr : set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

짧은 형식: set ts=4 sts=-1 sw=0 et

설명

로 설정하면 softtabstop(또는 sts) -1자동으로 tabstop( ts) 와 동일하게 동작하므로 탭을 많이 변경하면 번거 로움이 줄어 듭니다. shiftwidth( sw)를 설정 0하면 효과적으로 동일하게 만들어야합니다 tabstop.

상세히

shiftwidth sw

(자동) 들여 쓰기의 각 단계에 사용할 공간 수입니다. 에 사용 cindent, >>, <<, 등
제로 때 tabstop값이 사용됩니다.

tabstop ts

파일에서 a가 계산하는 공간 수입니다. : retab 명령 및 softtabstop옵션 도 참조하십시오 .

softtabstop sts

자리의 수있는 Tab삽입과 같은 편집 동작들을 수행하기위한 계산하는 동안 Tab또는 사용 BS. 그것은 느낌 처럼 TabS가 삽입되는 사실 공간과의 혼합 사용하는 동안. 이 tabs설정을 표준 값 으로 유지하면서 로 설정 한대로 편집 할 수 있으면 유용 합니다 sts. 때는 sts음수의 값이 shiftwidth사용된다. tabstops를 많이 변경하면 번거 로움을 덜어줍니다. 때는 expandtab설정되지 않으며, 공간의 수는 사용함으로써 최소화 Tab들.

expandtab et

삽입 모드에서 : 적절한 수의 공백을 사용하여을 삽입하십시오. 공백은 ><명령과 함께 들여 쓰기에 사용 autoindent됩니다. expandtab켜져 있을 때 실제 탭을 삽입하려면 Ctrl-를 사용하십시오 V Tab. 참조 : retab


깔끔하게, 나는 몇 년 동안 vim을 사용해 왔지만 sts / sw / ts의 상속은 결코 내 눈에 띄지 않았습니다.
timss

2

나는 이것을 원했던 누군가를 위해 GreedyBackspace.vim 을 썼습니다 . 개인적으로 사용하지 않으므로 업데이트한지 오래되었습니다. 그래도 최근에 버그 보고서를받지 못했습니다.


1

몇 가지 옵션 :

  1. 모든 공백을 '리탭'하여 탭으로 대체 할 수 있습니다. 그렇게하면 쉽게 삭제할 수 있습니다.
  2. 당신은 (테스트되지 않았으므로 여기서 아이디어를 제안하고 있습니다) 일반 모드에서 백 스페이스 키의 4 배를 '실행하는'기능을 만들 수 있습니다. 그런 다음 무언가에 매핑하십시오. 그러나 공백이나 중요한 문자를 삭제할지 여부를 알 방법이 없으므로 잠재적으로 안전하지 않습니다.
  3. '4X'는 마지막 4자를 삭제합니다 (작고 크지 않은 X는 작고 Del 키처럼 작동합니다).

0

가장 쉬운 방법은 <<, A를 반복.


안녕하세요, 수퍼 유저입니다. 귀하의 답변이 vi 사용자라는 것에 동의하지만. 당신의 대답은 짧고, 당신이 제안하는 것을 제안하는 이유와 왜 질문에 맞는 것을 제안하지 않는지를 설명하지 않습니다.
Mogget

-1

VIM 의 확장 탭 설정을 사용하여 확인 했습니까 ?

:set noet

파일 작업을하는 동안 탭을 유지하는 것이 좋습니다.
필요할 때 탭을 4 칸 또는 필요한만큼 교체합니다.

:%s/<ctrl+V><tab>/    /g
                  ----

작은 보너스로 소스 파일은 탭당 3 자씩 짧아집니다 :-)


아, 내가 편집 한 코드가 처음에 그렇게 작성 되었기 때문에 탭을 확장해야하기 때문에 et가 있습니다. 이제 나는 그 협약을 따르고 있습니다.
Evgeny

당신은 여전히 ​​내가 말한 것을 수행하고 마지막에 공간을 복원 할 수 있습니다 (파일을 저장소에 다시 제공해야 할 때)
nik

어쩌면 vim 기능을 사용하여 열면 탭으로 확장하고 닫을 때 공백으로 축소 할 수 있습니까? 누구든지 아이디어가 있습니까?
sixtyfootersdude

이것은 실제로 도움이되지 않는 답변입니다. 실제로 유용한 정보를 제공하지 않고 탭 대 공백 토론을 불필요하게 다시 엽니 다.
Dietrich Epp

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.