내가 할 수있는 :%s/<search_string>/<replace_string>/g
파일을 통해 문자열을 교체하기위한, 또는 :s/<search_string>/<replace_string>/
현재 행에서 대체 할 수 있습니다.
vim에서 선택 줄에서 단어를 선택하고 바꾸려면 어떻게해야합니까?
예 : 라인에서 텍스트를 교체 6-10
, 14-18
하지만에서 11-13
.
내가 할 수있는 :%s/<search_string>/<replace_string>/g
파일을 통해 문자열을 교체하기위한, 또는 :s/<search_string>/<replace_string>/
현재 행에서 대체 할 수 있습니다.
vim에서 선택 줄에서 단어를 선택하고 바꾸려면 어떻게해야합니까?
예 : 라인에서 텍스트를 교체 6-10
, 14-18
하지만에서 11-13
.
답변:
:&&
명령은 같은 플래그 지난 대체를 반복합니다. 추가 범위를 제공하고 원하는만큼 연결할 수 있습니다.
:6,10s/<search_string>/<replace_string>/g | 14,18&&
그래도 많은 범위 가 있다면 루프를 사용하는 것이 좋습니다.
:for range in split('6,10 14,18')| exe range 's/<search_string>/<replace_string>/g' | endfor
:6,10s/<search_string>/<replace_string>/g | :14,18&& | :20,23&& | :28,31&&
또한 작동하며 for
루프를 사용하면 기억하고 실행하기가 더 쉽습니다.
:
당신이 좀 더 키 입력을 저장할 수 있도록 후속 명령에는, BTW, 선택 사항입니다.
:&&
일주일에 수백 건의 키 스트로크를 절약 할 수 있습니다. 감사!
전부 교체:
:%s/foo/bar/g
각 줄에서 'foo'를 찾아서 'bar'로 바꿉니다.
특정 라인의 경우 :
:6,10s/foo/bar/g
6 행에서 10 행까지의 모든 행에 대해 각 'foo'를 'bar'로 변경하십시오.
/
작업에 대한 플래그를 나타내는 위치입니다. 이 명령은 일반적으로 줄 의 첫 번째 일치 항목을 대체합니다 . g
플래그를 사용하면 모든 발생을 대체합니다.
%
것은 작업을 수행합니다! 그렇지 않으면, 그것은 단지 첫 번째 사건 일뿐입니다.
%
=> 모든 줄에서이 명령을 실행하십시오. g
=> 같은 줄에서 여러 번 발생합니다.
참고로, 줄 번호를 입력하지 않고 시각적 모드 중 하나에서 찾거나 바꿀 줄을 강조 표시하십시오.
VISUAL
모드 ( V)VISUAL BLOCK
모드 ( Ctrl+ V)VISUAL LINE
모드 ( Shift+ V, 귀하의 경우 가장 잘 작동합니다)바꿀 줄을 선택했으면 다음 명령을 입력하십시오.
:s/<search_string>/<replace_string>/g
범위 '<,'>
가 자동으로 삽입됩니다.
:'<,'>s/<search_string>/<replace_string>/g
여기서는 '<
단순히 강조 표시된 첫 번째 줄 을 '>
의미하고 마지막 강조 표시된 줄을 의미 합니다 .
참고 행동이 예기치 될 수 있음을 때의 NORMAL
모드 : '<
및 '>
시작과 중 하나를 수행 마지막 하이라이트의 끝 지점 VISUAL
모드. 대신 NORMAL
모드에서 특수 행 번호를 .
사용할 수 있습니다. 이는 단순히 현재 행을 의미 합니다 . 따라서 다음과 같이 현재 줄에서만 찾을 수 있습니다.
:.s/<search_string>/<replace_string>/g
주목해야 할 또 다른 사항은 :
range와 find / replace 명령 사이 에 초를 삽입 해도 아무런 영향을 미치지 않습니다. 즉, 이러한 명령은 여전히 작동합니다.
:'<,'>:s/<search_string>/<replace_string>/g
:.:s/<search_string>/<replace_string>/g
두 개의 찾기 / 바꾸기 시퀀스로 할 수 있습니다
:6,10s/<search_string>/<replace_string>/g
:14,18s/<search_string>/<replace_string>/g
두 번째로 조정해야 할 것은 범위이므로 모두 입력하는 대신 마지막 명령을 기억하고 범위 만 편집합니다.
vim에서 모든 라인에 영향을 줄 혼란 스러우면 아래에서 사용하십시오.
:%s/foo/bar/gc
각 'foo'를 'bar'로 변경하되 먼저 확인을 요청하십시오. 예인 경우 'y'를 누르고 아니오 인 경우 'n'을 누르십시오. 그 후 저장하는 것을 잊지 마세요
:wq
c
범위를 지정하는 것 외에도 실제로 플래그를 사용할 수 있으므로 :6,10s/<search_string>/<replace_string>/c
작동합니다. c
의 약자 confirm
. 나는 c
플래그가 존재한다고 생각하지 않은 단어를 실수로 바꾸는 것을 방지하기 위해 플래그를 자주 사용합니다 .
VI 검색 및 바꾸기 명령 예제
“foo”라는 단어를 찾고“bar”로 바꾸고 싶다고합시다.
첫 번째 히트 [Esc]
키
: (콜론)을 %s/foo/bar/
입력하고 [Enter] 키를 누르십시오
:%s/foo/bar/
:%s/<search_string>/<replace_string>/g
명령은 전체 파일에있는 모든 항목을 대체합니다. 질문에 대한 정확한 대답은 아니지만 그럼에도 불구하고 유용합니다 :)
시각적 선택을 통해 범위를 지정하는 것은 가능하지만 운영자가 선택할 수있는 몇 줄에 걸쳐 매우 간단한 조작이있을 경우 이러한 명령을 연산자로 적용하는 것이 가장 좋습니다.
슬프게도 표준 vim 명령으로는 수행 할 수 없습니다. !를 사용하여 일종의 해결 방법을 수행 할 수 있습니다. (필터) 연산자 및 모든 텍스트 개체. 예를 들어, 작업을 단락에 적용하려면 다음을 수행하십시오.
!ip
"연산자를 적용하십시오! 단락 안에"로 읽어야합니다. 필터 연산자는 명령 모드를 시작하고 문자 범위 "!"다음에 줄 범위를 자동으로 삽입합니다. 바로 후에 삭제할 수 있습니다. 이것을 적용하면 다음 단락에 적용됩니다.
1
2 Repellendus qui velit vel ullam!
3 ipsam sint modi! velit ipsam sint
4 modi! Debitis dolorum distinctio
5 mollitia vel ullam! Repellendus qui
6 Debitis dolorum distinctio mollitia
7 vel ullam! ipsam
8
9 More text around here
"! ap"을 누른 후의 결과는 다음과 같습니다.
:.,.+5
'.'로 (점)은 현재 라인을 의미하며, 현재 라인과 5 라인 사이의 범위는 작업에 사용됩니다. 이제 이전과 같은 방법으로 대체 명령을 추가 할 수 있습니다.
나쁜 부분은 후자를 적용 할 텍스트를 선택하는 것이 쉽지 않다는 것입니다. 좋은 부분은 크기가 다른 다른 유사한 텍스트 범위 (이 경우 단락)에 대한 범위 삽입을 반복 할 수 있다는 것입니다. 즉, 나중에 더 큰 단락 '.'을 선택하려면 바로 그 것입니다.
또한 시맨틱 텍스트 객체를 사용하여 작동 범위를 선택하려는 아이디어가 마음에 들면 동일한 방법으로 더 쉬운 방식으로 플러그인 EXtend.vim 을 확인할 수 있습니다.
이 질문에 대답하려면 :
:40,50s/foo/bar/g
이 줄에서 40 번째 줄과 50 번째 줄 (포함) 사이에서 foo를 bar로 바꾸십시오.이 명령을 실행할 때 현재 어떤 줄이든 가능합니다.
:50,40s/foo/bar/g
또한 vim은 comfirm을 요청하고 첫 번째 명령을 입력 한 것처럼 교체를 수행합니다.
:,50s/foo/bar/g
이 줄에서 현재 줄과 50 번째 줄 사이의 foo를 bar로 바꿉니다. (50 라인 vim 이후에 라인에 있다면 다시 확인을 요청합니다)
vim과 Eclipse의 vrapper 플러그인의 차이점을 명확히하려면 :
varpper에서
:,50s/foo/bar/g
명령이 작동하지 않습니다.
:50,40s/foo/bar/g
확인을 요구하지 않고 작동합니다.
Vrapper 버전 0.74.0 이하의 경우.
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
/sys/sim/source/gm/kg/jl/ls/owow/lsal
위의 정보를 다른 정보로 바꾸고 싶다고 가정하십시오.
COMMAND(:%s/\/sys\/sim\/source\/gm\/kg\/jl\/ls\/owow\/lsal/sys.pkg.mpu.umc.kdk./g)
이것에서 위의 내용은 ( sys.pkg.mpu.umc.kdk.
) 로 대체됩니다 .
%s
입력을 수정하는 방법을 알고 있지만 "반 세계적으로"하는 방법을 알고 싶어합니다 (즉, 그의 사양은 6-10 행과 14-18 행이지만 11- 행에는 표시되지 않습니다) 13).
/
, 예를 들어 !
, @
, _
::%s_/sys/sim/source/gm/kg/jl/ls/owow/lsal_sys.pkg.mpu.umc.kdk_g