vi에서 다음 n 단어 검색 및 바꾸기

vi에서 다음 n 단어 검색 및 바꾸기

중복 가능성:
Vim:s는 한 줄에서 처음 N < g 항목을 대체합니다.

nvi에서 "hello"라는 단어의 첫 번째 항목을 검색하고 바꾸고, 다음 m항목은 로 bonjour, 나머지는 모두 로 바꾸려면 어떻게 해야 합니까 namaste?

답변1

n번째 "hello"를 수동으로 찾을 수 있나요? 그렇다면 다음과 같이 n번째 hello를 찾습니다.

:1 (goes to the first line of your file)
n/hello (find the nth hello, where n is the number)

그런 다음 모든 hellos를 다음과 같이 바꾸십시오.

:1,.s/hello/bonjour/g
(move to the next line)
:.,$s/hello/namaste/g

답변2

이것은 기본적으로 내 질문과 동일하게 귀결됩니다(설명에 연결되어 있습니다. 언급했듯이 내 질문은 한 줄을 요구하지만 일반적으로 더 많은 것을 일반화합니다). 가장 간단한 답은 :%s/hello/first/gc, yn 번 클릭한 다음 q, :%s/hello/second/gc, ym 번 q등을 클릭하는 것입니다. 여러 번 필요한 경우 허용되는 답변에 언급된 대로 feedkeys및를 사용하세요.repeat

답변3

fun! FUN(n, m)
    if !exists('g:count')
        let g:count = 0
    endif

    let g:count+=1

    if g:count<=a:n
        return 'hello'
    elseif g:count<=a:n+a:m
        return 'bonjour'
    else
        return 'namaste'
    endif
endfun

:unlet! g:count
:%s/word/\=FUN(2, 3)/g

앞으로

word
word
word
word
word
word
word

뒤쪽에

hello
hello
bonjour
bonjour
bonjour
namaste
namaste

관련 정보