예전에는 코딩 습관이 별로 좋지 않아서 코드에 탭을 많이 사용했어요.
이제 탭을 공백으로 변환하고 싶은데 vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:ret 명령을 설정하는 것은 실용적이지 않습니다. 어떤 각도에서 이 문제를 해결할 수 있나요?
예를 들어, Python 파일만 처리하려는 경우 프로젝트 루트 디렉터리로 CD를 이동합니다.
1. $> vim `find . -type f -name "*.py"` // VIM으로 처리할 모든 파일 열기
2. :argdo :ret | update // vim 매개변수 목록의 모든 파일에 대해 :ret 명령을 실행하고 저장합니다
또한 bufdo 및 windo 명령 사용법에 대해 자세히 알아볼 수 있습니다.
위는 원본 포스터의 문제에 대해 VIM이 일일이 할 필요 없이 쉽게 이 작업을 수행할 수 있다는 점을 보여주기 위한 것입니다. 물론 위의 아이디어에 따라 스크립트를 작성하는 것도 좋은 방법입니다.
예를 들어, Python 파일만 처리하려는 경우 프로젝트 루트 디렉터리로 CD를 이동합니다.
1. $> vim `find . -type f -name "*.py"` // VIM으로 처리할 모든 파일 열기
2. :argdo :ret | update // vim 매개변수 목록의 모든 파일에 대해 :ret 명령을 실행하고 저장합니다
또한 bufdo 및 windo 명령 사용법에 대해 자세히 알아볼 수 있습니다.
위는 원본 포스터의 문제에 대해 VIM이 일일이 할 필요 없이 쉽게 이 작업을 수행할 수 있다는 점을 보여주기 위한 것입니다. 물론 위의 아이디어에 따라 스크립트를 작성하는 것도 좋은 방법입니다.
sed를 사용해 보세요:
sed -i -e "s/t/ /g" *.py
vim을 사용하지 말고 스크립트를 작성하여 처리하는 것이 좋습니다.
쉘로 작성할 수 있으며 find + sed 명령으로 수행할 수 있습니다. Python으로도 작성할 수 있으며 os.path.walk는 파일을 탐색하여 한 줄씩 스캔합니다.
으아악
이런 문제는 정규식을 사용해서 해결할 수 있지만, vim을 사용하여 하나씩 처리하는 것은 피하는 것이 좋습니다. 정규식을 실행하려면 Python 스크립트를 작성하는 것이 좋습니다.
expand
쉘 명령이 이를 수행합니다.일괄 처리에는 정규식을 사용하는 것이 더 편하지만 꼭 vim을 사용해야 한다면 @shizhz 님의 답변이 좋습니다.
sed -i "s/t/ /g" *.py
으아아아
vi(m)의 비대화형 모드를 사용하세요.
^I
使用CTRL+V+I
들어가세요.EOF 뒤에는 공백을 사용할 수 없습니다.
vi(m) 명령 앞에 공백이 있을 수 없습니다.
:h retab