[vim] 탭을 4 개의 공백으로 재정의

현재 설정은 8 개의 공백을 가정합니다. 어떻게 재정의 할 수 있습니까?



답변

그것은 당신이 무엇을 의미하는지에 달려 있습니다. 파일의 실제 탭 문자 4 칸 넓이 로 나타나 도록 하시겠습니까 , 또는 “tab”은 실제로 탭 키를 눌러 생성 된 들여 쓰기를 의미합니까? 입력 한 “탭”각각?

답변에 따라 다음 설정 중 하나가 적합합니다.

  • 4 칸 너비로 나타나는 탭 문자 :

    set tabstop=4
    

    소스 코드에서 실제 탭 문자를 사용하는 경우 이러한 설정을 원할 수도 있습니다 (실제로는 기본값이지만 방어 적으로 설정할 수도 있습니다).

    set softtabstop=0 noexpandtab
    

    마지막으로 들여 쓰기가 단일 탭에 해당되도록하려면 다음을 사용해야합니다.

    set shiftwidth=4
    
  • 공백 문자 4 개로 구성 되지만 탭 키로 입력 된 들여 쓰기의 경우 :

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

위의 설정을 영구적으로 만들려면 vimrc 에이 줄을 추가하십시오 .

조정이 필요하거나 이러한 옵션의 의미가 무엇인지 이해하려는 경우 각 옵션의 의미에 대해 설명합니다.

tabstop

“공백”으로 측정 한 하드 탭 스톱의 너비-실제 탭 문자의 최대 너비입니다.

shiftwidth

“들여 쓰기”의 크기입니다. 또한 공백으로 측정되므로 코드베이스가 탭 문자로 들여 쓰기되면 탭 문자 shiftwidth수와 같기 를 원합니다 tabstop. 이것은 또한 =, ><명령 과 같은 것들에 의해 사용됩니다 .

softtabstop

이 값을 0이 아닌 값으로 설정하면 tabstop(삽입 모드에서) 탭 키가 공백과 탭 조합을 삽입 하여이 폭에서 탭 정지 를 시뮬레이션 합니다.

expandtab

이를 사용하면 탭 키 (삽입 모드에서)가 탭 문자 대신 공백을 삽입합니다. 이것은 retab명령 의 동작에도 영향을줍니다 .

smarttab

이 기능을 활성화하면 커서가 줄의 시작 부분에있을 때 탭 키 (삽입 모드에서) 삽입 공간 또는 탭이 다음 탭 정지의 다음 들여 쓰기로 이동합니다 (즉, 앞의 유일한 문자는 공백 임).

이들의에 대한 자세한 내용은 참조하십시오 (예 : VIM에서 ):help 'optionname':help 'tabstop'


답변

현재 사용자에 대해 영구적으로이를 정의하려면 .vimrc파일을 작성 (또는 편집) 하십시오.

$ vim ~/.vimrc

그런 다음 아래 구성을 파일에 붙여 넣습니다. vim이 다시 시작되면 탭 설정이 적용됩니다.

set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.

set shiftwidth=4    " Indents will have a width of 4

set softtabstop=4   " Sets the number of columns for a TAB

set expandtab       " Expand TABs to spaces


답변

또는 vim modeline의 약칭 :

vim :set ts=4 sw=4 sts=4 et :


답변

공백 또는 탭 사용 여부를 정의하는 설정이 거의 없습니다.

다음은 ~/.vimrc파일 에서 정의 할 수있는 편리한 기능입니다 .

function! UseTabs()
  set tabstop=4     " Size of a hard tabstop (ts).
  set shiftwidth=4  " Size of an indentation (sw).
  set noexpandtab   " Always uses tabs instead of space characters (noet).
  set autoindent    " Copy indent from current line when starting a new line (ai).
endfunction

function! UseSpaces()
  set tabstop=2     " Size of a hard tabstop (ts).
  set shiftwidth=2  " Size of an indentation (sw).
  set expandtab     " Always uses spaces instead of tab characters (et).
  set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
  set autoindent    " Copy indent from current line when starting a new line.
  set smarttab      " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction

용법:

:call UseTabs()
:call UseSpaces()

파일 확장자별로 사용하려면 다음 구문을 사용할 수 있습니다 (에 추가됨 .vimrc).

au! BufWrite,FileWritePre *.module,*.install call UseSpaces()

참조 : 탭을 공백으로 변환 .


다음은 탭과 공백전환 하는 데 사용할 수있는 Wikia의 다른 스 니펫입니다 .

" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
  if &expandtab
    set shiftwidth=8
    set softtabstop=0
    set noexpandtab
  else
    set shiftwidth=4
    set softtabstop=4
    set expandtab
  endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z

모든 탭에 4 개의 공백을 사용 F9하고 설정을 전환 하기위한 매핑을 사용할 수 있습니다.


답변

나는 이것을 내 .vimrc 파일에 복사하여 붙여 넣었다.

" size of a hard tabstop
set tabstop=4

" always uses spaces instead of tab characters
set expandtab

" size of an "indent"
set shiftwidth=4

처음 2 개의 설정은 Tab 키를 누르면 4 개의 공백이 있음을 의미합니다. 세 번째 설정은 내가 할 때 V>(즉, 시각적이고 들여 쓰기) 4 개의 공백을 얻는다는 것을 의미합니다.

허용되는 답변만큼 포괄적이지는 않지만 복사하여 붙여 넣기를 원하는 사람들에게 도움이 될 수 있습니다.


답변

~ / .vimrc 파일 에 원하는 설정을 지정 하십시오-일부 지침 및 모범 사례는 아래를 참조하십시오.

Vim에서 탭을 사용하는 4 가지 주요 방법이 있습니다 :

  1. 항상 ‘tabstop’을 8로 유지하고 ‘softtabstop’및 ‘shiftwidth’를 4 (또는 3 또는 원하는 것)로 설정하고 ‘noexpandtab’을 사용하십시오. 그런 다음 Vim은 탭과 공백을 혼합하여 사용하지만 입력하면 4 자 또는 3 자마다 탭이 나타나는 것처럼 동작합니다.

    참고 : ‘tabstop’을 8 이외의 다른 값으로 설정하면 파일이 여러 위치에서 잘못 표시 될 수 있습니다 (예 : 인쇄시).

  2. ‘tabstop’및 ‘shiftwidth’를 원하는 것으로 설정하고 ‘expandtab’을 사용하십시오. 이런 식으로 항상 공백을 삽입합니다. ‘tabstop’이 변경되면 서식이 엉망이되지 않습니다.

  3. ‘tabstop’및 ‘shiftwidth’를 원하는대로 설정하고 | modeline | 파일을 다시 편집 할 때이 값을 설정하십시오. Vim을 사용하여 파일을 편집 할 때만 작동합니다.

  4. ‘tabstop’과 ‘shiftwidth’는 항상 같은 값으로 설정하고 ‘noexpandtab’을 설정하십시오. 그런 다음 사람들이 사용하는 탭 중지 설정에 대해 작동해야합니다 (초기 들여 쓰기에만 해당). 이렇게하면 공백이 아닌 첫 번째 공백이 아닌 후에 탭이 있으면 좋을 것입니다. 그렇지 않으면 ‘tabstop’이 변경 될 때 정렬 된 주석이 잘못됩니다.

출처:


답변

한 가지 더,
:retab
기존 tabhttp://vim.wikia.com/wiki/Converting_tabs_to_spaces 로 변환하는 데 사용하십시오.spaces