임의의 언어(또는 스크립트)에 문법강조(Syntax Highlighting) 기능을 제공하는 에디터는?

제목과 같습니다.

사실 제가 사용하는 소프트웨어가 스크립트 방식을 지원하기 때문에 일련의 명령어들을 미리 규칙에 맞게 작성해 놓으면, 반복적인 업무에 무척 도움이 됩니다.

그런데 이 소프트웨어가 제공하는 스크립트 편집환경이 거의 메모장 수준이라서, 코드의 양이 많아지면 정말 정신이 하나도 없습니다. 만줄 이상 되는 코드를 메모장에서 디버깅 한다고 생각하면…

그래서 결국 다른 에디터를 찾기 시작했습니다. VIM에서 지원된다더라는 소식을 듣고 열심히 검색에 검색을 했는데, 정말 어렵더군요. 그래도 나름 VIM는 좀 쓴다고 생각했었는데, 완전 우물안의 개구리였습니다.

여차여차 해서 필요한 기능을 흉내내기 정도 구현했습니다만, 정작 중요한 기능들을 집어넣으려다보니 정규식에서 다시 막히는군요.

예전에 정규식 좀 잘 공부해둘껄…

흠…

혹시 vim(또는 Emacs) 말고, 좀더 유저 프랜들리(?)한 에디터가 있으면 좀 소개 부탁드립니다.

감사합니다.

음…유저 후렌들리하고 강조 기능이 있는 텍스트 에디터는 제가 아는 한은 gedit이 있습니다.

nano도 C나 펄 등에 대해서는 문법 강조 기능을 제공하는 것으로 알고 있습니다.
(별도 플러그인을 통해서…였던가)

음… 질문의 핵심이 제대로 전달되지 못한 모양입니다.

단순히 일반적인(C, C++, java, php, etc) 언어에 대한 문법강조 방법을 물어본 것은 아닙니다. ^^;

아주 유니크한, 그래서 530여 가지 언어의 문법강조를 지원하는 vim 조차도 직접적으로는 도움이 안되는 그런 스크립트 언어를 사용중입니다.

어떻게 생겼는지 살짝 본다면…

[code:3pdsc2vj]////////////////////////////////////////////////////
// Magnet circuit Design - Seungje Choi //
////////////////////////////////////////////////////

ANALYSIS OPTION=ACTIVATE PROGRAM=TOSCAMAGN
ANALYSISDATA OPTION=SET PROGRAM=TOSCAMAGN LINEAR=NO NLITERTYPE=NEWTON NITERATIONS=21 TOLERANCE=1.0E-03 HX=0 HY=0 HZ=0 RHS=ADAPTIVE POTENTIALCUT=YES
BACKGROUND OPTION=SET SHAPE=BLOCK SCALEX=4 SCALEY=4 SCALEZ=5 RXY=NONE RYZ=NONE RZX=NONE ROTZTYPE=NONE BCRIGHT=NORMMAGN BCLEFT=NORMMAGN BCTOP=NORMMAGN BCBOTTOM=NORMMAGN BCFRONT=TANGMAGN
BCBACK=TANGMAGN

// B-H curve
BHDATA OPTION=LOAD LABEL=1018 FILE=‘G:/BH curve/1018.BH’
BHDATA OPTION=LOAD LABEL=‘NdFeB N50M T35’ FILE=‘G:/BH curve/NdFeB N50M_temperature_35_new.bh’
BHDATA OPTION=LOAD LABEL=‘NdFeB N50M tangential’ FILE=‘G:/BH curve/NdFeB N50M_X_kriss.bh’
BHDATA OPTION=LOAD LABEL=PL9 FILE=‘G:/BH curve/PL9.BH’

// If non-linear convergence of the solution is slow, try using an asymmetric matrix by setting the variable #USEFULLMATRIX to 1.
// VARIABLE OPTION=ModelDimension NAME=#USEFULLMATRIX VALUE=1 DESCRIPTION=tip

// Cell parameter
// Level
VARIABLE OPTION=ModelDimension NAME=#Lv_Yoke VALUE=90 DESCRIPTION=Level
VARIABLE OPTION=ModelDimension NAME=#Lv_Column VALUE=80 DESCRIPTION=Level
VARIABLE OPTION=ModelDimension NAME=#Lv_ColumnTip VALUE=83 DESCRIPTION=Level
VARIABLE OPTION=ModelDimension NAME=#Lv_Magnet VALUE=100 DESCRIPTION=Level[/code:3pdsc2vj]
뭐 이렇습니다.

여기서 첫번째 단어가 명령어이고, 등호(=) 왼쪽이 옵션항목, #XXX는 변수명입니다.

이런 코드에 문법강조를 하고 싶은거죠. VIM에서 syntax/mysyntax.vim을 만들어 사용중입니다만, 이건 너무 어렵네요…

헐… 현존하는 프로그래밍 언어의 종류가 530여가지나 되는 줄도 몰랐습니다.
(수십 가지 넘는 줄은 알고 있었지만)

거기에도 속하지 않는 언어라면 무슨 언어예요, 저거…? :o

그러고 보니 nano도 임의로 문법 강조를 설정할 수 있나 보던데…

http://www.linux.co.kr/home/lecture/ind ... code=10927

[quote="포풍저글링":h3nv4g29]그러고 보니 nano도 임의로 문법 강조를 설정할 수 있나 보던데…

http://www.linux.co.kr/home/lecture/ind ... code=10927[/quote:h3nv4g29]

아마 vim과 비슷하지 않을까… 싶네요. 어차피 정규식으로 강조할 단어 등을 검색해내는 것이 관건인지라…

혹시나 이걸 간단하게 할 수 있도록 GUI 식으로 만들어 놓은 것이 있지 싶어서 글을 올려봤습니다.

첨부한 화면은 vim에서 문법강조 기능을 조금씩 집어넣은 상태입니다.
숫자부분을 강조해야 하는데, 이부분이 좀 어렵네요.

c.vim을 샘플삼아 해보고 있습니다.

vim뿐만 아니라 gedit도 custom syntax highlight가 되는걸로 알고 있습니다.
vim과 다르게 xml로 되어있던걸로 기억합니다.
물론 둘다 정규표현이니 그다지 큰 차이는 없었던걸로 알고 있고,
vim같은 경우는 windows에서 사용가능하니 gedit보다 용이하지 않을까 싶습니다.

또, vim같은 경우 syntax highlight로 fold (주석이나 중복되는 부분을 접는것…?)기능도
지원되어서 꽤 괜찮은것 같더군요.
혹시 gedit에서도 이런것까지 되는지 궁금하던데…

MS윈도에서 사용하는 울트라에디트나 아크로에디트에서는 사용자가 강조에 관련된 내용을 만들거나 수정할 수 있는데… gedit도 그런 것이 있지 않을까요? 그렇다면 누군가가 만들어놓은 강조 관련 파일도 있을 듯 한데…

[quote="coreanlibero":8lb4e0cd]MS윈도에서 사용하는 울트라에디트나 아크로에디트에서는 사용자가 강조에 관련된 내용을 만들거나 수정할 수 있는데… gedit도 그런 것이 있지 않을까요? 그렇다면 누군가가 만들어놓은 강조 관련 파일도 있을 듯 한데…[/quote:8lb4e0cd]
사실 작업환경은 MS윈도우즈이지만, 익숙한 VIM 또한 윈도우즈를 지원하기 때문에 VIM에서 해결책을 찾으려고 노력중입니다.

그리고 우분투 사용자 모임에서 윈도우즈 어플리케이션을 물어보는 것도 그렇잖아요? :o

일단 VIM을 이용해서 원하는 동작을 하도록 했습니다만, 사람 욕심이라는게 "조금더~ 조금더~" 이기 때문에 고생중입니다.

[color=#FF0080:8lb4e0cd]VARIABLE[/color:8lb4e0cd] [color=#40BF40:8lb4e0cd]OPTION[/color:8lb4e0cd]=PARAMETER [color=#40BF40:8lb4e0cd]NAME[/color:8lb4e0cd]=#Mag_B_y [color=#40BF40:8lb4e0cd]VALUE[/color:8lb4e0cd]=0 [color=#40BF40:8lb4e0cd]DESCRIPTION[/color:8lb4e0cd]=‘Magnet X’
[color=#FF0080:8lb4e0cd]VARIABLE[/color:8lb4e0cd] [color=#40BF40:8lb4e0cd]OPTION[/color:8lb4e0cd]=PARAMETER [color=#40BF40:8lb4e0cd]NAME[/color:8lb4e0cd]=#Mag_C_x [color=#40BF40:8lb4e0cd]VALUE[/color:8lb4e0cd]=(#W_MagBlock)*(#N_MagBlock-0) [color=#40BF40:8lb4e0cd]DESCRIPTION[/color:8lb4e0cd]=Magnet

이런 코드를 아래처럼 만들고 싶은데 말입니다.

[color=#FF0080:8lb4e0cd]VARIABLE[/color:8lb4e0cd] [color=#40BF40:8lb4e0cd]OPTION[/color:8lb4e0cd]=PARAMETER [color=#40BF40:8lb4e0cd]NAME[/color:8lb4e0cd]=#Mag_B_y [color=#40BF40:8lb4e0cd]VALUE[/color:8lb4e0cd]=[color=#0000FF:8lb4e0cd]0[/color:8lb4e0cd] [color=#40BF40:8lb4e0cd]DESCRIPTION[/color:8lb4e0cd]=‘Magnet X’
[color=#FF0080:8lb4e0cd]VARIABLE[/color:8lb4e0cd] [color=#40BF40:8lb4e0cd]OPTION[/color:8lb4e0cd]=PARAMETER [color=#40BF40:8lb4e0cd]NAME[/color:8lb4e0cd]=#Mag_C_x [color=#40BF40:8lb4e0cd]VALUE[/color:8lb4e0cd]=color=#0000FF:8lb4e0cd[/color:8lb4e0cd]*color=#0000FF:8lb4e0cd[/color:8lb4e0cd] [color=#40BF40:8lb4e0cd]DESCRIPTION[/color:8lb4e0cd]=Magnet

값(숫자)에 색깔 넣는 것이 은근히 힘드네요. 변수 또는 주석, 스트링 등에 포함된 숫자까지도 같이 변해서…

[quote="seungje":384aveox]혹시 vim(또는 Emacs) 말고, 좀더 유저 프랜들리(?)한 에디터가 있으면 좀 소개 부탁드립니다.[/quote:384aveox]
옆에서 와이프가 그러는군요. 걍 [color=#0000FF:384aveox]노트패드[/color:384aveox] 쓰라고…

노트패드… 정말 유저 프랜들리하게 지원하는군요.
[url:384aveox]http://notepad-plus.sourceforge.net/uk/site.htm[/url:384aveox]