vim: 명령줄의 모든 파일에 대한 구문(파일 형식) 설정

vim: 명령줄의 모든 파일에 대한 구문(파일 형식) 설정

파일을 열고 특정 파일 형식을 강제로 지정하는 도구가 있습니다. 다음 매개변수를 사용하여 vim을 시작합니다.

vim -c 'set filetype=foo' [file1 [file2 [...]]

이는 다음과 같은 경우에 유용합니다.첫 번째 파일, 그러나 예상한 대로 이는 시작 후 파일 형식을 한 번 변경하는 것과 같기 때문에 첫 번째 파일에서만 작동합니다. 명령줄의 각 후속 파일은 vim의 기본/자동 감지 파일 형식을 선택합니다 foo. 대신 다음을 사용하여 이 문제를 해결할 수 있었습니다.

vim -c 'au BufRead * set filetype=foo"'

하지만 이는 무시됩니다.모두이후에 여는 파일을 포함한 파일(예 : gf. foo이름이나 내용으로 파일 유형을 감지하는 간단한 경험적 방법은 없습니다. 이는 상황에 따라 다릅니다(도움이 된다면 일반적으로 디렉토리로 제한되지만 파일에 힌트를 추가할 수는 없습니다).

지정된 파일에 대해서만 기본 파일 형식을 설정하는 방법이 있습니까? 실패하면 한 세션의 동작을 재정의하는 해킹과 같이 상당히 깔끔한 처리 방법(예: 다른 창에서 vim을 정상적으로 사용할 수 있기를 원함)이 있습니까 ftdetect?

답변1

원칙적으로 argdo각 인수에 대해 명령을 실행하는 접근 방식을 사용하는 것이 bufdo유효합니다(여기에서도 작동함). 보너스로, silent귀찮은 "Enter 키를 누르세요" 프롬프트가 표시되지 않도록 미리 설정되어 있습니다.

  • 간결한 버전

    vim +'sil argdo se ft=foo' file1 file2...
    
  • 긴 버전

    vim -c 'silent argdo set filetype=foo' file1 file2...
    

실제로 후속 파일에는 구문 강조가 활성화되지 않습니다(참조:argdo를 사용하여 여러 파일을 열 때 vim에서 구문 강조가 켜지지 않습니다.). 이 문제는 다음을 통해 해결할 수 있습니다.

vim -c 'silent argdo set eventignore-=Syntax | set ft=foo' file1 file2...

그러나채팅으로 신고하세요이 솔루션은 모든 사람에게 적합하지 않습니다. Vim 버전 8.1 p1-2269 및 8.2 p1-2367에서 작동합니다.

관련 정보