ㅤ ㅤ ㅤ ㅤㅤ 텍스트 에디터 (문서 편집기) | ||
{{{#!wiki style="margin:0 -10px -5px; min-width:300px; min-height:calc(1.5em + 5px); word-break:keep-all" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-6px -1px -11px" | <colbgcolor=#887b7e>Windows용 | 메모장 · 워드패드 · EmEditor · Notepad++ · EditPlus |
크로스 플랫폼 | Visual Studio Code · Sublime Text · Atom · Brackets | |
기타 운영체제용 | vi · vim · Neovim · BBEdit · Emacs | |
이 외 에디터는 문서 편집기 문서 참고 | }}}}}}}}} |
Sublime Text | |
<colbgcolor=#f5f5f5,#1f2023> 개발 | <colbgcolor=#fff,#2d2f34><colcolor=#333,#fff>Sublime HQ |
개발언어 | C++ & Python 임베딩 엔진 |
라이센스 | 상업 소프트웨어 |
용도 | 텍스트 에디터 |
가격 | 부분유료 |
운영체제 | Windows, macOS, GNU/Linux[1] |
현재버전 | 4 Build 4180 (2024년 8월 6일) |
[clearfix]
1. 개요
C++로 개발되고 Python 임베딩 엔진을 포함한 크로스 플랫폼 텍스트 에디터. 주로 프론트엔드 프로그래밍에 쓰인다. 요즘은 Node.js 같이 백엔드 언어를 작성할 때 쓰는 경우도 많다. 비교적 최근에 생긴 에디터라서 그런지 포트란 등의 구세대 언어를 사용할 경우에는 귀찮아질 수 있다.GUI는 탑다운 메뉴 말고는 없다시피하고 명령 팔레트 등을 이용하면 아예 마우스 없이도 쓸 수 있다. 심지어 옵션 설정도 그냥 JSON 파일이다. 마우스 사용을 지양하여 초스피드의 생산성을 추구하는 텍스트 에디터.
플랫폼 별로 네이티브로 동작하도록 되어 있어 속도가 상당히 빠른 편이며, 경쟁 제품인 VS Code와 비교해 봐도 여전히 속도 부분은 우세하다. 또한 Python 임베딩 엔진을 내장하고 있어 Python을 어느 정도 알고 있다면 손쉽게 매크로, 플러그인 등을 확장하여 자신만의 에디터 환경을 구축할 수 있다. 기본적으로 키 바인딩 기능도 제공하며, 비활성화된 vintage라는 패키지를 활성화 시키면 부분적으로 vi와 비슷하게 동작한다. vi와 더욱 비슷하게 동작하는 플러그인 Vintageous이 있지만 거의 개발이 중단된 상태이며, 그냥 vi를 쓰는 편이 더 낫다.
초기에는 한때 맥에서 유명한 에디터인 Textmate의 각종 XML 방식의 설정 파일을 그대로 사용할 수 있었으며(현재도 사용가능함), 유사한 모습을 보였지면, 점차 독자적인 기능과 3버전 부터는 YAML 1.2 방식의 독자적인 설정파일로 더 편하게 작성이 가능하며, 실행속도까지 좋아졌다.
그 외에 멀티 커서 에디팅이나 코드 네비게이션, 팔레트 기능들은 다른 에디터에서도 플러그인 혹은 기본 기능으로 제공할 정도로 인기 있는 기능. 이러한 기능들은 Atom이나 VS Code 등 최근에 나온 에디터들은 대부분 채택하고 있다. 이 에디터 이후 vi, Emacs 등에서도 플러그인으로 비슷한 기능을 구현했다.
가격은 2023년 8월 4일 기준 $99이다. 2 버전까지 $69이었고 3 출시 이후 $80까지 인상되었다가 4버전 출시 후에는 더욱 올랐다. 구매하지 않더라도 모든 기능을 무제한으로 사용할 수 있지만, 저장할 때 가끔씩 구매하라는 팝업이 뜬다.
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 등의 텍스트 에디터들과 비교해보면 굉장히 쾌적하다는 것을 느낄 수 있다.
- 안정성과 간편함 : 열려있는 모든 탭의 모든 세션을 (임시 저장이라는 말이 아닌 실시간 저장이라는 말에 가까울 정도로) 별도 파일로 상시 저장한다. 더군다나 창을 닫고 싶을 때 아무 생각 없이 프로그램 닫기 버튼만 눌러주면 열려있는 모든 탭을 일일이 저장할지 물어보지 않고 쿨하게 닫혀주는 것이 압권. 이후 다시 실행하면 열려있던 탭 포함, 바로 직전까지 하던 작업이 온전하게 그대로 열린다! (심지어 소위 ‘새 문서’나 저장하지 않은 창까지 미저장 상태이자 당시 버전 상황 그대로!) 게다가 놀랍게도 다시 열린 창에서 모든 탭의 세션(커서 위치 · 블록 상태 · 실행 취소 및 다시 실행 히스토리 등)까지 살아있다. 물론 개별 탭(창)을 닫을 때에는 저장 여부를 물어보고 저장하지 않으면 이때 비로소 세션에서도 날리게 된다. 유저 프로파일 폴더 내에서 이러한 세션(열린 탭과 해당 탭에서 실행된 각 편집 이력)을 json 형태로 저장하는 파일을 확인할 수 있다. 여기에 열린 창의 정보가 저장된다. 이와 막강한 에디팅 기능을 활용하여
왠지 약간 과분한 것 같긴 하지만탭 달린 간단하며 가벼운 개인 메모장 겸 일상 생활용 에디터 용으로 쓰기에도 손색이 없다. Sublime Text 내에서는 이러한 개념을 Snapshot 이라고 부르는 모양. (파일을 열 때 하단 상태 바에 File Open Snapshot을 생성하였다는 텍스트가 순간적으로 표시된다.) - 강력한 탐색/자동완성 : 이전의 에디터들과 다르게 자체적으로 Fuzzy Search Engine을 구비해두고 있는데, 생산성을 굉장히 높이는 데에 일조하고 있다. 타 에디터들의 자동완성이나 탐색에 비해 훨씬 적은 타이핑으로 문제를 해결할 수 있기 때문이다. 예를 들어서 NamuWikiDatabase를 자동완성 하는 경우 타 에디터는 앞글자부터 입력하다 완성이 되기에 NamuWiki 정도로 시작하는 단어가 많으면 시간이 더욱 걸린다. 반면 Sublime Text의 경우 NWkD 정도만 입력해도 거의 유일하게 결정되기 때문에 훨씬 간편하다.
- Python 기반의 해커블 에디터 : 주로 Python을 이용하여 스크립트를 작성할 수 있다. 플러그인도 이로 작성하고 자주 사용되기 때문에 Python을 배워두면 도움이 많이 된다.
- 좋은 가독성: 바탕색이 검은색이라서 눈이 아프지 않고, 함수 블록이 알록달록해서 보기 좋다.
4. 단점
- 클로즈드 소스: 실제 사용에서는 크게 문제가 없지만 오픈 소스가 아니라서 불만이 있는 경우가 적잖게 있는 듯하다. 자주 비교되는 에디터인 Atom, vscode등의 경우 오픈소스이기 때문에 해당 소스들을 기반으로 codespace, stackblitz, gitpod, vscodium 등의 수많은 파생 에디터/관련 기술/커뮤니티 등이 등장하고 지속적으로 기여를 받아 발전하는 것에 비해 대조적. 그러다 보니 Lime Text 같은 유사한 형태와 기능을 가진 오픈 소스 에디터도 만들어지고 있다.[2]
- 대량 텍스트 파일: 물론 Sublime Text 에서는 네이티브 답게 몇백메가 짜리 텍스트 파일도 무리없이 불러와서 작업할 수 있으나, 찾기, 바꾸기, 다중 선택 등의 편의기능을 사용하려 하면 상당한 버벅임을 볼 수 있다. 편의 기능 사용 시 주의가 필요하다. 대용량 파일 편집 시 UltraEdit 및 EmEditor, vim 등이 추천되는 이유이기는 하지만, 주요 인기 텍스트 에디터 중에서는 상위권의 성능이다.
5. 기능
5.1. Goto
특정 위치로 이동하는 기능.기본적으로 파일 이름의 일부를 쳐서[3] 열 수 있고, @로 특정 구문을 찾거나 #으로 검색, :으로 라인 넘버까지 지정할 수 있다.
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. 다중 선택
단축키 Ctrl+D로 커서 위치의 동일한 단어를 선택하고, 동시에 수정 가능하다. Ctrl+마우스 선택 혹은 Ctrl+F로 검색해도 된다. 변수명 같은 중복되는 단어 수정에 편리하다.
다중 선택을 대소문자를 구별한 채로 하고 싶다면 Ctrl+F를 누르고 대소문자 구별을 켠 다음, 다중 선택할 단어 위에 커서를 올려 놓는다. 그런 다음 Ctrl+D를 누르면 대소문자를 구별하여 다중 선택이 된다. Ctrl+U로 마지막 선택을 취소할 수 있다.
페이지 전체 단위로 특정 단어를 선택하고 싶다면 Ctrl+F에서 특정 단어를 입력한 다음 find all버튼을 누르거나, 특정 단어를 커서에 올려놓은 다음에, Alt+F3를 누르면 전체 선택이 된다.
이 다중 선택 기능이 업계 표준 수준으로 제시되어, 다른 편집기 앱에도 영향을 주었다. 현재 많은 이들이 즐겨 쓰는 Notepad++, Visual Studio Code 등의 텍스트 편집기와, Visual Studio, IntelliJ IDEA 등의 IDE에서도 비슷한 다중 선택 기능을 사용할 수 있다.
5.4. 기타
- 전체화면 모드: F11 키를 누르면 전체화면 모드, Shift+F11 키로 상단 메뉴 외 모든 UI를 가릴 수 있다.
- Python 콘솔: Sublime Text 내에서 Ctrl+` 키를 눌러서 Python을 실행할 수 있으며, sublime의 각종 설정 값을 확인 변경, 혹은 플러그인을 개발한다면 여기서 다 테스트해 볼 수 있다.
- 매크로: 특정한 작업을 기록해 두었다가 실행할 수 있다.
- HTML 형식으로 '복사하기': 메뉴 > Edit > Copy as HTML, 언젠가부터 생겼는데 이 기능을 사용하면 Sublime Text 내에서 코드가 하이라이트 된 상태를 그대로 HTML 형식으로 클립보드에 복사해준다(!) 이후 웹 에디터에서 HTML 모드로 소스를 그대로 붙여넣으면 Sublime Text의 하이라이트 된 소스코드를 웹브라우저에서도 그대로 볼 수 있다.
6. 기본 세팅
6.1. 패키지 컨트롤
서브라임 텍스트를 원활하게 사용하기 위해서는 먼저 패키지 컨트롤(Package Control)을 설치하여야 한다. 간단하게는 테마부터 C++11 등 기본적으로 지원하지 않는 언어의 Syntax 강조 기능 등 다양한 플러그인을 명령어 한 줄로 추가할 수 있게 도와준다. 사실상 필수적인 플러그인. 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이 설치된다.
Sublime Text 4에선 간단하게 Command palette에서 설치할 수 있다.
6.2. IMESupport
앞서 서술했던 한글 입력 시 지연 문제를 해결하기 위한 플러그인. 다만 메모장이나 워드처럼 자연스럽게 한글을 입력할 수 있는 것은 아니며 화면 모서리에 뜨던 것이 커서 옆에 뜨게 되었다는 차이 밖에 없다. 그래도 없는 것보다는 훨씬 낫다. Find나 Replace 등에선 적용되지 않는다. Windows 10 이하에서만 적용된다. 3211 버전 기준 IMESupport를 설치하지 않은 상태에서 화면 모서리가 아닌 커서 바로 아래에 입력 중인 한글이 표시된다. IMESupport 사용시 Find 입력 창에서 입력 중인 글자가 Find 창이 아닌 편집창 커서 쪽에 표시되는 문제가 있으므로 써보고 기본 상태와 IMESupport 중에 선택하면 된다.2021년 5월 21일 Sublime Text 3가 Sublime Text 4로 업그레이드되면서 한글 입력 시의 지연 문제가 해결되었다. 한글 입력에 불편함을 느낀다면 Sublime Text 4로 업데이트하자.
6.3. ConvertToUTF8
서브라임 텍스트에서는 기본적으로 EUC-KR을 비롯해 중국어, 일본어 인코딩을 지원하지 않는다. 이 플러그인을 설치하면 File 메뉴 하위에 Set File Encoding to 메뉴와 Reload with Encoding 메뉴에 EUC-KR 등이 추가되어 보다 편리하게 열람할 수 있다. UTF-8로 전환도 가능한데, 일부 스크립트 언어 등에서 한글이 깨질 때 UTF-8로 전환해도 문제가 해결되지 않을 경우에는 메모장으로 열어서 '유니코드' 인코딩으로 저장해주어야 한다.[1] 데비안, 레드햇 계열이 아닌 배포판에서 설치하는 경우, 다운로드 페이지에서
<아키텍처 버전> bit.pkg.tar.xz
대신 <아키텍처 버전> bit.tar.xz
을 받아야 함에 주의하자. 소스 코드가 아니기 때문에 컴파일할 필요는 없다.[2] Lime Text는 현재 백앤드는 개발이 많이 진척된 상태지만 프론트엔드의 개발은 상당히 부진하다.[3] Fuzzy Search라고 하는데 시작부터 글자 하나 틀리지 않고 일치해야 하는 기존 검색에 비해 맨 첫 글자와 이후에는 순서만 맞으면 사이사이에 다른 글자가 들어가도 된다.