2013-05-07 2 views
1

VIM의 gg=G 명령을 사용하여 모든 파일을 들여 쓰고 싶습니다. 어쨌든 그것을하기위한 스크립트를 작성하고 있습니까?디렉토리의 모든 파일에 VIM 키 시퀀스 적용

나는 .. 나는 vim -c 도움이 될 수 확신하지만, 해당 gg=G 무엇인지 확실하지 오전 뭔가

find . | xargs -n 1 | vim [ with some option to indent ] 

처럼 될 수 상상

+0

vim 대신 들여 쓰기를 수행하는 데'sed '를 사용하는 것이 훨씬 쉬워 보일 것입니다. –

+1

@JimGarrison'gg = G'는 한 단계 들여 쓰기 만하는 것이 아닙니다. 파일을 다시 포맷합니다. sed는 좋은 도구이지만 구문에 대해서는 전혀 모른다. 당신은 java/c/C++/... src 파일을 엉망으로 만들려고 할 수있다.'gg = G'를 실행하면 sed가 정말 힘들다는 것을 알게 될 것이다. – Kent

+0

': normal'을 사용하거나 Vimscript를 소싱하여이 작업을 수행 할 수 있습니다. 자세한 내용은 [here] (http://stackoverflow.com/a/15677418/813602)를 참조하십시오. –

답변

3

정력은 좀 걸릴 수 두 가지 옵션이 있습니다 could vim -s script file

나는이 메커니즘을 vimgolf가 사용한다고 생각한다.

0

당신은 모든 버퍼에 명령을 적용 할 bufdo을 사용할 수 있습니다 , normal gg=G을 사용하여 정상 모드 명령 gg=G을 실행하십시오. 그리고 모두를 저장하려면 wqall. (남자 정력에서)

-s {scriptin} 
        The script file {scriptin} is read. The characters in the file are interpreted as if you had typed them. The same can be done with the command 
        ":source! {scriptin}". If the end of the file is reached before the editor exits, further characters are read from the keyboard. 

과 의미

-w {scriptout} 
       All the characters that you type are recorded in the file {scriptout}, until you exit Vim. This is useful if you want to create a script file to be 
       used with "vim -s" or ":source!". If the {scriptout} file exists, characters are appended. 

을 당신에게 다음 예를 gg=GZZ에 대한 vim -w script하여 키 시퀀스를 기록 할 수 있습니다 :

+0

내 질문에 오해했다고 생각합니다. 파일이 내 버퍼에 있지 않습니다. – w00d

+0

'vim'(예 :'vim * '또는 그와 비슷한 것)으로 모두 열 수 있습니다. –

+0

고마워, 그거야하지만 꽤 지저분 해. 나는 잠재적으로 큰 파일을 가지고 엄청난 양의 파일을 열지 않으려한다. 모든 파일을 열 필요없이 더 좋은 대답이 있는지 볼 것입니다. – w00d

0

vim에서 다음을 모두 수행 할 수 있습니다.

:args `find .` 
:argdo normal gg=G 
:argdo w 

이것은 argslist을 구축하고 argslist의 각 파일에 일반 명령 gg=G을 실행합니다. 그런 다음 각 파일을 argslist에 저장합니다. 참고 :이 경우 set hidden이 필요합니다. 더 도움말을 참조하십시오

: Vimcast에서

드류 닐에 걸쳐이 주제에 대한 몇 가지 좋은 스크린 캐스트를 가지고

:h argslist 
:h 'hidden' 
관련 문제