이 파일의 ‘x’를 현재 줄 번호로 바꾸고 싶습니다. 즉, 변화
x
x
x
에
1
2
3
지금은 Perl 원 라이너를 사용합니다.
perl -pi -e '$x=$.; s/x/$x/' myfile.txt
UltraEdit은 수직 선택 및 교체로 할 수 있다고 생각합니다. 이것은 vim에서 할 수 있습니까? (이 예제에서는 ‘x’가 한 줄에 있다고 가정하지만 실제 파일의 줄은 훨씬 복잡합니다.)
답변
예, vim이 할 수 있습니다! 에 대한 전역 검색을 수행 x
하고로 바꿉니다 \=printf("%d", line('.')
. 예를 들면 다음과 같습니다.
:%s/x/\=printf("%d", line('.'))
x
필요한 경우 다른 검색으로 변경할 수도 있습니다 .
설명:
이것은 모든 발생 x
(또는 검색 한 것)을 평가 레지스터로 대체합니다 \=
. 이 레지스터는 vimscript 코드를 평가하고 문자열을 반환합니다. 이 경우 평가되는 코드는 “우리가있는 줄을 10 진수로 인쇄합니다”입니다
답변
수직 선택 및 교체에 대해 언급 했으므로 그렇게 할 수도 있습니다. 사용은 CtrlV당신이 다음 교체하려는 텍스트의 잠금을 선택해야 할 일 c
과 0으로 그것을 대체하기 위해, 0을 입력합니다. 그런 다음 해당 0을 선택하십시오.
그런 다음 g<c-a>
( g+ Ctrla)를 누릅니다 .
단일 열을 교체 한 gv
경우 동일한 영역을 빠르게 다시 선택할 수 있습니다 .