탭 끼워넣기


작업을 하다보면 들여쓰기 때문에 행의 맨앞에 탭을 삽입해야할 경우가 많이 생긴다. 물론, 그럴 때마다 일일이 행의 처음으로 이동해서 편집 모드로 들어가 탭을 집어넣고 다시 나와서 작업을 해야 한다면 무척 번거로울 것이다.


이런 경우를 위해서 vim에서는 행 앞에 탭을 쉽게 삽입하거나 제거할 수 있게 만들어 놓았다


명령 모드 >>(오른쪽 꺽쇠 2회 누름)

 

현재 커서가 위치한 행의 맨 앞에 탭 하나를 삽입한다.


명령 모드 <<(왼쪽 꺽쇠 2회 누름)

 

현재 커서가 위치한 행의 맨 앞에 있는 탭 하나를 제거한다


위에 소개된 명령은 여러 개의 행에 동시에 적용할 수 있다.

 

명령 모드 [#]>> 

 

현재 커서 위치를 1행으로 해서 아래로 #행까지 행의 맨 앞에 탭 하나를 삽입한다


명령 모드 [#]<< 

 

현재 커서 위치를 1행으로 해서 아래로 #행까지 행의 맨 앞에 탭 하나를 제거한다



들여쓰기 자동정렬


소스코드의 들여쓰기가 잘못되었거나 잘못되었을 경우 이를 제대로 정렬할 수 있는 손쉬운 방법이 있다.

 

비주얼 모드로 들여쓰기를 정렬할 영역을 지정한 후 등호(=) 를 누르면 들여쓰기가 깔끔하게 정렬된다.

 

, 별도로 블록을 지정하지 않고 그냥 소스코드 전체의 들여쓰기를 정렬하려면 명령 모드에서 gg=G라고입력하면 된다.

 


자동완성 기능 사용하기


어떤 변수나 함수를 타이핑할 때 너무 복잡한 이름이거나 잘 모르는 이름일 경우에는 자동 완성 기능을 사용하여 손쉽게 이를 해결할 수 있다.

 

편집 모드 <Ctrl-p>


커서 위치에서부터 위로 자동 완성이 가능한 단어가 있는지 찾아서 제시함


편집 모드 <Ctrl-n>


커서 위치에서부터 아래로 자동 완성이 가능한 단어가 있는지 찾아서 제시함


자동완성 기능을 사용하는 모습은 다음과 같다. 



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



탭 페이지 이동하기


앞의 포스팅에서 vim에서 탭 페이지를 열고 닫는 법을 알았다. 이제 탭 페이지에서 다른 탭 페이지로 이동하는 방법을 알아야 할 차례다. 


우선 가장 간단한 탭 페이지에서 다른 탭 페이지로 이동하는 방법은 마우스를 사용하여 이동하길 원하는 탭을 클릭하는 것이다. 그러면 해당 탭 페이지가 바로 열린다. 


, 탭을 클릭해서 드래그하면 탭의 표시 순서도 변경할 수 있다.




마우스 말고 명령어와 키를 이용하는 방법은 다음과 같다.


명령 라인 :[#]tabnext

명령 라인 :[#]tabn

명령 모드 [#]gt

명령 모드 [#]<Ctrl-PageDown>


가장 왼쪽에서부터 # 번째 탭으로 이동하고 #을 생략하면 현재 탭 다음(오른쪽) 으로 이동한다.






명령 라인 :[#]tabprevious

명령 라인 :[#]tabp

명령 모드 [#]gT

명령 모드 [#]<Ctrl-PageUp>


현재 탭을 기준으로 #번 왼쪽에 있는 탭으로 이동하고 #을 생략하면 바로 이전(왼쪽) 으로 이동한다


그리고 그 외는 다음과 같다. 


명령 라인 :tabmove

명령 라인 :tabm


가장 오른쪽 탭으로 이동


위의 명령어들을 간단히 적용한 사례는 다음과 같다


명령 라인 :tabnext → 현재 탭 다음(오른쪽으로 이동

명령 라인 :tabn → 현재 탭 다음(오른쪽으로 이동

명령 모드 gt → 현재 탭 다음(오른쪽으로 이동

명령 모드 <Ctrl-PageDown> → 현재 탭 다음(오른쪽으로 이동


명령 라인 :3tabnext → 가장 왼쪽에서 3번째 탭으로 이동

명령 라인 :3tabn → 가장 왼쪽에서 3번째 탭으로 이동

명령 모드 3gt → 가장 왼쪽에서 3번째 탭으로 이동

명령 모드 3<Ctrl-PageDown> → 가장 왼쪽에서 3번째 탭으로 이동


명령 라인 :tabprevious → 현재 탭 바로 이전(왼쪽으로 이동

명령 라인 :tabp → 현재 탭 바로 이전(왼쪽으로 이동

명령 모드 gT → 현재 탭 바로 이전(왼쪽으로 이동

명령 모드 <Ctrl-PageUp> → 현재 탭 바로 이전(왼쪽으로 이동

 

명령 라인 :2tabprevious → 현재 탭에서 왼쪽으로 2번째 탭으로 이동

명령 라인 :2tabp → 현재 탭에서 왼쪽으로 2번째 탭으로 이동

명령 모드 2gT → 현재 탭에서 왼쪽으로 2번째 탭으로 이동

명령 모드 2<Ctrl-PageUp> → 현재 탭에서 왼쪽으로 2번째 탭으로 이동



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


058 탭 페이지 이동하기(33개 카드).apkg

여러 개의 파일을 탭으로 표시하기 


vim에서도 웹 브라우저들이나 다른 텍스트 에디터처럼 다른 페이지를 탭으로 표시해서 필요할 때마다 탭 페이지를 전환해가면서 작업을 할 수 있다.

 

아래의 화면은 첫 번째 test.txt 파일이 있고 그 다음 test1.txt 파일이 있는 모습이다.

 



탭 페이지 열기


탭을 여는 명령은 다음과 같다.

 

vim을 실행면서 바로 여러 개의 파일을 탭으로 열려면 다음과 같이 -p 옵션을 추가한다.

 

$ vim -p test1.txt test2.txt test3.txt


vim으로 작업하면서 다른 파일을 새 탭으로 열려먼 다음과 같이 한다


명령 라인에 :[#]tabedit 파일명

명령 라인에 :[#]tabe 파일명

# 번째 새 탭에 파일명의 파일을 #을 생략하면 현재 활성화된 탭 뒤의 새 탭에 파일명의 파일을 연다.


vim으로 작업하면서 이름 없는 빈 파일을 새 탭으로 열려면 다음과 같이 한다


명령 라인에 :[#]tabnew

# 번째 새 탭에 이름 없는 빈 파일연다. #을 생략하면 현재 활성화된 탭 뒤의 새 탭에 이름 없는 빈 파일연다.(명령어의 뒤에 파일명을 붙일 경우 해당 파일을 연다.)



탭 페이지 닫기


탭을 닫는 명령은 다음과 같다.


명령 라인에 :[#]tabclose

명령 라인에 :[#]tabc

# 번째 탭을 닫는다#을 생략하면 현재 활성화된 탭을 닫는다


또한, 탭이 표시된 줄의 가장 오른쪽에 있는 x 표시마우스로 클릭하면 현재 활성화된 탭을 닫을 수 있다.

 




Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



탭(tab) 사이즈


프로그램을 작성할 경우에는 코드의 가독성(readibility)을 위해서 들여쓰기(indent)를 하는 경우가 많다이 때 들여쓰기를 하는 기본 단위는 (tab)의 사이즈. 또한, 자동 들여쓰기(autoindent)를 쓸 때도 이러한 탭 사이즈에 따라서 실제 적용되는 양상이 달라지게 된다. 또한, 프로그래밍 언어마다 다른 탭 사이즈를 적용하는 것이 바람직한 경우도 있다. 여튼, 탭 사이즈 조절이 필요하다.


앞에서 :set 명령으로 옵션을 설정하는 것을 배웠다. 이제 배운 것을 응용하여 탭 사이즈를 조절해보자.

  

탭 사이즈와 관련된 vim의 옵션에는 ts(tabstop), sw(shiftwidth), sts(softtabstop) 등이 있다.


tabstop(ts)


vim의 옵션 ts에 설정된 값은 문서에서 탭을 의미하는 문자 '\t'를 몇 칸의 공백으로 나타낼지를 결정하는 값이다. ts 옵션을 4로 변경하려면 다음처럼 명령 라인에 명령어를 입력하면 된다. 


:set ts=4 → 문자 탭(\t) 4칸의 공백으로 표시되도록 설정

※ 보통 리눅스 커널 소스에서는 문제가 일어날 수 있으므로 ts의 값을 8에서 바꾸지 말기를 권한다. 


shiftwidth(sw)


vim의 옵션 sw는 문서 편집을 위하여 들여쓰기(indent)를 할 때 적용되는 탭의 사이즈를 의미한다. 즉, 자동 들여쓰기(autoindent)를 할 때, 또는 >> 키를 눌러 탭을 삽입하거나 << 키를 눌러 탭을 제거할 때 적용되는 탭 사이즈이다.


:set sw=4  들여쓰기는 4칸 단위로 이루어지도록 설정


softtabstop(sts)


vim의 옵션 sts가 우리가 흔히 아는 탭 사이즈다. 즉, 키보드에서 [Tab]키를 눌렀을 때, 적용되는 탭 사이즈다. 


:set sts=4  탭키를 누르면 4칸 뒤로 이동하도록 설정


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 





+ Recent posts