vi 편집기에서 여러 줄의 단어를 바꾸는 방법은 무엇입니까?

vi 편집기에서 여러 줄의 단어를 바꾸는 방법은 무엇입니까?

예를 들어 vi 편집기에서 "today"라는 단어가 8줄 포함된 파일을 생성했는데, 명령 하나로 4줄을 "yesterday"라는 단어로 바꾸는 방법을 알고 싶습니다.

답변1

파일 내용에 대해 작동하는 대부분의 ex 명령(즉, :(콜론)과 명령 이름을 눌러 호출되는 명령)은 명령 앞에 범위를 지정할 수 있습니다. 이 범위는 명령의 영향을 받는 행을 지정합니다. 범위의 일반적인 형태는 쉼표로 구분된 두 개의 숫자이며, 명령은 첫 번째 숫자부터 두 번째 숫자(포함)까지의 모든 행에서 작동합니다. 예를 들어

1,4s/today/yesterday/g

파일의 처음 네 줄에서 by를 모두 바꿉니다 today.yesterday

숫자 앞에 기호를 추가하여 현재 줄을 기준으로 만들 수 있습니다. 예를 들어

-1,+1s/today/yesterday/g

이전 줄, 현재 줄, 다음 줄에 대해 교체를 수행합니다. 쉼표가 포함되어 있지만 숫자 중 하나가 생략된 경우 현재 줄을 나타냅니다.

,+1s/today/yesterday/g

현재 줄과 다음 줄을 교체합니다. $숫자 대신 숫자를 사용하여 파일의 마지막 줄을 나타낼 수도 있습니다 . 쉼표를 생략하고 숫자만 지정하면 명령은 이 줄에서만 작동합니다.

+1s/today/yesterday/g

다음 줄에서만 교체를 수행하십시오.

답변2

다음 명령을 사용할 수 있습니다.

:n,m s/today/yesterday/

즉, n행에서 m행까지 "today"라는 단어를 "yesterday"로 바꿉니다.

답변3

이 시도:

vi 편집기의 명령 모드로 들어가서 다음 명령을 시도해 보십시오.

:%s/today/yesterday/g

g - 오늘을 전체적으로 어제로 바꿉니다.

관련 정보