tmp.txt
파일 내용을 고려하십시오 .
x
abcd
VIM에서 열고 해당 c
문자로 커서를 이동하고 싶습니다. 그래서 다음 매개변수를 사용하여 VIM을 실행합니다.
$ vim -c "/c" tmp.txt
그러나 커서는 에 설정됩니다 a
. VIM이 찾을 수 있는 것처럼 보이지만 c
커서를 줄의 시작 부분에 놓습니다. /c
파일이 열려 있는 동안 VIM 일반 모드로 실행하면 왜 다르게 작동하나요?
답변1
-s
(스크립트) 옵션을 사용하여 첫 번째 일치 항목에 커서를 놓을 수 있습니다. ~에 따르면vim 매뉴얼:
-s
{스크립트}
스크립트 파일{스크립트}읽었다. 파일의 문자는 사용자가 입력한 것처럼 해석됩니다. " 명령을 사용하여 동일한 작업을 수행할 수도 있습니다.:source!
{스크립트}". 편집기가 종료되기 전에 파일 끝에 도달하면 키보드에서 더 많은 문자를 읽습니다.
bash
키 입력 또는 프로세스 교체 (사용하는 경우)와 함께 임시 파일을 사용할 수 있습니다 . 예를 들어:
#!/bin/bash
vim -s <(printf '/c\n') tmp.txt
이 방법은 단일 문자보다 더 복잡한 검색에 적합합니다.
답변2
첫 시도
+/
맨 페이지에 다음과 같이 설명되어 있는 명령 옵션 사용을 고려했습니다 .
+/{pat}
– 첫 번째 파일의 경우 커서는 첫 번째 항목에 위치합니다{pat}
.
그러나 매뉴얼 페이지의 설명은 오해의 소지가 있습니다. 즉, ex
줄 기반 명령을 사용할 때 검색이 작동하는 방식과 유사하게 커서가 실제로 검색 패턴을 포함하는 첫 번째 줄의 첫 번째 문자에 배치됩니다.
업데이트: Vim 8.1부터 이 옵션의 실제 동작을 반영하도록 매뉴얼 페이지가 업데이트되었습니다.
첫 번째 파일의 경우 커서는 해당 줄의 첫 번째 항목에 위치합니다.
{pat}
작업 솔루션
더 나은 해결책은 (명령 에 개행 문자를 전달하는 데 필요한 ) -c
옵션을 사용하여 Vim을 일반 모드에서 연 것처럼 검색을 수행하는 것입니다.:execute
\n
:normal
일반 솔루션:
vim -c 'execute "normal /pattern\n"' filename
위 예에 대한 해결책:
vim -c 'exe "norm /c\n"' tmp.txt