누구나 해보는 파이썬 편집기 선택 고민과 결정

누구나 코딩 에디터로 이것 저것 알아보고 누구의 추천도 받아보고 호기심에 사용도 해보고 그러지만
모르다보니 딱 이거다! 라고 바로 정하기가 않되더군요.

첨에 gedit 기반으로 했더니 생각보다 가상창 전환할 때 무겁더군요. 게다가 간편한 메모용으로 같이
쓸려니 구성해 놓은게 맞지 않네요.

찾다가 sublime을 깔았는데 이건 한글 입력을 제대로 지원안하더군요. 중국사람이 만들어 놓은 붙혀넣기
신공의 입력기는 영 맘에 안들어서 이것 저것 둘러 보고 생각해 보다가 무겁긴 하지만 쬐금 익숙한 이클립스
기반 pydev로 정했는데 아직 4.2와 python3에서 조합이 불편한가 보더라구요.

그래서 결국 기본 편집기중에 하나인 gvim으로 정했습니다. 문제는 vim 기본 기능만 알고 있다는 거네요.
원래 가지고 있는 생각이 라인 에디터는 구시대 유물이다. 적어도 페이지 에디터를 되어야 한다 였는데
간간히 쓰이는 vim 기능도 익히면서 겹쳐지는 부분이 편할 것 같아서 그렇게 정했는데, vimtutor 볼려니
귀찮고 여러가지 설정환경과 기능을 좀 익히긴 해야 겠네요. 아… 귀찮은데 말입니다.

개발은 아니구 최소한 리눅스 쓰면 암묵적으로 언어 하나는 알고 있어야 할 것 같아서 배워 볼려구요.
레어링에 3.3이 안착되어 있어서 잘 됐다 생각이 들었습니다. 퀀탈 나왔을 때 누가 메일링에 왜 3.3을 안
넣었느냐 하는 긴 쓰레드가 생각나기도 했네요. ㅎㅎ

vi는 유닉스계열에서 전통적으로 애용되던 편집기 입니다.여기서 v는 visual을 뜻합니다.
라인에디터가 아니지요,
그냥 단지 GUI(Graphic user interface)가 아닌 TUI(text-based user interface) 나 CUI(Console-based user interface)
지요, 그리고 라이브러리로 ncurses를 요구합니다.

vim은 VI-iMproved의 약자로, 전통적 vi에 비해 엄청나게 많은 기능이 추가 되었고, 향상되었습니다.
기존의 vi은 Undo도 한단계밖에 안되는 등, 불편합니다.
그렇기에 vim은 필수적으로 설치해야 한다고 보구요.

GUI편집기에 비해, 화면에 보여질 수 있는 글자수및 인터페이스에서는 열악한 것이 사실입니다.
그러나, 가벼움, 확장성… 유연성을 비교해 본다면, GUI편집기는 발끝에도 미치지 못하게 됩니다.
또한, 편집기는 대부분의 입력이 마우스가 아닌, 키보드에서 이루어진다는데 주목할 필요가 있습니다.
GUI편집기의 단점은 입력 방식이 마우스와 키보드로 이원화되고, 손이 키보드를 자주 떠나게 되는 비효율적인 측면이 발생합니다.
이것을 해소하기 위해 단축키를 사용한다고 하지만, 단축키는 특수키와 조합을 하여야 하기 때문에… 입력에 불편이 따릅니다.
즉, 기본글쇠를 벗어난 글쇠인데다가, 양손으로 동시에 눌러야 합니다. 또한, 단축키가 시스템 전체에 할당되기에…
충돌을 피해야 하기에, 복잡해집니다 이러한 관계로 단축키를 기억하는데에도 에로사항이 있습니다.
유니티의 허드(HUD)가 키보드 단어입력으로 메뉴를 선택하게 하는 것도, 이러한 단점을 인식하고 있다는 의미입니다.

텍스트모드 편집기의 대표로는 vim, nano, emacs 등이 있는데…
nano는 뭐 아주 단순함을 추구하기에… 그냥 편집기능을 제공한다는 것에 만족하는 것이구요.

emacs와 vim은 막강한 기능을 제공합니다.
프레임워크라는 측면에서 보자면 emacs가 유연하고, 체계적입니다.
그러나, vim은 아주 전통적인 방식을 사용하고 있고, 또 표현에 규칙이 덜하기 때문에… 실질적 유연성이 높습니다.
비교해 보자면, perl과 python을 비교할 수 있겠군요. python은 체계적이고, 유연합니다만…
실제 코드를 작성하게 되면 perl이 훨씬 적은 코드를 사용하여 구현이 가능합니다.
물론 체계적인 면에서는 부족하기 때문에… 속도나, 효율성, 규칙성은 부족합니다만…
그리고, 키보드입력 방식도, emacs는 특수키를 연속 입력하는 것을 단축키로 합니다.
그래서 역시 단축키를 암기하는데에도 애로사항이 많고, 실질적으로 불편함도 많이 따릅니다.
vim도 기능을 사용하려면 많은 글쇠기능을 알고 있어야 하지만, 이것은 전통적으로 오래 사용되었기 때문에…
알아둬서 나쁠 것이 전혀 없습니다. 예를 들어, less,more, readline등에서도 적용되니까 말이죠.

오죽하면 xxxterm이라고, vi입력키를 이용하여 웹브라우징을 하는
가벼운 그래픽모드 웹브라우져도 있겠습니까?

자, 정리하자면, 일반적으로 사용되는 범용 편집기로는
vim,emacs를 추천합니다. 물론 gedit나 slimtext등도 좋지만, 범용성 측면에서 본다면 역시, GUI기반 편집기는 많이 딸립니다.

하지만, 특정 언어에 대한 편집기를 논하자면 얘기는 달라집니다.
IDE환경은 개발 필요한 기능들을 가능한한 통합한 환경입니다.
그렇기에 무겁게 느끼지만 않는다면, eclipse나 netbeans, geany등을 사용하는 편이 좋을 듯합니다.

그냥 가볍게 배우기에는 vim이 좋더라고요.
여러 컴퓨터에서도 호환성이 괜찮고, 의외로 익숙해지면 참 쓸모가 많은 에디터라는 생각이 들더라고요.
저도 그냥 파이썬 배워두기만 했는데 vim이랑 잘 맞는 거 같아요.
설명은 위에 분이 너무 잘 해주신거 같고, 정말 키보드만으로 작업이 가능하다는 것이 가장 큰 장점이 아닐까 싶네요.

vim을 구시대 유물이라고 표현하다니… 좀 논란이 되겠네요…ㅋㅋ
vim은 라인 에디터는 아니에요. ed 같은 것이 라인 에디터입니다. cat > filename 도 딱 한 줄밖에 편집 못하죠.
vim(vi)은 전통적인 에디터입니다. 옛날에는 GUI가 없거나 일반적이지 않았던 시절이라… 다 그만한 존재 이유가 있습니다.
vim의 기능은 초강력하고 빠릅니다. 정규표현식 찾기, 치환, syntax highligt 등… 100MB, 1GB 대용량 파일 편집 등…
그러나 강력한 기능을 사용하기 위해서 명령을 숙지해야 하는 불편함이 있고 손가락이 정말 바쁩니다만,
옛날에 MS-DOS에 기본적으로 들어있는 에디터보다는 작업하기 편합니다.
X윈도 안 깔린 서버들도 많아서 현재에도 많은 사람들이 애용하고 있는 에디터가 VI입니다.^^


python 편집기로 마땅한 것이… 글쎄요… gedit 도 괜찮습니다. gedit 에서 source code browser 플러그인 켜놓고 쓰면 아기자기 한 것이 보기가 좋습니다.
[attachment=0:2oizoq7p]gedit.png[/attachment:2oizoq7p]
gedit 단점으로는 파일 용량이 조금만 커져도 버벅거리는 단점이 있습니다.
그 때는 geany, anjuta 같은 툴을 사용하시면 되겠습니다.

geany는 빠릅니다… 그러나…안 예뻐서 잘 사용하지는 않습니다.

anjuta 는 이름이 안주타…라서 안좋지는 않고… 좋습니다. 프로젝트 생성(Makefile, automake 등) 기능, UI 편집 기능이 있습니다. 좀 커다란 프로젝트 하기에 좋습니다.

그외

이클립스, 넷빈즈 - 자바 기반이라 느립니다…

저도 텍스트에디터 고민해보고 이것 저것 써보다가 지금은 vim과 sublime두개 씁니다. 회사에서 맥을써서요. 리눅스에서는 vim과 geany를 쓰네요. hive스크립트 같은 것은 gui가 편하고 그 외에는 vim이 훨씬 편하네요. 회사에서 주로 파이톤을 쓰는데, nerd tree 등등등의 플러그인 쓰면은 디렉토리 열어서 파일도 고를수있고, 파이톤 오토 컴플리트도 완벽하지 않지만 잘 되구요. 파이닥도 볼수 있고 대단위 코멘트, 클래스 익스플러러(정확히 명칭은 뭐라고 부르는지 모르겠는데, 평션/클래스 구조를 트리로 보여줘서 이동할수 있게하는것) 등등을 vim에서 다 사용할수 있습니다. 빔에서 이동하시는게 불편하시면 set mouse=a 설정하시면 마우스로 커서이동 휠사용으로 스크로릴, 셀렉트 등등 다 사용하실수 있구요. 아무리 열심히 찾아봐도 빔 많한게 없네요. (이멕스는 좋아보이긴한데 빔에 익숙해지니 사용하기가 꺼려져서)

제가 쓰는 플러그인들입니다.
Pathogen
Python omnicompletion
bclose
MiniBufExplorer
NERDCommenter
NERDTree
pydoc
snipMate
supertab
TagList

앗, 라인에디터가 아닌가 보군요.
여러가지 좋은 댓글들 고맙습니다. 먼저 답글쓰고 읽어보겠습니다. ^^;

이맥스 한번 써보세요. vim도 좋지만 Emacs는 더 다양한 기능을 사용할 수 있습니다.

python은 써보지 않아서 모르겠지만, 가장 성능이 우수한 ide는 제가볼때 kdevelop입니다. 아마도 파이썬도 지원할겁니다…
그외에 넷빈즈나 이클립스도 좋고요…
이맥스가 잘만 쓰면 가장좋은 편집기가 되겠지만, 그 잘만 쓴다는게 너무 너무 너무 너무 어렵습니다.
우선은 elisp를 어느정도는 할줄 알아야하는데, 이게 배보다 배꼽이더큰경우죠…
kdevelop는 우선 자동완성이 가장훌륭하기때문에 초심자들에게 제일편리하고 디버깅도 우수하죠.
리눅스에서 비주얼스튜디오에 버금가는 가장 지능적인 툴입니다. 안주타는 거의 버전업진행이 미진한게 안타까울따름…

vim이나 emacs는 현재로썬 낡고 오래된 구닥다리 텍스트 에디터 입니다만, 그만큼 축척된 방대한 라이브러리와 기능을 지원하므로 진입 장벽만 넘을 수 있으면 빠르고 가벼운 ide로 사용할 수 있게 됩니다.

다만 처음 사용하기 위해선 진입 장벽은 아무래도 높은 벽이고 python 같은 경우는 기존에 존재하는 IDE들이 대부분 지원하는 언어이므로 그에 맞는 설정을 해보면서 자신에게 맞는 에디터를 찾는게 가장 빠른 길이 아닐까 합니다.

주변에서 아무리 특정 에디터가 좋다고 해도 정작 자신에게 맞지 않으면 그건 더 이상 자신에게 좋은 에디터가 아니라 좋은 평가를 받는 에디터 이기 때문이라고 생각합니다.

제 경우만 해도 ruby 개발을 위해 aptana studio를 사용했지만 영 익숙하지 않은 환경이라 vim으로 바꾸고 그 마저도 버퍼 문제에 시달리다 emacs로 전향을 고려하고 있으니 결국 중요한건 이 에디터가 취향에 맞느냐 아니냐 하는 문제라고 생각합니다.

오… 답변들 많이 주어서 소중하게 읽었습니다.

[quote:1impd58v]이맥스 한번 써보세요.[/quote:1impd58v]
명성을 많이 들었습니다. 직접 사용해보진 않았고, 설치해서 기본키 몇개 외우다가 너무 방대해서 말았던 적이 있습니다.
텍스트 편집기라기 보단 거의 OS 수준이라고 하더군요. 리스프도 배워야 하고 아직 무리지 않을까 싶네요.

[quote:1impd58v]가장 성능이 우수한 ide는 제가볼때 kdevelop입니다.[/quote:1impd58v]
KDE 개발도구들이 상당히 편리하고 멋지다고 생각합니다. 파이썬쪽 에디터중 독보적인 Eric이라고 멋진 편집기도 얘기 들었습니다.
우선 gtk와 그놈 환경이라서 kde나 qt쪽 연관된 라이브러리는 가능한 안깔려구요. 데스크탑환경 바꿀때 따라 바꿀 것 같습니다.

[quote:1impd58v]결국 중요한건 이 에디터가 취향에 맞느냐 아니냐 하는 문제라고 생각합니다.[/quote:1impd58v]
얼마되지 않는 조그만 양이지만 vimtutor를 다시 봤습니다. 그리고 유튜브에서 vim으로 꾸며진 ide 환경을 보니 흥미가 생기더군요. 개인들이 만들어 놓은 vim 기반 ide 환경들도 비슷하지만 여러개 서핑이 되길레 그중 하나 받아다가 환경 구성해 볼려구요.

아마도 취향 문제가 맞나 봅니다. 그 말이 와닿았습니다. 예전에 윈도용 ide만 접하다 보니 linux에서 많이 알려진 편집기에 익숙해지는게 좋겠단 생각이 들었습니다. 그러다 사용하는 키 몇개만 더 익히면 되는 vim으로 해볼까하고 정했는데 여러가지 다양하게 소개들 해주시니 다른 툴도 다음에 기회되면 접해봐야 겠네요. ㅎㅎ

에디터 전쟁에 불을 끼얹고싶은 마음은 없지만…그냥 제 경험 한번 써봅니다. 전 이맥스, vim 둘다 쓰고있으니 너그러이 봐주세요.

vim 과 emacs 가 동일선상에서 비교가 자주 되지만, 실제 써본 느낌으로는 vim 이 vim-script 따위 몰라도 충분히 활용가능한 그냥 편집기라면 emacs 는 elisp 이라는 프로그래밍 언어의 인터프리터입니다. 즉, emacs 는 하나의 온전한 프로그래밍 언어를 구동하는 가상머신이라고 봐도 되기때문에 기능상 vim 보다 훨씬 강력합니다. 다만, 그만큼 제대로 사용하기가 ‘훨씬’ 어렵습니다.

vim 은 그냥 편집용 단축키들 습득하면 그때부터 바로 사용가능하고 그 단축키들로 인해 vim 의 강점(적은 타수와 손움직임)을 충분히 누리는게 가능하지만, 이맥스는 저런 편집용 단축키를 습득하고 나면 이제 '입문이 가능한 레벨’이 됩니다. elisp 이라는 언어를 배우는것을 빼고 보더라도, 그 elisp 을 이용한 엄청나게 많은 '모드’들이 있고, 사용분야도 단순한 특정 프로그래밍 언어 IDE 혹은 org-mode/muse 같은 편집/퍼블리싱 환경을 넘어서, gnus 같은 뉴스리더, dired 같은 파일매니저에서 시작해서 쉘, 웹브라우저, irc, twitter, 멀티미디어, 수학 증명 도우미 등등등 거의 컴퓨터로 가능한 거의 전부가 이맥스 안에서 다 됩니다. 저런 모드들 각각 익히고 세팅하는데 드는 시간이 vim 익히고 세팅하는데 드는 시간과도 비슷합니다.

저렇게나 많은 기능을 제공할정도로 '강력’하지만, 오늘날은 더이상 CLI 시절이 아니라는게 결정적인 문제겠죠. 일단 X 윈도우 사용하면서 '윈도우’를 열어서 쓰게되면 저렇게 이맥스 안에서 모든걸 할 필요도 이유도 없습니다. 이맥스 안에서 열고 버퍼를 바꿔가며 쓰기보다 그냥 그 프로그램을 옆에 켜놓고 쓰면 됩니다. 각각의 standalone 프로그램들이 보통 이맥스 모드가 제공하는것보다 기능이나 편의성면에서 더 뛰어난 경우가 많고요. 덕분에 현재는 emacs 의 저런 강점이 오히려 많이 바랬다고 봅니다.

순수 에디팅 측면으로 비교하면 이맥스 유저가 elisp 구루여서 원하는 기능을 바로바로 함수로 만들어서 갖다쓸 수준이면 이맥스가 vim 보다 훨씬 막강할겁니다. 하지만, 그게 아니라 그냥 주어진 기능만 사용하는 유저라면 사실 vim 과 비교해서 그다지 나은점은 없는것같고, 오히려 필요로 하는 많은 기능을 빌트인 함수로 다수 제공하는 vim 이 더 편리하기도 한것같습니다.

결론은…vim 의 키맵은 어차피 유닉스 필수이기도 하고, 그다지 어렵지도 않으니 간단히 커피한잔 옆에 두고 천천히 익히시고, 이맥스는 안배워도 되지만, 혹시 배울 생각이시라면 마음을 단단히 먹고 시작하세요…ㅎㅎ

저도 basic, asm, c, c++, fortran, pascal, java, javascript, perl, php, ruby, lua, python 등을 알고 있지만…
개인적으로 꼽으라면, c, java, perl, bash스크립트를 손꼽고 싶네요.

java는 플랫폼 독립형이고, 임베이딩 운영체제환경에 강점을 가지고 있는 점이고,
java의 태동이 네트워크를 기본 베이스로 깔고 간다는 점에서, 앞으로도 많이 쓰이게 되리라 보입니다.
java classloader 자체가 네트웍으로 전송이 가능하다는 점은, 언어의 기능 정의가 네트워크적 성격을 가짐을 의미합니다.

c는 고전적인 언어이지만, 특유의 자유로움과 기계어적 성질로, 저레벨 수준에 근접하는 프로그램을 작성하기에 유리합니다.
asm 날코딩은 정말 쉽지 않지만, c로는 그 보다 훨씬 쉬운 방법으로 하드웨어를 제어할 수 있습니다.
또한, GPT에서 사용하는 펌웨어라던가 기타 펌웨어 및 드라이버들이 C언어로 작성됩니다.
또한, 유닉스 자체가 C로 작성되었다고 하고, 기본쉘로도 C언어가 장착되었습니다.
리눅스도 유닉스계열인 관계로, C언어를 이해하면 커널과 쉘을 이해하는데 상당한 도움이 됩니다.

perl도 고전적인 언어이지만, 최근에도 소프웨어 생산성 측면에서 두각을 드러내고 있습니다.
언어 자체가, 구조적, 객체지향적 언어가 아닌, 인터프리팅적 요소를 강조하는 다이나믹 스크립트인 관계로,
하나의 기능을 어찌 해석하느냐에 따라, 코드및 접근 방식이 아주 달라질 수 있습니다.
이런 것에 익숙해지면, 타언어에서 수십줄로 표현할 것을 몇줄이면 해냅니다.
왜나면 언어 자체가 코드를 인식하고, 변경하는 식의 인터프리팅적 요소가 강조되어 있기 때문입니다.

bash스크립트는 sh(Born Shell)이 향상된 (Born-Again Shell)입니다.
본쉘에 비해, 아주 막강해서… bash스크립트만 잘 사용하더라도, 왠만한 스크립팅 언어수준의 표현이 가능합니다.
쉘이란것이 커널과 사용자및 사용자프로그램 사이에서 동작하는 관계로…
쉘스크립팅을 잘 사용하면, 시스템에 보다 간편하게 접근이 가능하고,
시스템관리에 엄청난 장점을 지닐 수 있습니다.

왜 뜬금없이 언어 얘기를 하는가 하면…
이렇게 언어들도 각각의 용도별로 특장점들이 있듯,
에디터들도 그러한 속성을 지닌다는 것입니다.

제가 vim과 emacs를 perl과 python에 비교했듯이…
체계성이 부족하지만, 번역기능이 강조된 펄의 생산성 처럼…
vim도 emacs에 비해 체계성이나, 기능면에서는 분명 딸릴 것입니다만…
실질적으로 편집기에서는 그 많은 기능은 소용이 없을 뿐 더러,
또 많은 기능을 배우기 위한 진입장벽, 그것을 잊지 않기 위한 노력을 생각해 본다면…
분명 과기능이라고 생각합니다.

예전에 C언어를 배울때, 유닉스의 철학에 대한 문장을 본 적이 있는데…
비유하자면…
화분을 정리하는데는 모종삽이면 충분하고, 화단을 정리하는데는 삽이면 충분하다.
이런 곳에 포크레인을 사용한다며, 쓸데 없을 뿐 더러, 오히려 단점 만을 드러낼 수 있다.

대부분의 프로그램들을 잘게 쪼개 놓고, 쉘스크립트를 사용하여…
프로그램간의 표준 입출력을 통해서 많은 기능들을 창출한다는 것이죠.
이런 면에서도, vim은 프로그램 호출 및 표준 입출력을 통한 상호작용이 만족할 수준입니다.
또한, 자체로도 그렇게 무겁지 않기 때문에… 포터블한 환경에도 적용하기 쉽습니다.

저는 윈도우즈에서도, 주로 vim을 사용합니다.
어찌보면 습관이나 병같아 보이지만…
정규표현식을 vim만큼 잘 처리해주는 윈도우즈 에디터는 찾지 못하겠더군요.
그냥 win32용 vim을 복사해놓고, 실행만 하면 됩니다.

제 경우는 물어볼 것도 없이 Sublime Text 2에 Vim 패키지 설치해서 씁니다. Vim 쓰는 것 같으면서도 Sublime Text2의 위력을…

파이썬 편집기 비교표입니다.
[url:vk3jx9kh]http://stackoverflow.com/questions/81584/what-ide-to-use-for-python[/url:vk3jx9kh]

[quote="별님":26dp6smc]파이썬 편집기 비교표입니다.
[url:26dp6smc]http://stackoverflow.com/questions/81584/what-ide-to-use-for-python[/url:26dp6smc][/quote:26dp6smc]
위 표를 스프레드시트로 만들어 봤습니다.
[attachment=0:26dp6smc]파이썬 편집기.ods[/attachment:26dp6smc]