저는 Linux로 전환하고 있으며 특정 결과를 얻으려면 여러 차례의 교체 시퀀스가 필요했기 때문에 스크립팅된 검색 및 교체를 수행할 수 있는 NoteTab Pro를 사용했습니다. 이 시퀀스를 파일이나 매크로에 넣어서 스크립트를 개선하면서 여러 번 적용하거나 여러 파일에 적용하고 싶습니다.
VIM이 이를 지원하나요?
시도해 보는 것은 어떨까요? 글쎄요, 뭔가를 설치하기 전에 조사를 좀 해보겠습니다. :)
답변1
Vim보다 스크립팅에 더 적합한 편집기는 거의 없으므로 대답은 다음과 같습니다.예.
몇 가지 가능한 접근 방식이 있습니다.
- @Angelo가 이미 답변했듯이 Vim 명령(정확하게 말하면 Ex 명령, 즉 Vim에서
:
입력하고 끝나는 모든 명령<Enter>
) 을scriptname.vim
파일에 넣은 다음:source path/to/scriptname.vim
로드하고 실행할 수 있습니다. 여기서 이점은 스크립트를 열어두고 편집하고 저장한 다음 즉시 다시 실행할 수 있다는 것입니다. 반면에 통화는 짧지도 추악하지도 않으며 확장도 잘 되지 않습니다. (:source
다른 스크립트에서 하나의 스크립트를 가져올 수 있지만 정말 보기 흉할 것입니다.) - 대안으로, 외부 파일을 건너뛰고 명령을 레지스터(
:help quote_alpha
). 레지스터를 임시 버퍼에 붙여넣고 편집한 다음바보(복사) 레지스터를 다시 실행하고 실행합니다.:@
. 명명된 레지스터는 일반적으로 세션 간에 자동으로 유지되지만.vimrc
매크로가 덮어쓰이는 것을 방지하기 위해 이를 (아래 참조)에 넣을 수도 있습니다 . - 가장 일반적인 방법은 새로운 사용자 정의를 만드는 것입니다.매핑또는주문하다.매핑짧은 키 입력으로 호출되며 Vim의 모드 편집과 일치합니다(따라서 동일한 키가 모드에 따라 다른 작업을 수행할 수 있음). 자주 수행되는 작업에 사용됩니다.주문하다Ex 명령이라 입력하는데 시간이 오래 걸리지만 Vim의 명령줄에서 할 수 있습니다. 바라보다
:help usr_40.txt
매핑 및 명령을 작성하는 방법에 대한 자세한 지침입니다. 일반적으로 중앙 구성 파일에 넣습니다.~/.vimrc
, Vim을 시작한 후 즉시 사용할 수 있습니다. 이전 방법에 비해 매핑과 명령은 Vim에 완벽하게 들어맞고 쉽게 불러올 수 있으므로 앞으로 계속해서 필요할 작업에 적합합니다. 단점은 편집하고 다시 로드하는 것이 더 복잡하다는 것입니다(Vim을 다시 시작하는 데 시간이 걸리고 현재 세션으로 다시 로드하는 데 약간의 노력이 필요함). - 확장 기능이 일반적으로 유용하다면 이를 플러그인으로 전환할 수 있습니다(
: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을 정리하려면