항상 사용하는 일련의 VIM 명령을 어떻게 자동화합니까?


1

HTML을 얻기 위해 Pandoc 을 통해 Markdown으로 작성된 일부 텍스트 파일을 실행하고 있지만 태그에서 이상한 줄 바꿈과 공백으로 태그를 이상하게 렌더링하므로 VIM에서 몇 가지 sed 명령을 실행했습니다.

Vimscripts 또는 매크로를 봐야합니까? 또는 쉘 스크립트 (VIM 명령을 쉘 Pandoc 명령과 결합하려는 경우)?

Windows 7에서 gVIM을 실행하고 있으며 일반 Windows cmd 쉘을 통해 Pandoc을 실행하고 있지만 일반적으로 VIM 내부에서 수행합니다.


sed를 사용하여 sed 명령을 실행하지 않는 이유는 무엇입니까?
— Ignacio Vazquez-Abrams

그게 내가하고있는 일이지만, 몇 가지를 실행해야하며 파일을 변환 할 때마다해야합니다. VIM 내에서 변환 + 여러 sed 명령을 한 번에 모두 자동화하고 싶습니다.
— Joe

답변:


1

대부분의 파일 처리 및 의사 결정이 수행되는 위치와 Vim 외부에서 사용할 수있는 스크립팅 기능에 달려 있다고 생각합니다. 당신이하고있는 대부분의 처리는 아마도 파이프 라인에서 일련의 프로그램을 실행하는 것처럼 보이기 때문에 모든 것을 쉘 스크립트 또는 배치 파일에 넣고 Vim에서 시작하는 경향이 있습니다. (당신은 sed를 사용한다고 썼다. 유닉스 쉘에 접근 할 수 있는가?) 유닉스 쉘에 접근 할 수없고 배치 파일 명령 세트에 의해 제한을받는다면 모든 명령을 넣을 수있다 Vim 함수로. 명령을 Vim 함수에 넣으면 Vim 명령이나 매핑에 적합한 모든 것을 인용하는 것보다 유연성과 프로그래밍이 조금 더 쉽습니다.

이처럼 쉘 명령을 함수 안에 넣을 수 있습니다

function Foo()
    !echo "hello"
endfunction

아니면 이거:

function Bar()
    call system('echo "hello"')
endfunction

보다

:help usr_41.txt

특히

:help 41.6
:help 41.7

만큼 잘

:help system()

이것에 대한 자세한 내용. 명령 및 매핑에 대한 자세한 내용은

:help usr_40.txt

다음과 같이 함수를 호출하는 명령을 작성할 수 있습니다.

:command Foo call Foo()

당신은 당신의 기능을 실행할 수 있도록

:Foo

0

ed 스크립트하기가 매우 쉽습니다.

printf "%s\n" "%s/$/...end/" "g/delete.this.line/d" w q | ed filename
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.