중복 가능성:
Vim:s는 한 줄에서 처음 N < g 항목을 대체합니다.
n
vi에서 "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
, y
n 번 클릭한 다음 q
, :%s/hello/second/gc
, y
m 번 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