본문 바로가기

Programming/일반 프로그래밍

무료이면서도 좋은 소스코드 에디터 - JEdit

Visual Studio, Eclipse, Python IDLE, 메모장 등등 소스코드를 편집하기 위한 툴은 어떤것을 쓰더라도 상관이 없다. 하지만 각 언어마다 종류가 다르고 여러가지 기능 때문에 무거운 경우가 대부분 이다.

그렇기 때문에 간단하게 소스코드만을 수정하거나 간단한 프로그램을 짜 볼 때에는 가벼운 프로그램을  선호 하게 된다.

가벼운 소스코드 에디터의 가장 간단한 기능은 Syntax Highlighting 기능이다. 하지만 Syntax Highlighting만 있는 에디터를 사용 하다 보면 몇가지 간편한 기능이 더 있었으면 하는 바람이 생기기 마련이다.

유료 툴 중에는 에딧플러스가 국내 개발자가 만든 프로그램임에도 세계적으로 많이 쓰이는 듯 하다. 하지만 필자는 무료로 가볍게 쓸 수 있는 툴을 원하기 때문에 한동안 여러 무료 툴 들을 실험해 보았다. 무료로 계속적으로 사용 할 수 있는 툴에는 아크로에디터, PsPad,  sublime text2, 데이지 에디터, JEdit, notepad++, SciTE 등이 있다. 

이 무료 에디터들 모두가 여러 기능들을 제공하고 편하긴 하지만 필자가 원하는 기능 들 중 한두가지씩 빠진 경우가 대부분이거나 하여 처음에는 이 에디터, 저 에디터를 사용해보며 옮겨 다니게 되었다.

 

필자가 처음으로 정착하려 했던 에디터는 PsPad 였었다. 외국프로그램이지만 한글 패치가 있어서 한국어로도 쓸 수 있을 뿐 더러 gcc에디터나 vc 컴파일러 등을 연결시켜 놓으면 콘솔에서 명령어를 일일이 입력하여 컴파일 하지 않아도 바로바로 컴파일 하여 확인 해 볼수 있는 점이 좋아서 였다.

그런데 한참 쓰다보니 자동 들여쓰기가 두줄 내려가면 안된다거나, 자동 짝 괄호가 약간 불편하다거나 하는 사소한 문제가 생기게 되어 다시 다른 에디터를 찾게 되었다. 

 

그렇게 찾은것이 sublime text2 였다. 윈도우 뿐 아니라 리눅스에서도 사용 할 수 있을 뿐 더러 기본 테마 자체도 이쁘고 vc컴파일러는 아니지만 gcc 컴파일러를 연결 하여 바로 컴파일 해 볼 수 도 있었다. 게다가 자동 짝 괄호 기능이 무척 마음에 들었는데 무의식 적으로 닫는 괄호(오른쪽 괄호)를 입력 했을 때 자동으로 생성된 닫는 괄호가 있을 경우 자동으로 괄호가 하나만 남게 되어 무척 편했다.(괄호 뿐 아니라 따옴표, 쌍따옴표도 같은 기능으로 동작 한다.) 그런데 안타깝게도 인코딩 형식이 ansi 일경우 한국어를 지원하지 않는다......... UTF-8로 하면 되지만 gcc를 이용하여 c나 c++을 컴파일 할 경우 한국어가 제대로 표기 되지 않아서 ansi를 써야 하는데 이게 문제가 되었다. 그래서 다시 좋은 소스코드 에디터를 찾아 방황하게 되었다......

 

 



[JEdit]


그러다가 결국 정착하게 된것이 JEdit 이다.

http://www.jedit.org/index.php 


 

 

GUI 까지 모두 Java로 만들어 졌기 때문에 윈도우, 리눅스, 유닉스등등 java 가상 머신이 돌아가는 환경이라면 어디든 설치, 사용이 가능하다는 장점이 있다. 단, Java가 설치 되어 있어야 한다.(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)

 

윈도우를 사용 중이라면 .jar 파일보다는 window용 installer를 받아서 설치하게 되면 파일을 마우스 오른쪽 버튼으로 클릭했을 때 나오는 컨택스트 메뉴에 JEdit으로 열기를 등록 시킬 수 있다.

 

이 에디터의 장점은 플러그인 메니져가 내장 되어 있어서 필요한 플러그인을 바로바로 검색해서 다운, 설치가 가능하다는 점이다. 




 

 

 

게다가 고급 소스코드 에디터의 꽃인 multiple selection과 vertical selection이 기본 기능이다.

Edit 메뉴에서 마우스로 토글 해도 되고 ctrl + \ 와 alt + \로 토글 가능 하다.






 

 

또 다른 기본 기능으로 Hyper search 라는 것이 있는데 변수나 함수의 선언부, 정의부 등으로 찾아갈때 유용한게 쓰인다.




 

 

게다가 메크로 기능도 있다.


 

 


기본 적으로 아주 많은 언어의 Syntax Highlighting을 지원하지만 새로운 언어에 관해 추가 하고 싶거나, 기존의 설정을 수정하고 싶을 경우도 있을 수 있다. 

먼저, 새로운 언어의 설정을 추가 하고 싶다면 윈도우 OS 기준으로 C:\Users\계정명\AppData\Roaming\jEdit\modes에 있는 catalog 파일을 메모장이나 JEdit으로 열어서 추가 하면 된다. 추가하는 형식은 <MODE NAME="assembly-sparc" FILE="assembly-sparc.xml" FILE_NAME_GLOB="*.s" /> 형식이며 MODE NAME 은 표시 될 이름이며, FILE 은 각종 예약어들이 저장 된 파일 명, FILE_NAME_GLOB는 이 구문 강조 형식으로 열 파일의 확장자나 이름을 등록 해 놓으면 된다. 그 뒤 modes 폴더에 FILE에서 설정 한 이름의 xml 파일을 작성하여 추가 하면 되는데 JEdit이 설치 된 폴더의 modes에 가면 기본 구문강조 형식들의 xml 파일들이 있으므로 이를 열어보고 작성하면 된다.





같은 방식으로 기본으로 설정 되어 있는 구문강조들의 예약어, 등록할 확장자 등을 수정 하고 싶다면 JEdit이 설치 된 폴더 하위의 modes 폴더에 있는 catalog 파일과 각 설정의 xml 파일들을 수정 하면 된다.




Folding도 가능하다(코드 정의부의 내용을 괄호 또는 들여쓰기를 기준으로 접어서 한눈에 보여줌)

Utilities - options - Editing - Folding mode 를 indent로 해주면 들여쓰기를 기준으로 folding 화살표를 보여주고, explicit으로 하면 중괄호 세개({{{)를 기준으로 folding 화살표를 보여 준다.






이 외에도 많은 것들의 설정(메뉴바를 수정 하는 등)을 할 수 있으며 많은 기능을 제공 하므로 에디터의 이곳저곳을 누비며 돌아다니면 사용자 맞춤형 에디터로 설정을 해 놓을 수 있다. 한가지 단점은 한글 패치가 없어서 영어로 써야 한다는 것 이지만 개발자라면 쓰는 용어자체가 영어용어이기 때문에 딱히 문제 될 것은 없다. 

 







[플러그인]


필자는 현재 8개의 플러그인을 다운받아서 사용중이다. 

플러그인은 Plugin Manager의 Install 화면에서 검색하여 설치가 가능 하며 자신이 설치 한 플러그인은 Manage 화면에서 검색/삭제가 가능하다.


 

 

 

또한 Plugin Option 화면에서 각 플러그인의 옵션을 설정 할 수 도 있다.


 

 

 

다음은 필자가 현재 사용중인 플러그인 들이다.

 

1. QuickNotepad

 

이 플러그인은 따로 다운받은 것이 아닌, JEdit설치시 존재하던 플러그인 이었는데 나름 유용하게 쓰이고 있다. 기능은 간단한 메모장화면을 하나 더 띄워서 클립보드에 여러가지를 저장 해 놓고 복사 붙여 넣기 하듯이 사용이 가능하다.


 

 

 

 

2. BufferTabs

 

JEdit으로 여러가지 파일을 열었을 때 각 파일들 간의 스위칭은 탭 형식이 아닌 메뉴 형식이라서 탭형식의 브라우져 사용에 익숙해진 사람들에겐 무언가 불편하고 답답하게 느껴진다. 이 플러그인은 탭을 생성 해주어 탭 형식으로 파일을 스위칭 할 수 있게 해주는 플러그인이다.

 

 

3. Console

 

필자가 아주 유용하게 사용 중인 플러그인이다. JEdit 밑에 콘솔창을 켤 수 있으며, 이 콘솔창에서 직접 명령어를 입력하여 소스코드의 컴파일, 실행 등을 할 수 도 있지만, 미리 입력 되어 있는 명령어나 사용자가 입력 한 명령어를 클릭 또는 단축키 만으로도 실행 되게 하여 간단하게 소스코드를 컴파일 및 실행 해 볼 수도 있는 아주 좋은 기능이다.


 

 

 

 

그런데 필자의 컴퓨터에서는 기본으로 들어있는 gcc컴파일 명령어가 오류가 나서 gcc 컴파일러에 대해서는 Plugin Option 에서 compiler의 명령어를 use custom command 로 g++ -o $f.exe $f 를 입력하여 사용 중이다. 이 때 interpreter에는 $f.exe를 입력 해두면 compile current buffer 명령 실행 시 생성 된 exe 파일을 run current buffer로 실행 시킬 수 있다. 

같은 방식으로 html 파일은 interpreter의 use custom command 를 $f 로 입력 해 두면 html 파일에대해  run current buffer 명령으로 바로 브라우져에서 실행이 가능 하다.


 

 

이 외에 java, python 등은 기본으로 들어있는 명령어로 따로 옵션을 건드릴 필요 없이 컴파일 및 실행이 아주 잘 된다.


추가로, 에디터 내에서 마우스 우클릭시 나오는 컨텍스트 메뉴에 compile current buffer 와 run current buffer를 등록해 두거나, ctrl + f5, ctrl + f9 등의 단축키를 지정 해 두면 아주 편하게 컴파일 및 실행을 해 볼 수 있다.



 

 

4. TextAutocomplete

 

자동 완성 기능으로 변수, 함수 뿐 아니라 일정 길이 이상의 단어들에 대해 앞의 몇 글자를 입력하면 드롭다운 메뉴가 떠서 선택만으로 입력이 가능 한 기능이다. Eclipse나 Visual Studio를 사용해 보았다면 비슷한 기능을 경험 해 본적이 있을 것이다.


 

 

이 플러그인을 설치 후 plugin option에서 start autom. new buffers 를 체크 해 주면 새로 열리는 파일 들에 대해 자동으로 정보를 수집해 놓게 된다. 또 같은 창에서 정보를 수집할 단어의 길이를 설정 해 줄 수 있다. 예를 들자면 최소 4개 이상에서 최대 7개 이하의 단어만 정보를 수집 해 두도록 하면 이 외의 단어들은 드롭다운 메뉴에 나타나지 않게 된다.

 

 

5.JDiff Plugin

 

이 플러그인은 화면을 반으로 나눠서 두파일을 열어서 비교를 할 수 있는 플러그인이다. 


 

 

 

6. Hex Edit

 

이 플러그인은 헥스코드 에디터를 열 수 있게 해주는 플러그인 이다.


 

 

7. Minimap


이 플러그인은 화면 왼쪽이나 오른쪽에 코드의 미니맵을 보여주는 플러그인으로 sublime text2에서 기본기능으로 볼 수 있는 기능이다.



 

 

필자가 위에서 8개의 플러그인을 설치 해서 사용중이라고 했는데 7개 밖에 설명 하지 않은 이유는, 나머지 플러그인은 위의 플러그인을 설치하면 자동으로 선택 되어 설치 되는 플러그인이기 때문이다. 

 

추가로 자동 닫기 괄호 생성이나 자동 따옴표 생성을 하고 싶으면 FirstMate 플러그인을 설치 하면 된다.(기본으로 있는 기능인 Abbreviation 을 이용해도 되지만 약간 불편하다.)



 

마지막으로 여러 컴퓨터에서 같은 환경으로 작업을 하고 싶거나 컴퓨터를 포맷 하게 될 경우에는 미리설정했던 설정들과 설치 한 플러그인들을 한번에 백업 해 놓고 다시 붙여넣기 하여 그대로 사용이 가능한데 윈도우OS를 기준으로 C:\Users\계정명\AppData\Roaming 에 있는 JEdit 폴더만 통째로 복사하였다가 다시 같은 장소에 붙여넣기하면 모든 플러그인과 설정이 그대로 복원 된다.