IT TIP

명령 줄에서 Vim 내에서 명령 실행

itqueen 2020. 11. 4. 21:02
반응형

명령 줄에서 Vim 내에서 명령 실행


어쨌든 명령 줄에서 파일에 Vim 명령을 실행할 수 있습니까?

나는 반대가 다음과 같이 사실임을 압니다.

:!python %

하지만 :retabVim에서 파일을 열지 않고 파일을 만들고 싶다면 어떻게해야 합니까? 예를 들면 :

> vim myfile.c
:retab | wq

그러면 myfile.c가 열리고 탭을 공백으로 바꾼 다음 저장하고 닫습니다. 이 시퀀스를 어떻게 든 하나의 명령에 연결하고 싶습니다.

다음과 같습니다.

> vim myfile.c retab | wq

이것은 작동합니다 :

gvim -c "set et|retab|wq" foo.txt

set et(= set expandtab) tab문자가 올바른 공백 수로 대체 되도록합니다 (그렇지 않으면 retab작동하지 않음).

나는 보통 그것을 사용하지 않지만 vim -c ...작동합니다.

편집하다:

위에 제공된 솔루션은 기본 탭 중지 8이 적절하다고 가정합니다. 예를 들어 4의 탭 정지를 사용하려는 경우 명령 시퀀스를 사용합니다 "set ts=4|set et|retab|wq".


몇 가지 옵션이 있습니다.

  • -c "commands": 명령 줄에 입력 한대로 Ex 명령을 재생합니다.
    귀하의 예에서 : vim myfile -c 'retab | wq'. 이것이 Firstrock이 제안한 것입니다.

  • -S "vim source file": 주어진 vim 스크립트
    (예 vim -c "source 'vim source file'": running )를 소싱합니다 .

    다음을 포함하는 파일이있는 경우 script.vim:

    retab
    wq
    

    그런 다음 사용할 수 있습니다 vim myfile.c -s script.vim(확장자는 실제로 중요하지 않습니다)

  • -s "scriptin file": 일반 모드 명령 이 포함되어 있으므로 파일 내용을 재생합니다 script.txt.

    :retab
    ZZ
    

    줄 끝이 단일 ^M문자 로 구성된 경우 (예 :를 사용하여 스크립트를 저장 한 경우 :set fileformat=mac | w) 다음을 실행할 수 있습니다. vim myfile.c -S script.txt( ZZvim을 종료하고 현재 파일을 저장하는 또 다른 방법입니다).
    를 사용하여 이러한 스크립트를 기록 할 수 vim my_file -W script.txt있지만 gvim (GUI)을 사용하면 버그 가 발생합니다.


질문에 대한 직접적인 대답은 아니지만 파일 목록에 대해 탭을 공백으로 바꾸거나 (또는 ​​다른 정규식 검색 / 바꾸기를 수행하려면) 내부 sed 검색 / 바꾸기를 사용할 수 있습니다.

sed -i 's/\t/   /g' foo1.txt foo2.txt

또는

ls *.txt | xargs sed -i 's/\t/   /g'

(이 예에서는 각 탭 문자를 공백 3 개로 바꿉니다.)


참고 : -i플래그는 제자리에서 작동 함을 의미합니다.

로부터 sed매뉴얼 페이지

   -i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if  extension
          supplied)

참고 URL : https://stackoverflow.com/questions/9366243/execute-a-command-within-vim-from-the-command-line

반응형