vi에디터는 왜 윈도우처럼 안만들까요?

morecream의 이미지

안녕하세요. 저는 현재 우분투12.04 버전을 설치하고 vi에디터로 C프로그래밍 공부하고 있는 학생입니다.

우분투 경험한지는 2주정도 되었네요.

우분투를 쓰다가 한가지 궁금한점이 생겨서 글을 올리게 되었습니다.

저는 윈도우에서는 VC++ 이나 이클립스 같은 프로그램으로 프로그래밍을 하였습니다.

VC++ 이나 이클립스도 각 프로그램들이 약간씩의 차이점이 있고 단축키도 약간 다르지만 그래도 배우기가 쉽습니다.

다르게 말해서 Look and Feel. 단축키들이 매우 직관적입니다.

예를 들어 이클립스의 경우 블록 친 부분을 주석처리하려면 Ctrl + / 이렇게 하면 블록전체가 // 로 주석처리 됩니다.
제 생각에는 매우 직관적으로 보입니다. 딱히 외울필요도 없습니다.

그 외에도 다중파일작업 같은거 할때에도 우리가 웹서핑 할때 자주 하던 Copy & Paste 그대로 마우스로 드래그 해서 Ctrl + c , Ctrl + v 하면 됩니다.

그런데,

리눅스에서 할때는, 저는 vi 에디터를 쓰고 있는데요.

블록주석 한번 할라치면, %s/^/\/\/gc................... 이거 뭡니까...ㅡ0ㅡ (이 명령이 맞는지도 모르겠네요)

물론 공부하고 자주 하다 보면 외워지겠죠. 근데 제가 문제제기 하는것은, (딱히 문제제기 라기 보단 궁금한점은...^^;;)

리눅스는 왜 직관적으로, 알기 쉽게, 하기 쉽게, 설치하기 쉽게 안 만드는거죠??

우분투 홈페이지나 우분투 관계자들(?) 보면 우분투 및 리눅스의 보급 및 대중화를 위해 굉장히 노력하는 것 처럼 보입니다.

근데 일단 리눅스는 윈도우 보다 "어렵습니다"

물론 하드웨어 및 소프트웨어 환경이 리눅스보단 윈도우에 최적화 되어 있어서 그런부분도 많지만,

그 외 이런 부분들.

예를 들어 vi 에디터의 경우 이클립스 처럼 그냥 블록주석 단축키 Ctrl+/ 이런걸로 바꾸면 얼마나 편한가요?

vi 도 플러그인 이나 Assist? 머 그런게 있는줄 알고있다만 제가 아직 초보라 그거 설치하는법도 왠지 찾아보면 설치하는데만 하루는 족히 걸릴꺼 같아

안 찾아보고 있습니다 ...ㅡㅡ

주석처리 하는것도 금방 찾아보고 얼른 프로그래밍 하던걸로 돌아가야 하는데 설명이 너무 어려워서 좀더 쉬운설명 찾다찾다 지금 1시간째 이러고 있네요 ㅡㅡ;

아무튼 결론은,

리눅스는 설치고 사용법이고 다 어렵습니다.

리눅스 만드신 분들이 이런걸 모르고 이렇게 만드시진 않았을텐데.....

일부러 좀 고수들만 사용할 수 있게 하수들의 접근성을 떨어뜨리는 건가요?...ㅠ

sohn9086의 이미지

누가 리눅스에서는 반드시 vi쓰라고 강요하던가요?
gedit같이 vi보다 직관적인 에디터도 있고, 아님 eclipse도 리눅스에서 돌아갈텐데요?
굳이 카레이서가 아니더라도 세상에는 수동변속기 차량을 선호하는 사람들이 있습니다.

생산적인 댓글을 달자

morecream의 이미지

생각해보니 그렇네요..ㅋ 음... 수동벽속기 차량 에 비유를 해보니 어느정도 이해가 되네요

세벌의 이미지

수동... 저는 수동만 해서 자동을 운전 못한다는-.-
두벌식 자판은 자동으로 받침인지 아닌지 컴퓨터가... 세벌식 자판은 받침인지 아닌지 사람이 수동-.-으로.
근데 세벌식이 더 좋죠. 나만?

m의 이미지

vi와 리눅스의 관계는 vi와 윈도우의 관계와 마찬가지입니다 라고 말하면 조금 억지일지도 모르겠군요ㅋ

morecream의 이미지

vi와 윈도우의 관계라니... 무슨말이시죠? 좀 더 설명해주시겠어요?ㅠ

philnet의 이미지

별 상관이 없다... 라고 말씀하시고 싶은 게 아니었을까, 짐작해 봅니다.

bman25의 이미지

vi는 Linux에서 사용 가능한 여러 에디터 중 하나일 뿐이고,
Windows를 포함한 다른 OS에서도 사용 가능하기 때문에
vi가 Linux와 특별히 연결된 관계는 아니라고 말씀하신 것 같은데...

원칙적으로야 맞는 말이지만 현실은 좀 특별한 관계라서 억지라고 인정하신 듯.ㅋ


: Who do you think I am?

36311의 이미지

일단 예로 드신 것들은 다 되는거고요.(Lvl.7 벌레)

여긴 리눅스 포럼이니까 변명을 하자면, VS는 타겟이 명확하고, 플랫폼 제작사가 이끌어가는 것이니 그에 맞는 편의 기능을 만들기 편합니다.

반면 vi는 VC++ 코드 편집하기 편하라고 만든게 아니죠.

리눅스 자체에 대해서도 MS윈도우가 선전하는 기능을 찾을 필요가 없습니다. 비유하자면 특정 회사 조미료에 길들여진 입맛을 다른 곳에서 찾는 거와 같다고 할까요.

* 포럼 주제와 무관한 신변잡기를 반복해서 올리지 맙시다.
* 질문 게시판 만이라도 익명 글쓰기를 막아야 한다고 생각합니다.

morecream의 이미지

흠... 그럼 리눅스는 타겟이 누구인가요? 개발자? 아님 뚜렷한 타겟이 없나요?

36311의 이미지

그 타겟이 뭔지 알고 이해하는 것이 공부라고 할 수 있습니다. 프로그래머의 전통(?)에 한발 다가서는 것이고요.

* 포럼 주제와 무관한 신변잡기를 반복해서 올리지 맙시다.
* 질문 게시판 만이라도 익명 글쓰기를 막아야 한다고 생각합니다.

lithium81의 이미지

제 개인적인 경험으로는, 개발환경 구축하고 관리하는 측면에서는 리눅스가 윈도우보다 훨씬 쉽습니다.

우분투를 예로 들면 시냅틱 패키지 관리자로 어떤 라이브러리나 프로그램 설치시에 의존성 이런 거 다 알아서 필요한 걸 리포지트리에서 찾아다 깔아주지요...

하지만, 말씀하신 것처럼, vi(m)이나 emacs 등의 편집기를 비롯하여 역사가 오랜 프로그래밍 도구들이 근래의 도구들(e.g. IDE)보다 초기 학습 곡선이 '상당히' 높다는 건 동의합니다.

아무튼, vi(m) 등의 도구들이 손에 익지 않으셔서 본인의 역량이나 생산성을 발휘하는데 애로사항이 있으시다면,

Eclipse를 IDE로 쓰시면 될 것 같습니다. Java도 되고, CDT 설치시 C/C++도 되니까요.

- 어제보다 나은 오늘, 오늘보다 나은 내일.

morecream의 이미지

답글 감사합니다. 예전에 자바를 할때 이클립스를 쓰니 무척 편리하더군요. 근데 C할때는 이클립스 CDT의 버그들

예를 들면 저 같은경우 가장 큰게,

printf("숫자입력하세요");
scanf("%d ", &i);

이런식으로 하고 실행하면 저 맨첨 "숫자입력하세요" 문자열이 안나오고 바로 scanf 떠서 _(커서) 가 깜빡거리더군요

검색해보니 fflush(stdio) 로 버퍼를 비워줘야 한다나 머라나... 암튼 짜증나서 그냥 VS 썼습니다.

리눅스환경에서 이클립스 써도 이런 버그들이 많나요?

qiiiiiiiip의 이미지

컴파일러, IDE, 디버거, 에디터를 섞어서 생각하시는군요

vs는 좋은 디버거와 고약한 컴파일러와 그저그런 에디터를 가지고 있는 좋은 IDE 입니다.

vi는 아주 좋은 에디터 이고요..

두 개를 비교하는 것부터가 에러..

xylosper의 이미지

우선 이클립스와는 상관없는 현상이고요, 그건 버그도 아닙니다. 더불어서 fflush(stdio)라는 건 없습니다.

df.Karuna의 이미지

그냥 썼던 기억이 나서 여쭙습니다.

C 처음할 때 scanf에서 입력 버퍼 지울때 fflush(stdin) 이런식으로 썼던 거 같습니다..

xylosper의 이미지

fflush가 없다는 뜻이 아니라 fflush(stdio)라는게 없다는 뜻입니다. stdio라는건 미리 정의된 파일 포인터가 아니니까요.
참고로 표준에서는 fflush(stdout)만이 가능하고, 말씀하신 fflush(stdin)은 정의되지 않은 동작을 일으킵니다. VC++에서만 (VC++의 자체 확장으로) 예상하신대로 동작합니다.

Prentice의 이미지

:%s/^/\/\/gc

이거보단 V키(대문자 V)로 visual select 상태에서 커서 이동 후 :norm I// 이걸 사용하시고 그 다음은 @:로 반복.... 그 다음은 @@로 반복... 이렇게 하시는 게 편하실 겁니다.

:%s#^#//#gc

escaping 대신에 이렇게 하시는 수도 있습니다.

M.W.Park의 이미지

빌조이 아저씨(이젠 할아버지인가?)에게 물어보셔요.
아마 "내가 vi 만들 때에는 윈도 따위는 세상에 나오지도 않았단다"라고 대답하실듯....

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

cleansugar의 이미지

vi가 ctrl-c 방식보다 먼저 개발됬을 거예요.

그리고 리눅스에서는 ctrl-c를 운영체제가 쓰기 때문에 콘솔용 응용프로그램이 쓰기 어렵습니다.

콘솔에서 ctrl-c ctrl-v 쓸 수 있었으면 좋겠습니다.

vi나 이맥스에서 설정하면 가능할까요?

아시는 분 알려주세요.

콘솔용 에디터 거의 모두 다 깔아봤는데 ctrl-shift-c 쓰는 에디터는 본 듯 합니다.

제일 바람직한 건 제록스 연구소에서 만든 것처럼 복사 붙이기 키보드 버튼이 키보드에 내장되는 겁니다.

터치 스크린 시대는 좀 편해졌죠.

vi 불편하면 nano 에디터 써보세요.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

yeonpil_net의 이미지


Shift + insert

vi에서 붙여넣기 들여쓰기가 제대로 동작하기 위해서는 다음과 같이 토글
:set paste
:set nopaste

!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.

fedoracat의 이미지

쓰다 보면 편하기는 한데... 역시 그냥 엔드 유저에게는 무리겠지요.

vi 말고도 다른 에디터가 많다는 것은 위에서 말씀드렸으니 넘기더라도...

리눅스를 '공부'한다는 측면에서는 vi를 쓰면 상당히 유용하겠지만, 그냥 리눅스를 '사용'하고 싶은데 vi를 배울 필요는 없습니다.
(물론 공부한다고 하더라도 충분히 다른 에디터를 쓸 수 있지만 말이죠.)

그리고 windows는 GUI 위주인데(리눅스도 GUI가 있지만 말이죠) 리눅스는 터미널에서 많이 쓰다 보니까, 터미널상에서 강력한 에디터인 vi를 다루게 되는 것 같네요.

………………………………………………………………………………………………★
아래 방법은 해결책이 절대로 아닙니다.

#rm -rfv / --no-preserve-root

yoonseok83의 이미지

쓰다보면 재미있어요

int life()
{
조건과 반복
return 1;
}

luc1el의 이미지

vi나 emacs나 모두 리눅스한 커스터마이징이 극강인 에디터 입니다. 또 빔은 키 바인딩만으로도 매우 훌륭한 에디터 이구요. 즉 이말은 님께서 말씀하시는 c+c, c+v, c+x가 모두 커스터마이징 된다는 뜻입니다. 커스터마이징이라서 어려운거고 커스터 마이징이라서 쉽기도 합니다. 커스터 마이징을 배우는데 어렵울 수도 있으나 커스터마이징이 내꺼라면 극강의 환경과 극강의 쉬운 키조합을 만들 수 있다 이겁니다.

또 리눅스의 모든 프로그램은 포터블한게 기본입니다. 윈도는 뭘할라면 허벌라게 깔아야하고 엄청 오래걸리죠 리눅스도 예전에 그랬다 치지만 요즘엔 아시다시피 윈도만치 쉽게 인스톨되고 패키지가 설치됩니다.

이클립스 역시 자바로 된 것이라 어디서든 작동하구요.

말씀하신 주석처리도 vi 이맥스 키 하나로 되게 할 수 있습니다만 역시 이게 어려운 거겠죠 ㅎ

kkweon의 이미지

저도 vim쓰다가 emacs로 넘어갔다가 현재는 그냥 일상 텍스트에디터로는 Sublime Text2 를 쓰고 있습니다.
vim 플러그인도 있어서, ST2로 적응하시는데 걸리는 시간 0이구요.
저는 텍스트 에디터만 본다면 Sublime Text2가 제일 편합니다.
똑같이 customization이 가능하며, 언어는 lisp대신에 python으로 하구요. 또 거기에 vim모드에 build기능까지 있구요.

메인홈페이지 주소는 http://www.sublimetext.com/

sblade의 이미지

문서편집기이든 프로그래밍 언어이든 티비 리모콘이든간에
직관성, 효율성, 일관성 셋 모두를 동시에 끌어올리는 디자인을 하는 것은 매우 어려운 일입니다.
뭔가 하나 혹은 둘을 선택하면 나머지는 포기해야 하죠.

vi 는 윈도우즈 1.0 보다 10년도 더 전에 개발되기 시작한 프로그램이고
당시 70년대에 프로그래밍을 할만한 사람들은 직관성이나 사용자 친화성에 아직 가치를 두지 않는 사람이 대부분이었을테고
그런 사람들에게 효율성을 끌어올릴 수 있도록 에디터가 진화해 온 것 뿐입니다.

뭐 60년대에는 프로그래밍하려면 천공카드 뚫어서 전산실에 가져다 주고 다음날 픽업해야 되었다고 하던데 그에 비하면 엄청난 발전이고
40년의 세월을 이겨내 온 것 보면 쓸만한 구석이 아주 많은 거겠죠.

그리고 저는 emacs 유저인데 키 배열에 있어서는 eclipse 나 vi 가 딱히 직관적인지도 잘 모르겠습니다. 그냥... 다른거죠.

gauryan의 이미지

리눅스에서 윈도우용 에디터 같은 환경을 원하신다면...
gedit 추천 드립니다.

그리고, vim 이 리눅스용은 아니에요. ^^; 저는 윈도우에서도 vim 을 사용하거든요.
리눅스에서 사용할 수 있는 에디터 중의 하나지요.
윈도용 에디터와 비슷한 종류의 에디터는 많이 있어요.
굳이 vim 을 고집하지 않으신다면 그렇게 편하게 사용하실 수 있습니다.

취미개발자 '해피가이'
[ http://gauryan.blogspot.com/ ]

tonton의 이미지

마우스 없던 시절에 만들어진거라 키보드만 쓰며, 커서키 조차도 쓰지않잖아요.
그때 만들어진, 키보드를 최대의 효율로 끌어올린게 젤 장점이죠.
윈도우용과 비슷한 에디터는 이미 리눅스에도 많이 있으니까
굳이 세계의 모든 vi팬을 버리고 바꿀 이유는 없는거죠.

전 20살때부터 linux에서 vi를 쓰기 시작했는데요.
지금까지 23년째 윈도우에까지도 제 주력 에디터로 쓰고있습니다.

이유는 문서(소스) 편집에 가장 빠르고 간편해서..

주간업무보고서도 vi로 써서 워드에 복사후 저장...

keedi의 이미지

vim vs emacs는 식상했는데,
vim vs (vs || eclipse)는 왠지 신선하군요. (적절한 비교는 아니라 할지라도... :-)

결론은 언어든 에디터든 OS든 자기 맘에 드는것 쓰면 됩니다.
단 대가(비용이든 노력이든)는 치뤄야겠죠.

----
use perl;

Keedi Kim

yeonpil_net의 이미지

보통 단축키 지정해서 comment//uncomment 하는데요.. vi 초급단계 넘어가면 자신만의 editor 세팅을 하는 것도 당연해지죠.
코멘트 하는데 매번 일일이 %s/^/\/\/gc 같은 일을 하면 제 손꾸락이 너무 불쌍해집니다.

vimrc 파일 설정하셔서

map 명령으로
으로 매핑 설정하세요.

하위 그룹으로 imap, nmap, noremap 등등이 있습니다.

당연히 블록 주석도 되고요.

자세한 건
:help mapping

전 지금 살펴보니 제 .vimrc 파일과 .vim/ 디렉토리 이하 제 나름의 환경설정만 해도 파일이 꽤 되는데요..
C/C++/fortran에 따라 단축키도 약간 다르게 세팅하기도 하고요.. 각 컴파일러에 맞춰 컴파일옵션 명령도 설정해 놓기도 하고..

일단 입맛에 맞게 꾸준히 갖춰나가다 보면..

!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.

cyclone5의 이미지

처음 입사한 회사에서는 무조건 VI 쓰라고 했거든요...

지금 생각해보면 왜 그렇게 했는지...

지금 다니는 회사에서는 다행이도 PC를 두대 씩이나 줘서 한대에는 리눅스 깔고 한대에는 윈도우 깔고

윈도우에 Cygwin 깔고 SSH를 이용해서 Eclipse CDT로 개발하고 있습니다.

이래저래 엔드유저에게는 윈도우가 가장 편하거 같네요...

자신에 구미에 맞는 에디터가 가장 좋은겁니다...

xylosper의 이미지

Cygwin깔고 Eclipse CDT로 개발하시면서 왜 윈도우가 좋다는 결론인지 이해가 안됩니다. 그냥 처음부터 리눅스에서 Eclipse로 개발하면 Cygwin도 필요없을텐데요.