항상 사용하는 일련의 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.