Nice programing

특정 줄의 vim에서 검색 및 바꾸기

nicepro 2020. 10. 14. 20:59
반응형

특정 줄의 vim에서 검색 및 바꾸기


나는 사용할 수있다

:5,12s/foo/bar/g

검색하기 foo에 의해 교체 bar만 라인 (5)와 (사이의 라인이 아닌) 12에서 내가 할 수있는 방법 라인 (5)과 12 사이?


Vim에는 특정 행, 열 등에서 일치하는 특수 정규식 원자가 있습니다. 일치를 제한하기 위해 (가능하면 범위에 추가하여) 사용할 수 있습니다.

:5,12s/\(\%5l\|\%12l\)foo/bar/g

보다 :help /\%l


5 행에서 대체를 수행하고 12 행에서 최소한의 노력으로 반복 할 수 있습니다.

:5s/foo/bar
:12&

Ingo가 지적했듯이, :&깃발을 잊어 버립니다. 을 사용 /g하고 있으므로 올바른 명령은 다음과 :&&같습니다.

:5s/foo/bar/g
:12&&

보고 :help :&친구.


항상 c끝에 a 추가 할 수 있습니다 . 이것은 매 경기마다 확인을 요청합니다.

:5,12s/foo/bar/gc

흥미로운 질문입니다. 범위 선택 만 있고 여러 줄 선택이없는 것 같습니다.

http://vim.wikia.com/wiki/Ranges

그러나 5 번과 12 번 줄에 특별한 내용이있는 경우 :g연산자를 사용할 수 있습니다 . 파일이 다음과 같은 경우 (참조 용 번호) :

 1     line one
 2     line one
 3     line one
 4     line one
 5     enil one
 6     line one
 7     line one
 8     line one
 9     line one
10     line one
11     line one
12     enil one

그리고 당신은 대체 할 oneeno거기 라인에 enil대신 line:

:g/enil/s/one/eno/

edvi 및 vim과 유사한 명령을 사용 하는 행 지향 텍스트 편집기를 사용할 수 있습니다 . 아마도 vi와 vim보다 앞선 것입니다.

스크립트 (EndCommand 마커까지 입력을 처리하는 here 문서 사용)에서는 다음과 같습니다.

ed file <<EndCommands
    5
    s/foo/bar/g
    7
    s/foo/bar/g
    wq
EndCommands

분명히 ed 명령은 명령 줄에서도 사용할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/17319557/search-and-replace-in-vim-in-specific-lines

반응형