VIM: 스크립트 검색 및 바꾸기?

VIM: 스크립트 검색 및 바꾸기?

저는 Linux로 전환하고 있으며 특정 결과를 얻으려면 여러 차례의 교체 시퀀스가 ​​필요했기 때문에 스크립팅된 검색 및 교체를 수행할 수 있는 NoteTab Pro를 사용했습니다. 이 시퀀스를 파일이나 매크로에 넣어서 스크립트를 개선하면서 여러 번 적용하거나 여러 파일에 적용하고 싶습니다.

VIM이 이를 지원하나요?

시도해 보는 것은 어떨까요? 글쎄요, 뭔가를 설치하기 전에 조사를 좀 해보겠습니다. :)

답변1

Vim보다 스크립팅에 더 적합한 편집기는 거의 없으므로 대답은 다음과 같습니다..

몇 가지 가능한 접근 방식이 있습니다.

  1. @Angelo가 이미 답변했듯이 Vim 명령(정확하게 말하면 Ex 명령, 즉 Vim에서 :입력하고 끝나는 모든 명령 <Enter>) 을 scriptname.vim파일에 넣은 다음 :source path/to/scriptname.vim로드하고 실행할 수 있습니다. 여기서 이점은 스크립트를 열어두고 편집하고 저장한 다음 즉시 다시 실행할 수 있다는 것입니다. 반면에 통화는 짧지도 추악하지도 않으며 확장도 잘 되지 않습니다. ( :source다른 스크립트에서 하나의 스크립트를 가져올 수 있지만 정말 보기 흉할 것입니다.)
  2. 대안으로, 외부 파일을 건너뛰고 명령을 레지스터(:help quote_alpha). 레지스터를 임시 버퍼에 붙여넣고 편집한 다음바보(복사) 레지스터를 다시 실행하고 실행합니다.:@. 명명된 레지스터는 일반적으로 세션 간에 자동으로 유지되지만 .vimrc매크로가 덮어쓰이는 것을 방지하기 위해 이를 (아래 참조)에 넣을 수도 있습니다 .
  3. 가장 일반적인 방법은 새로운 사용자 정의를 만드는 것입니다.매핑또는주문하다.매핑짧은 키 입력으로 호출되며 Vim의 모드 편집과 일치합니다(따라서 동일한 키가 모드에 따라 다른 작업을 수행할 수 있음). 자주 수행되는 작업에 사용됩니다.주문하다Ex 명령이라 입력하는데 시간이 오래 걸리지만 Vim의 명령줄에서 할 수 있습니다. 바라보다:help usr_40.txt매핑 및 명령을 작성하는 방법에 대한 자세한 지침입니다. 일반적으로 중앙 구성 파일에 넣습니다.~/.vimrc, Vim을 시작한 후 즉시 사용할 수 있습니다. 이전 방법에 비해 매핑과 명령은 Vim에 완벽하게 들어맞고 쉽게 불러올 수 있으므로 앞으로 계속해서 필요할 작업에 적합합니다. 단점은 편집하고 다시 로드하는 것이 더 복잡하다는 것입니다(Vim을 다시 시작하는 데 시간이 걸리고 현재 세션으로 다시 로드하는 데 약간의 노력이 필요함).
  4. 확장 기능이 일반적으로 유용하다면 이를 플러그인으로 전환할 수 있습니다(:help write-plugin), 이는 Vim 설치 간에 쉽게 공유되고 게시될 수 있습니다(GitHub 또는vim.org). 사용할 수 있는 플러그인이 너무 많아서 새로 만들기 전에 검색해보세요!

답변2

물론 외부 파일을 통해 검색 및 바꾸기를 포함한 모든 vim 명령을 실행하고 다음을 사용하여 로드할 수 있습니다.

:source ~/path/to/file

문서:

                                        *:so* *:source* *load-vim-script*
:so[urce] {file}        Read Ex commands from {file}.  These are commands that
                        start with a ":".
                        Triggers the |SourcePre| autocommand.

답변3

vim 스크립트를 작성하여 외부에서 vim을 사용할 수도 있습니다.

예:

$ cat trim-spaces

#!/usr/bin/vim -s
:%s/[ \t\r]*$//
:%s/[ \t\r\n]*\%$/\n/
G
:r ! echo "\#last changed by $USER in :" `date`
:x
  • line2: 줄 끝의 공백을 제거합니다.
  • line3: 파일 끝의 빈 줄을 삭제합니다.
  • line4,5: "마지막 변경" 줄 추가

다음으로 우리는 할 수 있습니다

$ trim-spaces file1

file1을 정리하려면

관련 정보