Sublime Text
[clearfix]
1. 개요
크로스 플랫폼 텍스트 에디터. 주로 프론트엔드 프로그래밍에 사용된다. 요즘은 Node.js 같이 백엔드 언어를 작성할 때 쓰는 경우도 많다. 비교적 최근에 생긴 에디터라서 그런지 포트란 등의 구세대 언어를 사용할 경우에는 귀찮아질 수 있다.
GUI는 탑다운 메뉴 말고는 없다시피하고 커맨드 파레트 등을 이용하면 아예 마우스 없이도 쓸 수 있다. 심지어 옵션 설정도 그냥 JSON 파일이다. 마우스 사용을 지양하여 초스피드의 생산성을 추구하는 텍스트 에디터.
플랫폼 별로 네이티브로 동작하도록 되어 있어 속도가 상당히 빠른 편이며, 경쟁 제품인 VS Code와 비교해 봐도 여전히 속도 부분은 우세하다. 또한 Python 코어부분을 내장하고 있어 Python을 어느 정도 알고 있다면 손쉽게 매크로, 플러그인 등을 확장하여 자신만의 에디터 환경을 구축할 수 있다. 기본적으로 키 바인딩 기능도 제공하며, 비활성화된 vintage라는 패키지를 활성화 시키면 부분적으로 vi와 비슷하게 동작한다. vi와 더욱 비슷하게 동작하는 플러그인 Vintageous이 있지만 거의 개발이 중단된 상태이며, 그냥 vi를 쓰는 편이 더 낫다.
초기에는 한때 맥에서 유명한 에디터인 Textmate의 각종 XML 방식의 설정 파일을 그대로 사용할 수 있었으며(현재도 사용가능함), 유사한 모습을 보였지면, 점차 독자적인 기능과 3버전 부터는 YAML 1.2 방식의 독자적인 설정파일로 더 편하게 작성이 가능하며, 실행속도까지 좋아졌다.
그 외에 멀티 커서 에디팅이나 코드 네비게이션, 팔레트 기능들은 다른 에디터에서도 플러그인 혹은 기본 기능으로 제공할 정도로 인기 있는 기능. 이러한 기능들은 Atom이나 VS Code 등 최근에 나온 에디터들은 대부분 채택하고 있다. 이 에디터 이후 vi, Emacs 등에서도 플러그인으로 비슷한 기능을 구현했다.
가격은 2017년 10월 31일 기준 80$이다. 구매하지 않더라서도 모든 기능을 무제한으로 사용가능하지만, 저장을 할 때 가끔씩 구매를 하라는 팝업이 뜬다. 개인 라이선스는 3년간 유효하며 그 이후는 업그레이드 구매가 필요하다.
2. 기본적으로 지원하는 언어
ActionScript, AppleScript, ASP, Batch, C, C\#, C++, Clojure, CSS, D, Erlang, Go, Groovy, Haskell, HTML, Java, JavaScript, JSP, JSON, LaTeX, LISP, Lua, Makefile, Markdown, MATLAB, Obj-C, OCaml, Pascal, Perl, PHP, Python, R, Rails, RegEx, Ruby, Scala, ShellScript, SQL, TCL, Textile, XML, YAML 등 현대에 주로 사용되는 언어들은 대부분 기본 지원한다. 반대로 어셈블리어, Ada, FORTRAN 등은 지원하지 않는다.
심지어 JPG나 PNG 같은 그래픽 포맷도 디코딩되어 열리고, 다른 텍스트 에디터에서는 뻗어버리는 수백만 줄짜리 CSV 등의 파일도 거뜬히 읽어낸다.
기본적으로 지원하지 않더라도 플러그인으로 확장할 수 있다. 또한 지원한다는 것은 어디까지나 소스 하이라이팅과 자동완성, 자동 인덴트 정도로 IDE 수준의 개발 환경은 기본적으로 지원되지 않는다.
예를 들어 패키지 인스톨러를 이용하여 기능들을 설치하면 ARMA 3 게임의 모드를 만드는데 사용되는 특수목적 언어인 SQF등의 언어들도 하이라이팅 기능을 이용할 수 있으며, 파이썬등의 일부 언어들은 컴파일러 또한 설치할 수 있다.
3. 장점
- 크로스 플랫폼: 윈도우, 리눅스, 맥을 지원한다. 리눅스의 경우는 GTK 기반이다.
- 가벼움 : 기존의 텍스트 에디터, IDE에 비해 가벼운 편이다. OS별로 GUI 툴킷이 따로 있어 크로스 플랫폼 때문에 생기는 성능저하가 적은 편이다. 특히 Electron을 사용한 Atom, VS Code 등의 텍스트 에디터들과 비교해보면 굉장히 쾌적하다는 것을 느낄 수 있다.
- 강력한 탐색/자동완성 : 이전의 에디터들과 다르게 자체적으로 Fuzzy Search Engine을 구비해두고 있는데, 생산성을 굉장히 높이는 데에 일조하고 있다. 타 에디터들의 자동완성이나 탐색에 비해 훨씬 적은 타이핑으로 문제를 해결할 수 있기 때문이다. 예를 들어서 NamuWikiDatabase를 자동완성 하는 경우 타 에디터는 앞글자부터 입력하다 완성이 되기에 NamuWiki 정도로 시작하는 단어가 많으면 시간이 더욱 걸린다. 반면 Sublime Text의 경우 NWkD 정도만 입력해도 거의 유일하게 결정되기 때문에 훨씬 간편하다.
- Python 기반의 해커블 에디터 : 주로 Python을 이용하여 스크립트를 작성할 수 있다. 플러그인도 이로 작성하고 자주 사용되기 때문에 Python을 배워두면 도움이 많이 된다.
- 좋은 가독성: 바탕색이 검은색이라서 눈이 아프지 않고, 함수 블록이 알록달록해서 보기 좋다.
4. 단점
- IME 지원 문제: 윈도우 한글 IME를 잘 지원하지 않아서, 한글 입력시 한 글자 늦게 입력되는 현상이 있다. 일본에서도 같은 증상이 일어나기 때문에 IMESupport라는 플러그인이 만들어져있다. 설치법은 문서 하단의 세팅 문단 참조.
리눅스의 경우 입력기별로 되는 것도 있고 안 되는 것도 있다. fcitx의 경우에는 중국에서 해결법을 찾았다. 맥의 경우는 정상적으로 작동한다.
- 클로즈드 소스: 실제 사용에서는 크게 문제가 없지만 오픈 소스가 아니라서 불만이 있는 경우가 적잖게 있는 듯하다. 그러다 보니 Lime Text 같은 유사한 형태와 기능을 가진 오픈 소스 에디터도 만들어지고 있다.[1]
5. 기능
5.1. Goto
특정 위치로 이동하는 기능.
기본적으로 파일 이름의 일부를 쳐서[2] 열 수 있고, @로 특정 구문을 찾거나 #으로 검색, :으로 라인 넘버까지 지정할 수 있다.
'''tp@rf'''라 치면 text_parser.py의 read_file '''함수'''를 찾아준다거나, '''tp#fn'''을 치면 function을 찾아준다거나, '''tp:100'''을 치면 파일의 100번째 줄이 열리는 식.
'''Ctrl+P''' 키를 누르면 Goto Anything이 열리며 Goto Symbol이나 Goto Line 등의 단축키도 따로 배정되어 있으나 Goto Anything에서 전부 가능하기 때문에 잘 사용되지는 않는 듯 하다.
이외에
ctrl + r 특정 함수 이동
ctrl + g 특정 라인 이동
ctrl + l 특정 구문 선행 탐색(먼저 나오는 대상을 찾아서 보여준다.)
등이 있다.
5.2. 명령 팔레트
명령어로 Sublime-Text의 주요 조작을 할 수 있게 해주는 부분. 패키지 매니저를 설치했다면 이 곳을 통해 사용할 수 있다.
'''Ctrl+Shift+P''' 키를 눌러 열 수 있다.
5.3. 다중 선택
[image]
단축키 '''Ctrl+D'''로 커서 위치의 동일한 단어를 선택하고, 동시에 수정 가능하다. '''Ctrl+마우스 선택''' 혹은 '''Ctrl+F'''로 검색해도 된다.
'변수명'같은 중복되는 단어 수정에 편리하다.
대소문자를 구별한 채로 Ctrl+d를 하고 싶다면 Ctrl+f를 킨 다음, 대소문자 구별을 킨 다음, 다중선택할 단어 위에 커서를 올려 놓는다. 그런 다음 Ctrl+d를 누르면 대소문자를 구별하여 다중선택이 된다. Ctrl+u로 마지막에 선택한 걸 취소 할 수 있다.
페이지 전체 단위로 특정 단어를 선택하고 싶다면 ctrl+f에서 특정 단어를 입력한 다음 find all버튼을 누르거나, 특정 단어를 커서에 올려놓은 다음에, alt+f3를 누르면 전체선택이 된다.
5.4. 기타
- 전체화면 모드: F11 키를 누르면 전체화면 모드, Shift+F11 키로 상단 메뉴 외 모든 UI를 가릴 수 있다.
- Python 콘솔: Sublime Text 내에서 Ctrl+` 키를 눌러서 Python을 실행할 수 있으며, sublime의 각종 설정 값을 확인 변경, 혹은 플러그인을 개발한다면 여기서 다 테스트해 볼 수 있다.
- 매크로: 특정한 작업을 기록해 두었다가 실행할 수 있다.
6. 기본 세팅
6.1. 패키지 컨트롤
서브라임 텍스트를 원활하게 사용하기 위해서는 먼저 패키지 컨트롤(Package Control)을 설치하여야 한다. 간단하게는 테마부터 C++11 등 기본적으로 지원하지 않는 언어의 Syntax Highlight 기능 등 다양한 플러그인을 명령어 한 줄로 추가할 수 있게 도와준다. 사실상 필수적인 플러그인. Will Bond가 제작하였다.
설치 방법은 다음과 같다. 먼저 https://packagecontrol.io/installation에 접속한다. 페이지에 있는 명령어 코드를 복사한다. 서브라임 텍스트에서 Python 콘솔(Ctrl + `)을 열고 코드를 붙여 넣고 실행한다. 설치가 완료되고 나면 명령어 팔레트(Ctrl+Shift+P)에 Package Control:로 시작하는 메뉴가 추가된 것을 볼 수 있다. Package Control:Install Package를 선택하면 플러그인 목록이 뜨며, 여기서 설치하고자 하는 플러그인의 이름을 검색하고 엔터를 누르면 바로 설치된다.
3211 버전 기준으로 Sublime Text 설치 후 명령어 팔레트에 install 이라고 입력하면 Install Package Control 명령이 보이고 이것을 선택하면 자동으로 Package Control이 설치된다.
6.2. IMESupport
앞서 서술했던 한글 입력시 지연 문제를 해결하기 위한 플러그인. 다만 메모장이나 워드처럼 자연스럽게 한글을 입력할 수 있는 것은 아니다. 화면 모서리에 뜨던 것이 커서 옆에 뜨게되었다는 차이 밖에 없다. 그래도 없는 것보다는 훨씬 낫다. Find나 Replace 등에선 적용이 안된다.
Windows10 이하버전에서만 적용된다.
3211 버전 기준 IMESupport 설치 안한 상태에서 화면 모서리가 아닌 커서 바로 아래에 입력중인 한글이 표시된다.
IMESupport 사용시 Find 입력창에서 입력중인 글자가 Find 창이 아닌 편집창 커서쪽에 표시되는 문제가 있으므로 써보고 기본상태와 IMESupport 중에 선택하면 된다.
6.3. ConvertToUTF8
서브라임 텍스트에서는 기본적으로 EUC-KR을 비롯해 중국어, 일본어 인코딩을 지원하지 않는다. 이 플러그인을 설치하면 File 메뉴 하위에 Set File Encoding to 메뉴와 Reload with Encoding 메뉴에 EUC-KR 등이 추가되어 보다 편리하게 열람할 수 있다. UTF-8로 전환도 가능한데, 일부 스크립트 언어 등에서 한글이 깨질 때 UTF-8로 전환해도 문제가 해결되지 않을 경우에는 메모장으로 열어서 '유니코드' 인코딩으로 저장해주어야 한다(...)
[1] Lime Text는 현재 백앤드는 개발이 많이 진척된 상태지만 프론트엔드의 개발은 상당히 부진하다.[2] Fuzzy Search라고 하는데 시작부터 글자 하나 틀리지 않고 일치해야 하는 기존 검색에 비해 맨 첫 글자와 이후에는 순서만 맞으면 사이사이에 다른 글자가 들어가도 된다.