VIM에서 파일을 열고 커서를 검색 결과로 이동하는 방법

VIM에서 파일을 열고 커서를 검색 결과로 이동하는 방법

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

관련 정보