답변:
아래의 두 가지 답변에서 지적했듯이 이제 선호하는 방법은 smartindent를 사용하는 것이 아니라 대신 .vimrc 에서 다음을 사용하는 것입니다 .
filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
당신에서 의 .vimrc : 파일 :
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
도움말 파일은 익숙해지기까지 약간의 시간이 걸리지 만 읽을수록 Vim은 더 잘 읽습니다.
:help smartindent
또한 이식성을 위해 다음 설정을 소스에 포함시킬 수 있습니다.
:help auto-setting
현재 설정을 보려면
:set all
으로 graywh 의견에서 지적 smartindent은 cindent로 대체되어있는 "작품 더 영리하게",하지만 여전히 주로와 언어 C와 같은 구문 :
:help C-indenting
관련, 탭과 공백을 모두 사용하는 파일을 여는 경우
set expandtab ts=4 sw=4 ai
전체 탭에서 모든 탭을 공백으로 바꿀 수 있습니다.
:%retab
대부분의 파일에 4 개의 공백 탭, Makefile의 실제 8 와이드 탭 문자 및 C / C ++를 포함한 다양한 파일에서 자동 들여 쓰기를하려면 파일에 다음을 입력 ~/.vimrc
하십시오.
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Use filetype detection and file-based automatic indenting.
filetype plugin indent on
" Use actual tab chars in Makefiles.
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" For everything else, use a tab width of 4 space chars.
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.
else
않습니까? 마치 마지막 줄이 모든 경우에 makefile 특정을 덮어 쓰는 것처럼 보입니다.
우분투와 같은 많은 Linux 시스템에는 .vimrc
파일이 기본적으로 존재하지 않으므로 먼저 생성하는 것이 좋습니다.
.viminfo
홈 디렉토리에 존재 하는 파일을 사용하지 마십시오 . 다른 목적으로 사용됩니다.
1 단계 : 홈 디렉토리로 이동
cd ~
2 단계 : 파일 작성
vim .vimrc
3 단계 : 위에서 언급 한 구성 추가
filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab
3 단계 : Shift+ 를 눌러 파일을 저장합니다 ZZ.
Shift + ZZ
하지 않으면 .swp 파일이 생성됩니다. 사용하십시오 wq
.
Ctrl-Z
다른 이야기입니다 ...)
vim -n <file>
. 스왑 파일은 저장시 생성되는 것이 아닙니다. 스왑 파일이 갑자기 종료 된 편집 세션을 복구하는 데 유용하기 때문에 그 목적을 거의 잃을 것입니다.
권장되는 방법은 파일 유형 기반 들여 쓰기를 사용하고 충분하지 않은 경우에만 smartindent 및 cindent를 사용하는 것입니다.
.vimrc에 다음을 추가하십시오
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
다른 답변으로 도움이되기를 바랍니다.
먼저 Tab수동 들여 쓰기를 위해 Vim 의 키를 사용하지 마십시오 . Vim에는 들여 쓰기 양을 수동으로 늘리거나 줄이기 위해 삽입 모드의 명령 쌍이 있습니다. 이러한 명령은 Ctrl-T및 Ctrl-D입니다. 이 명령은 tabstop
, shiftwidth
및 의 값을 관찰하고 expandtab
공백과 탭의 올바른 혼합을 유지합니다 (최대 탭 수와 필요한 수의 공백 수).
둘째, 자동 들여 쓰기를 사용하는 경우 이러한 수동 들여 쓰기 키를 아무리 많이 사용할 필요는 없습니다.
경우 Ctrl-T대신 Tab귀찮게 당신을, 당신은 그것을 다시 매핑 할 수 있습니다 :
:imap <Tab> ^T
deindent Shift-Tab를 수행하도록 다시 매핑 할 수도 있습니다 Ctrl-D.
:imap <S-Tab> ^D
여기서 ^ T와 ^ D는로 삽입 될 수있는 리터럴 제어 문자입니다 Ctrl-VCtrl-T.
이 매핑을 사용하면을 사용하여 리터럴 탭을 버퍼에 계속 입력 할 수 있습니다 Ctrl-VTab. 이 작업을 수행하면 :set expandtab
켜져 있어도 확장되지 않은 탭 문자가 나타납니다.
을 사용하여 <Tab>
지도 와 비슷한 효과를 얻을 수 :set smarttab
있으며, 이로 인해 줄 앞의 백 스페이스가 스마트하게 작동합니다.
에서 smarttab
모드 때 Tab행의 시작에 있지 사용, 그것은 특별한 의미가 없습니다. 삽입 모드에서 줄의 어느 곳에서나 사용하면 해당 줄의 들여 쓰기가 증가 하기 때문에 위의 Tabto 매핑과 다릅니다 .Ctrl-TCtrl-T
다른 유용한 매핑은 다음과 같습니다.
:map <Tab> >
:map <S-Tab> <
이제 우리는 몇 줄 Tab을 고르는 등의 작업을 할 수 있습니다. 또는 Tab줄을 두 번 쳐서 (명령 모드에서) 들여 쓰기를 늘리십시오.
적절한 들여 쓰기 관리 명령을 사용하면 모든 것이 세 개의 매개 변수 인 shiftwidth
, tabstop
및로 제어됩니다 expandtab
.
이 shiftwidth
매개 변수는 들여 쓰기 크기를 제어합니다. 네 개의 공백 들여 쓰기를 원하면 :set shiftwidth=4
, 또는 약어를 사용하십시오 :set sw=4
.
이 작업 만 수행하면 공백과 탭이 혼합되어 들여 쓰기가 만들어 noexpandtab
집니다. 기본값 이기 때문 입니다. 사용하십시오 :set expandtab
. 이렇게하면 버퍼에 입력 한 탭 문자가 공백으로 확장되고 Vim 관리 들여 쓰기는 공백 만 사용합니다.
경우 expandtab
에, 당신이 모든을 통해 적절한 빔 메커니즘을하여 들여 쓰기를 관리하는 경우,의 값은 tabstop
무관된다. 파일에서 탭이 발생할 경우 탭이 표시되는 방식을 제어합니다. 를 set tabstop=8 expandtab
사용하여 하드 탭을 파일에 넣은 Ctrl-VTab다음 평소와 같이 다음 8 열 기반 탭 위치에 정렬합니다.
<C-t>
는 리터럴 대신 해당 구문을 사용할 수 있습니다. 마지막으로, <Tab>
일반 모드 에서의 매핑 도 매핑 될 것입니다 <C-i>
(같은 문자 임). 권장하지 않습니다. (당신은 멋진 vim 기능을 잃어 버립니다