나는 사용할 수있다
:5,12s/foo/bar/g
5 번과 12 번 줄 사이 에서 검색 foo
하고 바꾸 bar
려면 어떻게해야합니까?
답변
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
그리고 당신은 대체 할 one
가 eno
거기 라인에 enil
대신 line
:
:g/enil/s/one/eno/
답변
ed
vi 및 vim과 유사한 명령을 사용 하는 행 지향 텍스트 편집기를 사용할 수 있습니다 . 아마도 vi와 vim보다 앞선 것입니다.
스크립트 (EndCommand 마커까지 입력을 처리하는 here 문서 사용)에서는 다음과 같습니다.
ed file <<EndCommands
5
s/foo/bar/g
7
s/foo/bar/g
wq
EndCommands
분명히 ed 명령은 명령 줄에서도 사용할 수 있습니다.