vim에서 탭을 공백으로 바꿉니다.
gVim에서 탭을 공백으로 변환하고 싶습니다. 내 다음 줄을 추가했습니다 _vimrc
.
set tabstop=2
두 공백에서 멈추는 것으로 작동하지만 여전히 하나의 탭 키가 삽입 된 것처럼 보입니다 (나중에 공백을 계산하기 위해 h 키를 사용하려고했습니다).
gVim에서 탭을 공백으로 변환하려면 어떻게해야하는지 잘 모르겠습니다.
IIRC, 다음과 같은 것 :
set tabstop=2 shiftwidth=2 expandtab
트릭을해야합니다. 이미 탭이있는 경우 멋진 전역 RE를 사용하여 두 개의 공백으로 바꿉니다.
다른 답변에 따라 확장 탭을 설정하면 새 설정에 따라 기존 파일을 변환하는 매우 편리한 방법은 다음과 같습니다.
:retab
현재 버퍼에서 작동합니다.
시험
set expandtab
소프트 탭용.
기존 탭을 수정하려면
:%s/\t/ /g
tabstop을 이미 2 칸으로 설정했기 때문에 2 칸을 사용했습니다.
이것은 나를 위해 일했다 :
먼저 다음과 같이 탭을 볼 수 있습니다.
:set list
탭을 교체 할 수 있도록하려면 다음을 수행하십시오.
:set expandtab
그때
:retab
이제 모든 탭이 공백으로 바뀌어 다음과 같이 일반보기로 돌아갈 수 있습니다.
:set nolist
gg=G
전체 파일을 다시 들여 쓰고 동료가 파일에 넣은 모든 탭이 아닌 경우 대부분 제거합니다.
.vimrc에 다음 줄을 추가하십시오
set expandtab
set tabstop=4
set shiftwidth=4
map <F2> :retab <CR> :wq! <CR>
vim에서 파일을 열고 F2를 누릅니다. 탭이 4 개의 공백으로 변환되고 파일이 자동으로 저장됩니다.
\t
8 칸을 동일하게 유지하려면 설정을 고려하십시오.
set softtabstop=2 tabstop=8 shiftwidth=2
이렇게하면 <TAB>
프레스 당 두 개의 공백이 생길 수 있지만 실제 \t
코드에서는 여전히 8 자로 표시됩니다.
파일에서 탭을 먼저 검색하십시오 : / ^ I : set expandtab : retab
작동합니다.
이것은 나를 위해 일하게했습니다.
:set tabstop=2 shiftwidth=2 expandtab | retab
expand
탭을 공백으로 변환하는 유닉스 유틸리티입니다. set
vim에서 아무 것도 원하지 않으면 vim에서 쉘 명령을 사용할 수 있습니다.
:!% expand -t8
이 기사에는 탭 + 공백을 처리하고 그 사이를 변환하는 데 유용한 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>)
이것은 내가 솔루션을 처음 검색했을 때의 대답보다 조금 더 도움이되었습니다.
참고 URL : https://stackoverflow.com/questions/426963/replace-tabs-with-spaces-in-vim
'Programming' 카테고리의 다른 글
C #에서 현재 실행 파일의 이름을 어떻게 얻습니까? (0) | 2020.03.04 |
---|---|
location.host와 location.hostname 및 크로스 브라우저 호환성? (0) | 2020.03.04 |
내 응용 프로그램에 "암호화가 포함되어 있습니까?" (0) | 2020.03.04 |
Windows에서 Git : mergetool을 어떻게 설정합니까? (0) | 2020.03.04 |
애플리케이션에서 개인 API 키를 저장하고 보호하는 모범 사례 (0) | 2020.03.04 |