sourcecode

vim에서 C 코드를 자동 포맷/인디트하려면 어떻게 해야 합니까?

copyscript 2022. 8. 21. 19:51
반응형

vim에서 C 코드를 자동 포맷/인디트하려면 어떻게 해야 합니까?

다른 파일에서 코드를 복사하면 다음과 같이 포맷이 엉망이 됩니다.

fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}

vim에서 이 코드를 자동 포맷하려면 어떻게 해야 합니까?

다음 키 입력을 시도합니다.

gg=G

설명:gg파일 맨 위로 이동합니다.=들여쓰기를 수정하는 명령어입니다.G는, 파일의 끝까지 조작을 실행하도록 지시합니다.

저는 Artistic Style이라는 프로그램을 사용하는 것을 좋아합니다.그들의 웹사이트에 따르면:

Artistic Style은 C, C++, C# 및 Java 프로그래밍 언어의 소스 코드 입력자, 포맷터 및 뷰어입니다.

Window, Linux 및 Mac에서 실행됩니다.들여쓰기, 탭 공백으로 바꾸기, 작업 주위에 원하는 공간을 배치하기(변환) 등의 작업을 수행합니다.if(x<2)만약의 경우( x<2 )원하는 경우) 함수 정의와 같은 줄에 대괄호를 두거나 아래 줄에 대는 등의 작업을 수행합니다.모든 옵션은 명령줄 파라미터에 의해 제어됩니다.

vim에서 사용하려면 formatprg 옵션을 설정하고 gq 명령을 사용합니다.예를 들어, 제 .vimrc에는 다음과 같은 것이 있습니다.

autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb

따라서 .cpp 파일을 열 때마다 formatprg가 원하는 옵션으로 설정됩니다.그런 다음 gg를 입력하여 파일 맨 위로 이동하고 파일 전체를 내 기준에 맞게 포맷할 수 있습니다.하나의 기능만 다시 포맷해야 하는 경우 기능 맨 위로 이동하여 입력하면 해당 기능만 다시 포맷됩니다.

내가 가진 애스티일의 선택지는-T4pb그냥 제 취향일 뿐이에요.해당 문서를 살펴보고 원하는 코드 형식을 지정하도록 옵션을 변경할 수 있습니다.

여기 데모가 있습니다.성전:

int main(){if(x<2){x=3;}}

float test()
{
if(x<2)
x=3;
}

애프터 애스타일(gggqG):

int main()
{
    if (x < 2)
    {
        x = 3;
    }
}

float test()
{
    if (x < 2)
        x = 3;
}

도움이 됐으면 좋겠다.

나는 그것을 발견한다.clang-format잘 동작합니다.

clang 매뉴얼에는 몇 가지 키바인딩 예가 있습니다.

사용하는 것이 좋습니다.equalprgvim에 바인딩되어 있습니다.이 기능을 통해clang-format와 함께G=gg또는 그 외의=들여쓰기 옵션

다음 파일을 .vimrc 파일에 저장하기만 하면 됩니다.

autocmd FileType c,cpp setlocal equalprg=clang-format

좋아해요indent위에서 설명한 바와 같이 대부분의 경우 작업 중인 파일의 일부만 포맷하고 싶습니다.부터indentstdin에서 코드를 가져올 수 있습니다. 정말 간단합니다.

  1. 포맷할 코드 블록 등을 선택합니다.
  2. " " 라고 합니다.:!indent.

astyle취득하기 트릭을 할 수 있습니다.stdin은 같은 트릭을 합니다.

이미 언급되어 있습니다.gg=G코드를 아름답게 하려면 , intend등의 외부 애플리케이션을 사용할 필요가 있습니다.부터%모드의 이은 다음과같이 할 수 .이 파일은 다음과 같이 사용할 수 있습니다.

:!indent %

은, 부터 틀리지 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 라고 치면 됩니다.:set paste. 붙이면 붙을있어요.:set nopaste와 같은 이 다시 는 'beautify', 'beautify', 'beautify', 'beautify', 'beautify', 'beautify', 'beatify', 'be'와 같은 을 확인합니다.

플러그인 vim-autoformat을 사용하면 https://github.com/vim-autoformat/vim-autoformat 명령 하나로 버퍼(또는 버퍼 선택 항목)를 포맷할 수 있습니다.이를 위해 vim의 들여쓰기 기능으로 대체되는 외부 형식 프로그램을 사용합니다.

이라는 입니다.indent 수 요.apt-get install indent하고 나서 을 실행합니다indent my_program.c.

다음 $indent - kr - i8 *.c를 사용해 보십시오.

도움이 되었으면 좋겠네요!

언급URL : https://stackoverflow.com/questions/2355834/how-can-i-autoformat-indent-c-code-in-vim

반응형