vi에도 replace files기능 있나요?
글쓴이: prether / 작성시간: 월, 2008/02/04 - 9:28오후
하나가 아닌 여러 파일들에 있는 특정 pattern을 한번에 변경하고 싶습니다.
source insight같은 프로그램에는 replace files기능이 있어서 한번에 가능한 것으로 알고 있습니다. vi에도 그러한 명령이 있나요?
궁여지책으로 macro(한 파일 :%s로 변경하고 :bn하기 반복)를 만들어서 사용하고 있습니다.
Forums:
무식한 방법인긴
무식한 방법인긴 하지만 저는 vim의 -S라는 옵션을 써서 쉘의 for문을 돌렸습니다. 그러니까 예를 들면 script.vim라는 파일에
라고 저장한 다음에(:wq 다음에 줄바꾸기 해야 합니다!) 쉘에서
라고 실행하면 됩니다.
제가 써놓고도 너무 허접하네요. 깔끔한 방법을 아시는 분이 있으시면 알려주세요.
--
feel the gravity
feel the gravity
꼭 vi(m)으로 해야하는 상황인가요?
sed -e 's,패턴,바꿀단어,g' 파일명 > 파일명_tmp; mv 파일명_tmp 파일명
이런 방법이나
gawk
perl -pi -e 's,패턴,바꿀단어,g' 파일명
을 이용하시는게 더 편하지 않나요?
vi(m)에는 어지간한 사람이 상상할 수 있는 모든 기능이 있으니 뭔가 방법이 있으리라고 생각합니다만... 그냥 아는 내용 중에 해결하는게 더 편해서 ^^;
검색해보니
검색해보니
여러개의 html 파일을 수정하려면
vim *.html 한 뒤에
:args
:argdo
를 이용하면 된다고 합니다. 명령어로 추정컨데 인자에 대해 뭔가 수행하는 것 같군요.
자세한 내용은 여길 참조하세요. ...
http://tweetypie.doc.ic.ac.uk/~cho/s/index.php?/archives/19-VIM-search-and-replace-multiple-files.html
좋은 link 감사합니다.
좋은 link 감사합니다. :)
파일 읽기..
여러개의 파일 읽어 들일때 find를 이용해서 읽어 들이면 좀 더 편하게 읽어 들일수 있습니다.
vim `find . *.html`
이렇게 실행하고
:ls
를 해 보시면, 여러개의 파일이 목록에 올라 온 것을 보실 수 있을 겁니다.
목록을 확인하시고..
아래와 같이 변환 하시면 됩니다.
:argdo %s/foo/bar/g |w
JellyPo님하고 중복된 답변 같기는 한데 ^^;;;
조금 정리 해 봤습니다.
마지막에 |w는 어떤
마지막에 |w는 어떤 뜻인가요?
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
저장
저장하라는 의미 입니다.
자세한 내용은 vim상태에서
:help argdo
해 보세요.
대충 통밥을 굴려
대충 통밥을 굴려 생각해보면,
argdo 는 인자로 들어온 파일을 버퍼로 불러와 하나씩 처리할 겁니다. 명령어를 실행하고 버퍼의 다음 인자를 처리해야 하는데 변경된 내용이 버려지지 않도록 |w 하는거 같네요. |q! 하면 하나씩 버퍼만 바꾸고 파일 내용은 안 바꾸겠네요
...실제 실행은 하나도 안해보고 대충 추측만;;
혹시 개행문자도 가능한가요??
예을들어 리눅스 utf8 에서 작성한 텍스트파일을 윈도우에서 불러오면
개행문자가 처리가 안되어있더군요...
이걸 윈도우형태로 변환하고 싶을때요....
(근데 이 파일의 100개정도 있습니다...)
개행문자는 눈에도 안보이는데 이럴때는 어떻게 처리하나요??
이렇게 보이는 이유가 리눅스에서는 개행문자을 하나로 처리하고
윈도우에서는 두개로 처리해서 그렇다는데......(맞나요?)
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
todos
dtou, utod, todos, fromdos, dos2unix, unix2dos 등의 스크립트나 실행파일이 많이 있습니다.
http://packages.debian.org/tofrodos
혹시 디렉터리 안에있는 파일도 변환하는법 아시나요??
여러가지 찾아봤는데요...
윈도우와 리눅스 차이점이 이렇게 나왔더군요
제일 쉽게 변환할려면..
여러파일을 한꺼번에 바꿀라고 했더니
tofrodos 설치후에...
그냥 todos *.txt 나 fromdos *.txt 로 간단히 변환이 가능했습니다..
근데 문제는 ./ 이 디렉터리 밑에 또다른 디렉터리가 있으면 그 안에있는 파일은 변환이 안되더군요..
혹시 같이할려면 어떻게 해야하나요??
./
./test0.txt
./01/test1.txt 이게 변환이 안됨...
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
find -type f -name '*.txt'
find -type f -name '*.txt' -exec fromdos '{}' \;
답변 감사합니다.
잘되네요... :)
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
vim recoding 으로 이렇게.
find . -iname "links.txt" > links.txt
vim `cat links.txt `
qq:%s/ -shared / -specs=msvcr71 -mthreads -mdll /gq
qw@q:w!:n@wq
댓글 달기