2013-12-11 3 views
2

Ex one-liner에서 정말 간단한 것을하려고합니다 : PHP echo 문장으로 HTML 줄 바꿈.Vim : 전체 라인을 무언가로 대체하십시오.

<p>Greetings</p> 
*run command* 
echo "<p>Greetings</p>"; 

현재 줄에서만 작업 할 수있는 자리 표시자가 있으면 매우 간단해야합니다.

가 나는

:s/\v(.*)/echo "\1";/g 

그러나,이에 대한 빔 검색을하고 그 결과와 일치하는 모든 것을 강조이 명령을 사용하여 작업을했다. * (= 무엇이든). 따라서 전체 파일이 강조 표시되고 마지막 검색을 수동으로 지우거나 지우려면 일부 쓰레기를 검색해야합니다.

요약 : Ex 명령 중에 현재 행을 참조 할 수있는 기존 자리 표시 자나 방법이 있습니까?

+1

이후 검색 패턴을 취소 사용 : nohlrsearch – bjhaid

답변

4

: 뭔가를 시도 여전히 마지막 검색 패턴을 소지품합니다

:s/\v(.*)/echo "\1";/g | noh 

을; 전체 중화, 사용 :

:s/\v(.*)/echo "\1";/g | call histdel('search', -1) | let @/ = histget('search', -1) | nohlsearch 

다른 방법으로는 매칭을 피하기 위해 낮은 수준의 기능으로 전환 할 수 있습니다

:call setline('.', 'echo "' . getline('.') . '";') 

PS : 당신은 당신의 검색 패턴을 단순화 할 수 있습니다; 명시 적으로 무언가를 포착 할 필요가 없습니다. 그것을 단순화하는 방법에 대한 다른 많은 해답을 살펴보십시오.

+0

내가 여기에 모든 솔루션을 시도하고 당신은 성공적으로 강조 웁니다 유일한 사람입니다. 저수준 기능의 일부를 살펴 보는 것도 매우 흥미 롭습니다! 감사합니다 :) – krystah

+1

고마워요! 나는 당신의 질문이 얼마나 많은 대답을 끌어 왔는지, 그리고 그들 대부분이 그 요점을 놓치는 방법에 놀랐다. 다음 번에 더 잘 문제를 표현해보십시오. (이것이 어렵다는 것을 알고 있습니다.) 그것은 완전히 분명하지 않은 것 같습니다 (나는 두 번 읽어야 만했습니다). –

+0

나는 이것을 염두에 둘 것이다! 고마워요. ^^ – krystah

0

(.*)은 줄 바꿈을 포함하여 모든 것을 소비하고있는 것처럼 보입니다. 당신은 :nohlsearch로 강조 표시를 중지 할 수 있습니다

:s/\v(.*)\n/echo "\1";/g 
+1

를 내가 여기에 글로벌 플래그를 사용하는 점을 볼 수 없습니다) –

3

이 할 것 :

:s/.*/echo "&";/ 
+0

대체 그룹을 만드는 것보다 조금 더 짧은 방법이 아닙니까? 그러면 버퍼의 모든 텍스트가 나중에 일치하지 않도록 어떻게 방지 할 수 있습니까? –

+0

네, & \ 0에 대한 멋진 속기였습니다.) === – krystah

+0

@IngoKarkat 오, 나는'noh' 부분을 놓쳤습니다 ... – Kent

0

예, 당신은 점으로 현재 행을 참조 할 수 있습니다. 예를 들어 ".s/a/b /"는 현행 줄만 바꾸거나 "3, .s/a/b /"는 세 번째 줄과 현재 줄 사이를 모든 줄로 대체합니다. "s"앞에 줄 범위를 두지 않으면 현재 줄 (".") 만 자동으로 간주됩니다.

하지만 문제는 아닙니다. Vim은 다른 라인을 바꾸지 않습니다. 그렇죠? 따라서 대용 물은 현재 행과 같이 제한됩니다. 문제는 Vim이 패턴을 검색 한 후에 전체 파일에서이 패턴을 강조한다는 것입니다. 그리고 당신이 제안한 것처럼 쓰레기 수색을 제외하고는 할 수있는 일이별로 없습니다. 이 작업

0

내가 사용하는 것입니다 ...

:s!.*!echo "&";! 

..., 그것은 좋은 짧은 한 다음 이후 ...

전체 파일은 이렇게 강조하고 내가 가진 수동으로 마지막 검색을 지우거나 지우기 위해 쓰레기를 검색하십시오.

nnoremap <Leader>/ :<C-U>nohlsearch<CR> 

이 날/ \ 을 입력하여 강조 표시를 취소 할 수 있습니다 :

난 그냥 그런 경우를 위해 my .vimrc에서 다음 매핑을 가지고있다.

은 참조 :

0

당신이 거기에 뭔가가있을 것 vim-surround의 소스에서 보면 내가 내기 할 것이다. 아니면 그냥 그 플러그인을 설치하십시오!