tmux 설치법
maxOS 에서는 $ brew install tmux
라고 하면 설치된다.
리눅스에서는 $ apt-get install tmux
를 하면 된다.
$ tmux
를 실행하면 tmux가 실행되기 시작한다.
tmux에서 쓰는 용어
프리픽스(prefix)
: 단축키를 입력하기 전에 먼저 입력해야하는 키 조합이다. tmux의 기본 프리픽스는< CTRL + b >이다. (현재 저의 로컬 컴퓨터의 프리픽스는 < CTRL + a > 이므로 편의상<CTRL + a>
를 사용하도록 하겠습니다.)세션(session)
: tmux가 관리하는 가장 큰 단위이다.윈도우(window)
: 구글 크롬에서의 탭과 같은 존재이다. 하나의세션
안에 여러 윈도우(탭)이 존재할 수 있다. 또한 각각의 윈도우에 이름을 정할 수 있다.팬(pane)
: 윈도우 안에 존재하는 화면 단위이다. 하나의 윈도우에 여러 팬이 존재할 수 있다. (상단 팬(pane)에 VIM을 켜두고 하단 팬(pane)에 커맨드 라인을 유지한 상태로 작업하면 편리하다.)
tmux에서 지원하는 유용한 단축키
Session
$ tmux
: 세션을 생성한다.$ tmux attach
: 내가 마지막에 사용한 세션을 다시 불러온다.(Session attach)<CTRL + a> + d
: 세션을 빠져나온다.(Session detach)$ tmux attach session_name
: session_name을 가진 세션을 다시 attach한다.$ exit
: 세션을 종료한다.$ tmux ls
: 세션 목록을 확인한다.
Window
<CTRL + a> + {
: ipython와 tmux에서 vim처럼 움직일 수 있다. enter치면 명령어를 치는 부분으로 이동한다.<CTRL + a> + c
: window창 생성한다.<CTRL + a> + &
: window창을 없앤다.<CTRL + a> + p
: previous window로 이동한다.<CTRL + a> + ,
: name windowexit
: close window- window창이 분할된 후, 창 움직이는 법 :
<CTRL + vim용 방향키 (hjkl)>
- window창이 여러개가 있다면
<CTRL + a> + window번호
를 하면 window번호 쪽으로 이동하게 된다.
Pane
<CTRL + a> + v
: 수평으로 active pane을 나눈다.(v = vertical)<CTRL + a> + s
: window창이 위아래로 분할된다.(s = split)
Linux에서 지원하는 유용한 유틸리티 및 단축키
, + <Shift + s>
: Strip을 한다. 즉 trailing space을 없앤다.jobs
: 현재 background에 무엇이 있나 확인한다.<CTRL + z>
: background로 이동한다.<fg>
: foreground(fg)로 이동한다.fg % 1
,fg % 2
이런식으로 background 중 몇번째 background에 접근할지 쓸 수도 있다.<CTRL + p>
or<CTRL + r>
: 전에 쳤던 명령어가 나온다.- Foreground와 Background 프로세스의 차이는 일단 쉽게 ‘키입력’을 받냐 안받냐로 구분하면 된다. 즉, zsh 켜둔 상태에선 zsh이 우리의 키입력을 받기 떄문에 Foreground 에 zsh이 동작하고 있는 것이다.
Jedi-Vim
- 터미널에서 관련 명령어가 가능하게된 것은
jedi-vim
을 사용하기 때문인데jedi-vim
명령어를 누르면 된다. 현재jedi-vim
에서키는 ,<- 콤마로 지정되어 있는 상황이다. - 따라서 사용자가 사용한 변수를 추적하고 싶다면 일단 < leader > + g 명령어를 쓰면 될 것이다. 다른 방법은 * <- 을 누르면 된다.
- 여러 파일에 걸쳐서 추적하고 싶으면 < leader > + ag 를 하고 검색하고 싶은 키워드를 넣으면 된다. 그러면 아래에 창이 하나 뜰 것이고 그 창에서 엔터를 누를 때마다 vim 창 전환이 일어나면서 그 위치로 이동된다.
- 변수를 추적하고 싶을 때는 < leader > + d 명령을 쓰면 될 것이다.
- < leader > + r 명령어를 사용하면 변수 혹은 함수의 이름을 전부 변경할 수 있다.
vim에서 많이 사용하는 명령어
- i : 현재 커서 위치에서 insert하기
- a : 현재 커서 다음칸에 insert하기
- o : 현재 커서 다음 줄에 insert하기
- CTRL + o : 이전 커서 위치로 돌아가기
- CTRL + i : CTRL + o 의 반대
- di + ( :
(1 + 3)
같은 코드가 있을 때(
(parenthesis) 안에 커서를 둔 상태에서 di( 를 입력하면 paraenthesis 안의 텍스트가 모두 지워진다. - di + “ : 위와 같은 원리로 이번엔 “ (double quote)안의 텍스트가 전부 지워진다. ex) 같은 원리로 d대신에 c,y를 쓰면 다음과 같이 된다.
- di( –> Deletes
- ci( –> Substitues
- yi( –> Yanks
- cw : 단어단위로 삭제한 후 Insert상태로 변경
- dw : 단어 잘라내기
- dd : 문장 잘라내기
-
x : 현재 글자 지우기
- u : Undo
-
CTRL + r : Redo
- w : 단어 첫글자로 이동
- e : 단어의 마지막 글자로 이동
- b : 백워드 방향으로 공백단위로 다음 글자로 이동
- $ : 문장 맨 뒤로 이동
- ^ : 문장 맨 앞으로 이동
-
0 : 라인 맨 앞으로 이동
- v : Visual mode(커서를 이용해 블록지정이 가능하다.)
-
V : Visual Line mode(줄 단위로 블록지정이 가능하다.)
< CTRL + w > + < = >
: 창 크기를 균등하게 만들어준다.< CTRL + w > + < _ >
: 현재 창의 높이를 최대로 만들어준다.< CTRL + w > + < | >
: 현재 창의 너비를 최대로 만들어준다.
Git에서의 명령어
git rebase master
: branch의 첫 부분을 master branch의 끝 부분으로 옮긴다.(=rebase 한다)git history
: commit 올린 history를 볼 수 있다.git status
: git 상태를 볼 수 있다.git push origin 현재-branch-name
: branch에서 remote로 깃들을 푸쉬한다.git checkout branch-name
: 현재 위치에서 branch-name으로 이동한다.git checkout -t origin/"branch-name"
: 로컬에 동일한 이름의 branch를 생성하면서 해당 branch로 이동한다.(“branch-name” 은 원격 저장소에 있는 branch이름)
git branch
: branch list를 알려준다.git branch -a
: 로컬, 원격 모든 저장소의 branch 리스트를 볼 수 있다.
git commit -v
: commit할 diff를 볼 수 있고 commit 메시지를 vim창에서 작성할 수 있다.git rebase master
: branch의 시작부분(base)을 master로 rebase해준다.git fetch
: 로컬로 가져온다.(하지만, 커밋을 적용하지는 않는다. git 폴더에만 기록되어있을 뿐)git cherry-pick [hash]
: cherry-pick은 hash에 해당하는 커밋을 가져와서 적용한다.git stash
: 변경하거나 수정한 파일들을 쓰레기통으로 넣는다.git stash pop
: stash한 파일들(쓰레기통에 넣은 파일들)을 다시 꺼낸다.git stash list
: 쓰레기통에 있는 파일 리스트를 볼 수 있다.git checkout — <file>
: git status 하면 맨날 보이는 명령어. git add 하지 않은 것들을 변화 이전으로 돌린다.(주의! 한번 하면 돌이킬 수 없기 때문에 조심히 사용해야 한다.)git reset —hard HEAD~1
: 가장 마지막 커밋 1개 없앤다.(예를 들어, 방금 수정이 너무 쓰레기라 없애버리고 싶을 때 적용) HEAD~N하면 N개를 없앤다.(주의! 이것 역시 돌이킬 수 없기 때문에 매우 조심해서 사용)git rebase -i HEAD~N
: 최근 N개의 커밋을 정리할 때 사용한다.(커밋을 일부 없애거나 합치거나 순서를 바꾸거나 등)