'softtabstop'은 무엇에 사용됩니까?


21

Vim에서 다음 탭 관련 설정을 알고 있습니다.

  • ts
  • sw
  • expandtab
  • smarttab
  • sts

나의 정상적인 설정은 set ts=4 sw=4 expandtab smarttab입니다.

그러나에 따라 sts문서 경우, expandtab설정되지 않은, 그것은 탭 크기 공백 원하는 수의 만들기 위해 공백과 탭의 조합을 사용하려고합니다.

이 설정에 유용한 시나리오를 생각할 수 없습니다. 왜 누군가가 고정 된 수의 탭과 공백을 사용하여 문제를 일으킬 수 있습니까? 내가 생각할 수있는 유일한 장점은 문자 수를 줄이고 파일 크기를 줄이는 것입니다.

답변:


20

softtabstop문서에서 언급 했듯이 기본 탭 정지 크기를 8로 유지하고 탭 정지 크기가 다른 값인 것처럼 파일을 편집하려는 경우 유용합니다. 예를 들어 코드를 편집하는 동안 들여 쓰기 수준 4를 원했지만 탭 주석이 8 인 테이블과 같이 탭 들여 쓰기 된 텍스트가있는 주석이있는 경우로 설정할 sts4있습니다.

탭 설정 ( set ts=4 sw=4 expandtab smarttab)과 사용 sts(예 set ts=8 sts=4:) 사이에 한 가지 차이점 은 한 줄의 텍스트 중간에 공백이있는 경우입니다. 예를 들어, ·공백을 나타내는 다음 텍스트 줄을 고려하십시오 .

some·text·······more·text

삽입 모드에서 커서를 mof 바로 앞에서 이동하십시오 more text. 설정에서 백 스페이스 키를 누르면 단일 공백이 삭제됩니다. 그러나 sts=4백 스페이스는 을 사용하는 동안 공백이 대신 탭 문자 인 경우와 같이 이전 탭 정지까지 완전히 삭제합니다.

당신은 설정할 수 있습니다 sts=4설정에 추가하고 탭과 공백을 혼합하지하면서 중간 라인 백 스페이스 동작을 얻을. 탭은 4 개의 공백으로 확장되지만 줄 중간에있는 공백 범위에서 백 스페이스 할 수 있습니다.


3

아래 예를 참조하십시오.

// Start vim without loading your vimrc. set only tabstop=8 softtabstop=4.
// This makes <Tab> in insert mode equals to 4 <Space> length at max.

// In insert mode, type 12, one <Tab>, 5. We get insertion below,
12··5
// Quit insert mode. Move cursor back, we find 2 <Space> inserted.

// In insert mode, type 12, two <Tab>, 9. We get insertion below,
12······9
// Quit insert mode. Move cursor back, you find a <Tab> inserted.

// In insert mode, type 12, three <Tab>, 3. We get insertion below,
12··········3
// Move the cursor back, you find a <Tab> and 4 <Space> inserted.

// We can even set sotftabstop=12, but this time we only need type one <Tab>, then 3.
12··········3
// Move the cursor back, you find a <Tab> and 4 <Sapce> inserted.

그래서 tabstopA는 너비에 관한 Tab동안, 정의 softtabstop까지 잠시 이동 커서 방법에 관한 입력을 Tab . 그것들이 같은 값으로 설정되어 Tab있지 않으면, 키를 눌렀을 때 , 그것은 사소한 Tab문자를 의미하지 않습니다 . 어쨌든 일단 삽입 모드를 종료하면 누가 결정합니다. Vim은 먼저 가능한 한 많이 삽입을 시도합니다 tabstop. 마지막으로 전체를 만들 수 없으면 tabstopvim은 단순히 다음과 같이 보상합니다 Space.

조금 더 말하면을 설정 expandtab하면 vim이라고 말하는 것과 같습니다.

얼마나 많은 계산하는 귀찮게하지 마십시오 TabSapce필요합니다. 간단히 삽입하십시오 Space.


당신의 대답은 오히려 비참한 것처럼 보이며 질문에 대답하지 않는 것 같습니다.
Herb Wolfe

@ 허브 울프 내 대답이 PO가 비정상적인 설정을 할 때 어떤 일이 발생하는지 알아내는 데 도움이되기를 바랍니다 :set st=7 sts=13. vim은 코딩뿐만 아니라 원래 텍스트 편집 용으로 설계되었습니다.
Chen XI

1

간단한 답변 :

예를 들어, 특히 표 작성이 중요한 Python에서 프로그래밍에 매우 유용합니다. sts = 4로 백 스페이스를 누르면 단일 공백 ​​문자가 삭제되지 않고 행이 탭 해제됩니다.

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