2017-11-23 5 views
1

ex 명령에 대한 검색 패턴을 연습하고 매크로를 사용하여 매크로를 사용하여 작업을 수행하려고하는데 확실하지 않습니다. 가능합니다.Vim : 검색 패턴의 다음/이전 행과 일치

public myFunc(): any { 
    return {}; 
} 

내가 (기능 후 커서)이 명령을 꺼낼하기 위해 노력하고있어 :

:?\vpublic\s*\w+\s*\(.*\)\s*:\s*\w+\s*\{?;/}$/y

이를

I는 다음과 같다 몇 가지 코드를 예상대로 작동하고 내가 위에서 언급 한 기능과 일치합니다.

내가하고 싶지만 길을 찾지 못한 것은 첫 번째 줄과 마지막 줄을 무시하는 것입니다. (그냥 함수의 내용을 원합니다). 나는 그것이 어떻게 든 (어쩌면 +/- 검색 상쇄?) 할 수 있다고 의심하지만, 나는 아직 행운을 얻지 못했다.

누구든지이 작업을 수행하는 방법을 알고 있습니까? 감사!

답변

2

예, 적절한 오프셋 (:help search-offset)을 추가하는 것만 큼 간단합니다. 기본적으로 두 개의 검색 범위 (하나는 현재 위치에서 위쪽으로, 하나는 아래쪽에서)로 정의합니다. ?...?;/.../. 타겟을 제외하려면 1을 더하거나 뺍니다. 이것은 검색에 오프셋을 추가하여 이루어집니다 : ?...?+1;/.../-1. 귀하의 예제에 적용 : 사용 아래처럼

:?\vpublic\s*\w+\s*\(.*\)\s*:\s*\w+\s*\{?+1;/}$/-1y 
+0

이 내가 생각했던 정확히하지만 난 할 수 없었다 구문을 올바르게 얻으십시오, 감사합니다! – uorbe001

0

은 캐리지 리턴 (입력)를 삽입하려면 Ctrl-v Enter

:normal ?public^Mjwyiw 

설명

:normal ............ in normal mode 
?public ............. search backward for public 
^M .................. Enter 
j ................... move to the line below 
yiw ................. yank inner word