2014-09-07 3 views
0

이것은 모든 고급 Vim 프로그래머에게는 쉬운 일이지만, 지금은 몇 시간 동안 솔루션을 찾으려고 노력하고 있습니다. 여기파일에서 pwd를 USER로 대체하십시오.

/Users/name/Project/Task1/folder1 : INFO : Random Info message 

/Users/name/Project/Task1/folder1pwd 즉 현재 작업 디렉토리입니다 : 내 결과 파일에서

는 같은 특정 라인이있다.

파일에서 위의 내 pwd가 모두 'USER'으로 바 꾸길 원합니다. 어떻게해야합니까? 동적하기 위해 pwd을 갖고 싶어 당신이 이렇게 여러 현재 작업 디렉토리를 대체 (그리고해야하는 경우

:%s/\/Users\/name\/Project\/Task1\/folder1/USER/ 

:

답변

1

내가 제대로 이해하면 당신은 단순히 search and replace functionality를 사용하고이 같은 / 문자를 벗어날 수 있습니다

sed "s~$(pwd)~USER~" < file 

참고 ~이 명령에 대한 구분 대신 01로 사용되는 것을 :)는 sed 같은 것을 사용하는 것이 더 쉬울 것입니다, 이렇게하면 경로에서 /을 탈출 할 필요가 없습니다.

+0

감사합니다. 기본 검색을 알고 교체합니다. 검색 및 바꾸기 명령에서 $ pwd 출력을 사용하는 방법이 있는지 확인해야했습니다. –

+0

언급 한'see' 명령을 시도했지만,'pwd' 디렉토리의 이름에 공백이 있기 때문에 작동하지 않습니다. 'sed : 1 : "s ~/Users/name/Box": 종결되지 않은 대체 패턴' –

+0

'sed' 패턴이'''안에 있어야합니다. – ebo

1
:%[email protected]/Users/name/Project/Task1/[email protected]@g 

또는

:%[email protected]<C-r>=getcwd()<CR>@[email protected] 
+0

첫 번째 명령을 수동으로하고 싶지 않으므로 긴 경로가 있고 경로에 공백이 있기 때문에 수정하는 데 시간이 걸릴 것입니다 –

+0

두 번째 명령을 시도했지만 다음 오류가 발생했습니다 :'E486 : Pattern not found : = getcwd() ' –

+0

Ctrl + R을 입력 한 다음 getcwd()를 입력하고 Enter를 입력하십시오. – romainl

관련 문제