Nice programing

Vi에서 전체 파일의 들여 쓰기를 어떻게 수정합니까?

nicepro 2020. 10. 2. 23:14
반응형

Vi에서 전체 파일의 들여 쓰기를 어떻게 수정합니까?


Vim에서 모든 줄의 들여 쓰기를 수정하는 명령은 무엇입니까?

종종 원격 터미널에 코드를 복사하여 붙여넣고 모든 것을 엉망으로 만들 것입니다. 나는 이것을 한 번에 고치고 싶다.


=, 들여 쓰기 명령은 동작을 취할 수 있습니다. 따라서 gg파일의 시작 부분, =들여 쓰기, G파일 끝 부분 을 가져 오려면 gg=G.


터미널에 붙여 넣기 전에 시도해보십시오 :set paste( :set nopaste완료 후). 이렇게하면 붙여 넣기를 엉망으로 만드는 자동 들여 쓰기, 줄 바꿈 등의 기능이 해제됩니다.

편집 : 또한, = 들여 쓰기보다 훨씬 더 나은 결과는 일반적으로 외부 프로그램을 사용하여 얻을 수 있음을 지적해야합니다. 예를 들어, 나는 :%!perltidy항상 뛰고 있습니다. astyle, cindent 등도 사용할 수 있습니다. 물론이를 키 입력에 매핑 할 수 있으며 파일 유형에 따라 다른 키 입력에 매핑 할 수도 있습니다.


코드를 입력하지 않고 현재 블록을 다시 들여 쓰려면 다음을 수행 할 수 있습니다.

[[=]]

모든 명령의 마스터는

gg=G

이것은 전체 파일을 들여 씁니다!

다음은 Vim 또는 gVim에서 줄을 빠르게 들여 쓰기하는 데 사용되는 간단하고 우아한 명령 중 일부입니다.

현재 줄 아래의 모든 줄을 들여 쓰려면

=G

현재 줄을 들여 쓰려면

==

n현재 줄 아래 줄 을 들여 쓰려면

n==

예를 들어, 현재 줄 아래로 4 줄을 들여 쓰려면

4==

코드 블록을 들여 쓰려면 중괄호 중 하나로 이동하여 명령을 사용하십시오.

=%

깔끔한 응용 프로그램 / 유틸리티를 사용하여 HTML 및 XML 파일을 들여 쓸 수 있으며 해당 파일을 들여 쓰는 데 매우 잘 작동합니다.

XML 파일 꾸미기

:!tidy -mi -xml %

HTML 파일 꾸미기

:!tidy -mi -html %

Esc 키를 누른 다음 아래 조합을 빠르게 입력하십시오.

gg=G

1G=G. 파일의 모든 줄을 들여 쓰기해야합니다. 1G첫 번째 줄로 이동 =하고 자동 들여 쓰기를 시작 G하고 마지막 줄은 파일의 마지막 줄로 이동합니다.


Vim에서는 :insert. 이렇게하면 모든 서식이 유지되고 자동 들여 쓰기가 수행되지 않습니다. 자세한 내용은 help :insert.


:set paste내가 퍼티를 사용하고 창 사이에 코드를 복사하는 당신의 친구입니다. 내가 :set paste(그리고 :set nopaste) 복사 / 붙여 넣기 를 사용하기 전에는 바로 그 이유에 대해 나에게 적합했다.


을 사용하지 않으려면 :set paste가운데 클릭,, set nopaste클립 보드의 내용을 붙여 넣을 수도 있습니다.

"*p
"+p

이렇게하면 일반 모드를 벗어날 필요가 없습니다. 붙여 넣어야 +하거나 *텍스트를 선택한 방법에 따라 달라지는 경우을 참조하십시오 :help quoteplus.


vim- autoformat은 언어에 맞는 외부 프로그램을 사용하여 소스 파일의 형식을 지정합니다. 예를 들어 Ruby 파일의 경우 rbeautify "gem, JavaScript의 경우"js-beautify "npm 패키지가 있습니다.


복잡한 C ++ 파일의 경우 vim의 =필터 명령을 사용할 때 vim이 항상 올바른 형식을 가져 오는 것은 아닙니다 . 따라서 이러한 상황에서는 astyle (또는 uncrustify ) 과 같은 외부 C ++ 포맷터를 사용하는 것이 좋습니다 . 예 :

:%!astyle

Vim's '=' function uses its internal formatter by default (which doesn't always gets things right) but one can also set it use an external formatter, like astyle, by setting it up appropriately as discussed in this question.


vi should respect tabs and spaces, however you should consider that vi may be using different length tabs than your other editor. Can you be any more specific than "whole thing messed up"?


For XML files, I use this command

:1,$!xmllint --format --recover - 2>/dev/null

You need to have xmllint installed (package libxml2-utils)

(Source : http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )


You can create a mapping to do this for you.

This one will auto indent the whole file and still keep your cursor in the position you are:

nmap <leader>ai mzgg=G`z

For vi Editor, use :insert. This will keep all your formatting and not insert auto-indenting.Once done press escape to view the actual formatted file otherwise you'l see some garbage characters. like ^I e.g:

public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert"); 
}

Just go to visual mode in vim , and select from up to down lines after selecting just press = , All the selected line will be indented.

참고URL : https://stackoverflow.com/questions/506075/how-do-i-fix-the-indentation-of-an-entire-file-in-vi

반응형