의문
대량의 html 파일을 정렬하고 ftp 사이트에 대한 링크를 로컬 링크로 대체하려고합니다. vim을 사용하고 있으며 다음과 %s/find/replace/g
같은 문자열과 일치하는 패턴을 찾으려고합니다.
href="ftp://some/directory/to/a/random.pdf"
그리고 그것을 대체하십시오
href="local/directory/random.pdf"
파일 이름 자체를 제외한 모든 것을 대체합니다. 단일 html 파일에는 여러 개의 ftp 디렉토리가 있으므로 패턴이 모든 유형의 ftp 링크와 일치 할 수 있어야합니다 . 이 모든 ftp 파일은 동일한 로컬 디렉토리로 이동합니다. 대부분의 파일은 pdf 파일이지만 일부는 ptt 및 기타 임의 파일입니다.
Vim의 패턴은 이런 식으로 일치 할 수 있습니까? 그렇다면 패턴은 어떻게 생겼습니까?
대답
@akira 는 그의 대답에 제공된 정규식으로 훌륭한 일을했습니다. 나는 이것을 재사용 가능한 함수에 넣는 방법을 찾기 위해 스스로 나갔다. 이것은 내가 생각해 낸 것이다.
(vimrc 내부에서) 일치하는 문자열을 대체하기 위해 문자열을 전달할 수있는 함수를 정의하십시오.
function SwitchFtp(local)
execute ':%s,href="ftp://.*/\(.\+\)",href="'.a:local.'\1",g'
endfunction
(선택 사항) 이 기능을 명령에 할당하여 사용할 필요가 없습니다.call
command -nargs=1 SwitchFtp call SwitchFtp(<f-args>)
이것은 다음과 같이 호출됩니다
:SwitchFtp local/directory/
그래서 " 'ftp : //'에서 마지막 '/'까지 모든 것을 대체 하시겠습니까?"
—
akira
가능하다면 파일 이름 자체와 일치하지 않습니다.
—
webdesserts