2016-08-06 8 views
0

에서 명령을 대체 넣어 (vireplace 말을 할 수있는 몇 가지 기능을 통해()), 그래서 파일을 열지 않고 동일한 명령을 터미널에서 실행할 수 있습니다. 또한 문자열 (strtoreplace, replacedstr)은 프롬프트 입력 ($ @)이어야하므로 다른 문자열과 바꾸려는 모든 문자열에 대해 작동해야합니다. 내가어떻게 VI가</p> <pre><code>:%s/strtoreplace/replacedstr/g </code></pre> <p>이 가능 .bashrc에이를 넣어하는 것입니다 다음 명령에 의해 전 세계적으로 문자열을 대체 할 수있는 VI 하나에서 bashrc에

function vireplace() { vim :%s/[email protected]/[email protected]/g [email protected] ;} 
+1

가능한 중복 http://stackoverflow.com/questions/ 23235112/how-to-run-a-vim-commands-from-command-prompt) –

+0

안녕하세요 @Andy, 귀하의 링크가 도움이됩니다. 그러나 bashrc에 넣고 일반적인 프롬프트 입력을 사용할 수있는 방법이 있습니까? –

+0

함수에서'sed'를 쓰지 않는 이유는 무엇입니까? – cdarke

답변

2

당신은 -c (명령) 옵션을 사용할 수 있습니다 같은 것을 원한다. 예를 들면 다음과 같습니다.

이렇게하면 gash.txt 파일에서 "1"을 "x"로 바꿉니다. -c "wq"은 대화 형이 아닌 것을 보장합니다. 대화 형으로도 사용하려면 생략하십시오.

솔직히 말해서 sed이 같은 일을 단순히 할 수있는 경우 vim을 사용하려는 이유를 알 수 없습니다.

+0

음, vim의 regexes는 sed보다 강력합니다. 하지만 펄을 사용하고 싶습니다. – melpomene

+0

'sed'는'-E' 옵션을 사용하여 확장 된 RE를 지원하지만, 5.10부터 여전히 Perl만큼 강력하지는 않습니다. 그러나 질문은 특히 직접적인 대체입니다. 'sed'는'perl'보다 훨씬 작은 설치 공간을 가지고 있습니다. – cdarke

+0

'sed'는'-E'를 허용하지만 그것을 문서화하지 않습니다 ('-r' 만 나열합니다); 기묘한. POSIX Extended vs. Basic RE는 문법의 차이 일 뿐이며 기능은 아닙니다. Perl 5.0 (1994)은 이미 look-ahead가 있었고 5.005 (1998)는 POSIX RE가 지원하지 않는 look-behind를 추가했습니다. – melpomene

1

vi (또는 ed)을 호출하는 함수를 만들 수 있지만 다른 사람들이 작성한 함수를 이해해야하는 경우 sed을 사용하십시오.

.exrc (개인 계정에만 있음)에 편집 할 수있는 비공개 개조를 사용할 수 있습니다.
$HOME/.exrc에 함수를 추가 할 수 있습니다.

nnoremap <F2> :%s/strtoreplace/replacedstr/g<Enter> 

스크립트를 테스트하기위한 또 다른 예는 당신의 작업 :

nnoremap <F9> :w<Enter>:!%:p<Enter> 
([명령 프롬프트에서 Vim은 일련의 명령을 실행하는 방법]의