2010-03-03 3 views
1

발견 :로 시작하는 모든 행 위빔 : 추가 붙여 넣기 버퍼마다 특정 텍스트를 나는 몇 줄 붙여하려고 빔에서

PROC SQL; 
    CONNECT TO DB2(DSN=test); 
    CREATE TABLE test AS SELECT * 
    FROM CONNECTION TO DB2 (

을 아래 및

); 
quit; 

"을 선택" "FOR FETCH ONLY"로 끝나는 모든 행

붙여 넣기 버퍼를 사용할 방법이 있습니까?

처럼
%s/^select/(a!)\rselect/ 

는 그래서 내가 명령을 입력하면 것을 그것은 유사한 붙여 넣기 버퍼를 엽니 다! 명령을 사용하고이를 대용품으로 사용합니까?

덕분에, 댄 등록 A의 PROC SQL 블록 및 레지스터 B의 quit; 블록이있는 경우

답변

3

, 당신은 다음을 수행 간단하게 할 수 있습니다.

:g/^select/put! a 
:g/FOR FETCH ONLY$/put b 

:g은 주어진 패턴과 일치하는 모든 행을 발견 한 후 그 라인에 지정된 전직 명령을 실행합니다. 이 경우 :put을 사용하여 지정된 registers의 내용을 붙여 넣으 려합니다.

1

줄 위 또는 아래에 텍스트 텍스트를 삽입하는 문제에 대해서는 jamessan의 :g/.../put a 솔루션을 사용합니다. 그러나 교체의 일부로 레지스터를 사용하는 것에 대한 질문에 대답하려면 \ =로 시작하여 교체를위한 표현식을 사용할 수 있습니다. 그래서이 또한 가정, 당신이 원하는 일을해야한다 A의 "PROC SQL을 ..."텍스트가 레지스터 : 표현의 @a에

:%s/^select/\[email protected]"\n".submatch(0)/ 

것은 등록의 내용을 평가하고, submatch (0) 정규식에 의해 매치되는 문자열을 평가하는 함수이다.

대체 전체를 표현식으로 처리하므로 일반 텍스트를 포함하려면 해당 문자열을 인용하고 .으로 문자열을 연결해야합니다.

+0

원래 게시물에서 언급 한'a! '는 a : 레지스터가 아니라': append!'명령이라고 생각합니다. – jamessan