
필자는 Editor중 Vim을 선호하고 주로 사용하는 편이다.
Vim을 사용할때 보통 두가지 방법으로 사용하게 된다.
- IDE 설치후 Vim 플러그인을 통하여 사용
- Terminal에서 Vim을 사용
필자는 주로 첫 번째 방법을 통해서 사용하였다.
회사에선 주로 Java, Spring계열의 Backend 개발을 하다보니 IDE에 의존적인 기능들이 좀 많았던게 이유이다. 하지만 사이드 프로젝트 개발은 주로 Terminal과 Text Editor로써의 기능을 사용하는 것 같아서 Terminal을 통한 개발환경도 괜찮지 않을까? 라는 생각이들어서 시도해보게 되었다.
이번에 Terminal기반의 Vim 개발환경을 만들때 Tmux라는 것을 알게되었다.
이번 포스팅은 Tmux에 대한 간단한 Tutorial 과 사용법을 적어보려 한다.
/VIm 플러그인이나 사용경험에 대해서는 별도의 포스팅을 작성할 예정이다./
Tmux
Tmux는 TTY 멀티플렉서 이다. 쉽게 말하자면 하나의 터미널에서 여러개의 터미널로 분할하여 사용할 수 있고. 세션을 생성하여 attach/detach 를 할 수 있다.
Mac OS의 ITerm2와 같은 터미널을 사용하게 되면 기본적으로 화면분할을 제공하는데 Tmux는 기본적인 화면분할과 더불어 세션기능을 제공한다.
ssh를 통해 원격으로 작업하다가 종료후 재접속 한 후 tmux session에 다시 attach만 해주면 기존의 작업환경을 그대로 사용할 수 있다. 이외에도 단축키와 여러 plugin을 설치해서 사용할 수 있으므로 Mac OS의 ITerm과는 조금 다른 종류라고 보는게 좋을것 같다.
아래 내용에선 Tmux 설치 부터 단축키 Plugin 설치 및 관리방법을 위주로 작성하려한다
Installation
Mac OSbrew install tmux
Tmux 용어
- 프리픽스(prefix)
단축키입력전에 입력해야하는 키 조합이다. 기본적으로ctrl + b
조합키가 아니라명령모드
같은 개념이다. - 세션(session)
Tmux에서 관리하는 가장 큰 단위 - 윈도우(window)
세션에 존재하는 탭 - 팬(pane)
윈도우에 존재하는 화면 단위
Config
vi ~/.tmux.conf
Reload 시에는tmux source ~/.tmux.conf
명령을 통해서 config를 reload 할 수 있다.
Shortcut
Session 시작1
2
3tmux
# with session name
tmux new -s <session_name>
Session 목록1
tmux ls
Session 종료1
2
3
4
5
6
7tmux kill-session -t <session_name>
# kill all tmux session
tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill
# Server shutdown
tmux kill-server
Session attach1
2
3
4tmux attach -t <session_name>
# or
tmux a -t ...
아래 단축키들은 Session attach 후 명령모드에서만 작동한다.
즉, prefix(ctrl+a)를 먼저 입력한 후에 아래키들이 동작한다고 보면된다.
Session
1 | :new<CR> new session |
Window
1 | c create window |
Panes(Splits)
1 | % vertical split |
Plugin
Tmux는 다양한 Plugin으로 커스터마이징이 가능하다. 구글링을 좀 해보면 상태바를 이쁘게 만드는 방법이나 키매핑을 편리하게해주거나 등 다양한 플러그인이 있으니 찾아보면 된다. 여기선 기본적으로 플러그인을 설치하는 방법만 적어보려한다.
먼저 패키지 매니저인 TPM을 설치한다. 설치가 정상적으로 됬다면 그후론 ~/.tmux.conf
에 설치할 플러그인 목록을 작성한후 <prefix> + I
로 설치할 수 있다. 자세한내용은 TPM repo의 README를 참고하도록 하자.
필자가 사용중인 플러그인 목록이다.
참고
https://blog.outsider.ne.kr/699
https://www.haruair.com/blog/2124
https://gist.github.com/MohamedAlaa/2961058
https://bluesh55.github.io/2016/10/10/tmux-tutorial/
마무리
그냥 터미널에서 Vim을 좀 더 편하게 사용해보려고 시작했지만 이외의 용도로도 유용하게 사용할 수 있을것같다. 꼭 vim과 같이 사용하지 않더라도 서버에 깔아두거나 mac에서 사용하기에 장점이 많은 것 같다. 페어프로그래밍에도 쓰일 수 있다는데 기회가 되면 해보고 싶다.