gVim에서 탭을 공백으로 변환하고 싶습니다. 내 다음 줄을 추가했습니다 _vimrc
.
set tabstop=2
두 공백에서 멈추는 것으로 작동하지만 여전히 하나의 탭 키가 삽입 된 것처럼 보입니다 (나중에 공백을 계산하기 위해 h 키를 사용하려고했습니다).
gVim에서 탭을 공백으로 변환하려면 어떻게해야하는지 잘 모르겠습니다.
^I
오는 )로 바꾸면 작동합니다.Ctrl-v
Tab
:%s/ /^I/g
gVim에서 탭을 공백으로 변환하고 싶습니다. 내 다음 줄을 추가했습니다 _vimrc
.
set tabstop=2
두 공백에서 멈추는 것으로 작동하지만 여전히 하나의 탭 키가 삽입 된 것처럼 보입니다 (나중에 공백을 계산하기 위해 h 키를 사용하려고했습니다).
gVim에서 탭을 공백으로 변환하려면 어떻게해야하는지 잘 모르겠습니다.
^I
오는 )로 바꾸면 작동합니다.Ctrl-v
Tab
:%s/ /^I/g
답변:
IIRC, 다음과 같은 것 :
set tabstop=2 shiftwidth=2 expandtab
트릭을해야합니다. 이미 탭이 있다면 멋진 전역 RE로 탭을 두 개의 공백으로 대체하십시오.
다른 답변에 따라 확장 탭을 설정하면 새 설정에 따라 기존 파일을 변환하는 매우 편리한 방법은 다음과 같습니다.
:retab
현재 버퍼에서 작동합니다.
:%s/\t/ /g
당신의 의견을보기 전에 수년 동안 지루한 것을 사용했습니다 .
:args retab | w
명령 행에서 열린 모든 파일 (예 :)을 수행 할 수도 있습니다 vim *.txt
.
시험
set expandtab
소프트 탭용.
기존 탭을 수정하려면
:%s/\t/ /g
tabstop을 이미 2 칸으로 설정했기 때문에 2 칸을 사용했습니다.
set ts = 4
.
이것은 나를 위해 일했다 :
먼저 다음과 같이 탭을 볼 수 있습니다.
:set list
탭을 교체 할 수 있도록하려면 다음을 수행하십시오.
:set expandtab
그때
:retab
이제 모든 탭이 공백으로 바뀌어 다음과 같이 일반보기로 돌아갈 수 있습니다.
:set nolist
:set list
그냥 아름답습니다.
gg=G
전체 파일을 다시 들여 쓰기하고 동료가 파일에 넣은 모든 탭이 아닌 경우 대부분 제거합니다.
gg
은 커서를 버퍼의 시작 부분으로 이동시킵니다. =
형식이며 이동 명령을받습니다. G
커서를 버퍼의 끝으로 이동하여 vim에게 현재 버퍼의 처음부터 끝까지 포맷하도록 지시합니다.
.vimrc에 다음 줄을 추가하십시오
set expandtab
set tabstop=4
set shiftwidth=4
map <F2> :retab <CR> :wq! <CR>
vim에서 파일을 열고 F2를 누릅니다. 탭이 4 개의 공백으로 변환되고 파일이 자동으로 저장됩니다.
q
뿐만 아니라 파일의 현재 버퍼를 닫습니다. 이것은 바람직하거나 바람직하지 않을 수 있습니다.
\t
8 칸을 동일하게 유지하려면 설정을 고려하십시오.
set softtabstop=2 tabstop=8 shiftwidth=2
이렇게하면 <TAB>
프레스 당 2 개의 공백이 생길 수 있지만 실제 \t
코드에서는 8 자로 표시됩니다.
softtabstop
킬러 기능 중 하나 를 언급 해 주셔서 감사합니다 .
이것은 나를 위해 일하게했습니다.
:set tabstop=2 shiftwidth=2 expandtab | retab
이 기사에는 탭 + 공백을 처리하고 그 사이를 변환하는 데 유용한 vimrc 스크립트가 있습니다.
다음 명령이 제공됩니다.
Space2Tab 들여 쓰기로만 공백을 탭으로 변환하십시오.
Tab2Space 들여 쓰기에서만 탭을 공백으로 변환합니다.
RetabIndent Space2Tab ( 'expandtab'이 설정된 경우) 또는 Tab2Space (그렇지 않은 경우)를 실행하십시오.
각 명령은 탭 열의 공백 수를 지정하는 인수를 허용합니다. 기본적으로 '탭 중지'설정이 사용됩니다.
출처 : http://vim.wikia.com/wiki/Super_retab#Script
" Return indent (all whitespace at start of a line), converted from
" tabs to spaces if what = 1, or from spaces to tabs otherwise.
" When converting to tabs, result has no redundant spaces.
function! Indenting(indent, what, cols)
let spccol = repeat(' ', a:cols)
let result = substitute(a:indent, spccol, '\t', 'g')
let result = substitute(result, ' \+\ze\t', '', 'g')
if a:what == 1
let result = substitute(result, '\t', spccol, 'g')
endif
return result
endfunction
" Convert whitespace used for indenting (before first non-whitespace).
" what = 0 (convert spaces to tabs), or 1 (convert tabs to spaces).
" cols = string with number of columns per tab, or empty to use 'tabstop'.
" The cursor position is restored, but the cursor will be in a different
" column when the number of characters in the indent of the line is changed.
function! IndentConvert(line1, line2, what, cols)
let savepos = getpos('.')
let cols = empty(a:cols) ? &tabstop : a:cols
execute a:line1 . ',' . a:line2 . 's/^\s\+/\=Indenting(submatch(0), a:what, cols)/e'
call histdel('search', -1)
call setpos('.', savepos)
endfunction
command! -nargs=? -range=% Space2Tab call IndentConvert(<line1>,<line2>,0,<q-args>)
command! -nargs=? -range=% Tab2Space call IndentConvert(<line1>,<line2>,1,<q-args>)
command! -nargs=? -range=% RetabIndent call IndentConvert(<line1>,<line2>,&et,<q-args>)
이것은 내가 솔루션을 처음 검색했을 때의 대답보다 조금 더 도움이되었습니다.
expand
탭을 공백으로 변환하는 유닉스 유틸리티입니다. set
vim에서 아무 것도 원하지 않으면 vim에서 쉘 명령을 사용할 수 있습니다.
:!% expand -t8
:
. 이제 vim 명령 줄이 표시 :'<,'>
됩니다. 그런 다음 !expand -t4
탭을 4 칸에 입력 하십시오. (결과 명령 줄은 다음과 같습니다 :'<,'>!expand -t4
)