How To: Compile every language from Vim


Vim에서 Compile하는 단축키 설명




탭 대신 공백 사용하기

탭을 눌렀을 때 탭 대신 몇개의 공백 문자를 넣는 :set expandtab 옵션을 제공한다. (줄여서 et)

예를 들어, 설정 파일에 set et ts=4 로 설정되어 있다면 사용자가 탭을 누르는 순간 네 칸의 공백 문자가 입력된다.


Tip: 진짜 탭 문자를 입력하고 싶다면..

expandtab 옵션이 설정된 상태에서 진짜 탭 문자를 입력하려면, 특수 문자를 입력할 때 썼던 <CTRL-V> <CTRL-I> 로 입력하면 된다.


기존 탭 문자 <----> 공백 변환

et 옵션은 새로 입력하는 탭만 공백으로 바꿀 뿐 기존의 탭 문자들은 건드리지 않는다. 따라서 기존의 탭 문자들도 모두 공백으로 변환하거나 반대로 공백을 탭으로 변환하려면 :retab 명령을 사용해야 한다. (줄여서 ret)

retab 명령은 expandtab 옵션이 on 상태이면 탭을 공백으로 변환하고, off 상태면 공백을 탭으로 변환한다.

:[range]ret [new_ts]

여기서 new_ts 는 연속된 공백 문자의 길이이다. 만약 :ret 4 라고 명령했다면 변환 대상은 공백 문자 네칸이 된다. new_ts 옵션을 생략하면 tabstop 설정을 따른다.

예를 들어, expandtab 옵션을 on 상태로 만들고 retab을 실행하면 기존에 입력된 탭을 공백 네 칸으로 변환한다.

:set et

:ret 4

또한 expandtab 옵션을 off 상태로 만들고 retab 을 실행하면, 공백 여덞 칸을 탭 하나로 변환한다.

:set noet

:ret 8


단, ret 명령을 사용하여 공백을 탭으로 변환할 때, 공백 문자로만 구성된 부분은 사용자가 의도적으로 입력했다고 판단하여 변환하지 않는다.

그러나 이를 무시하고 모든 공백을 탭으로 변환하고 싶다면 강제 명령어인 느낌표(!) 를 붙여 다음처럼 명령해야 한다

:[range]ret! [new_ts]


C로 작성된 소스코드를 열면, 자동으로 탭을 공백으로 변환하는 방법

set et

au FileType     c        retab




단어 완성

프로그래밍을 하다보면 변수나 함수 혹은 메소드 이름에서 오타가 발생하기도 한다. 이를 위해, 단어 완성(keyword completion) 기능이 도입되었다.


단어 자동 완성

단어 자동 완성은 본문에 이미 등장한 단어나 예약된 단어의 앞 글자 몇 개만 입력한 후 <CTRL-N> 을 누르면 나머지를 완성시켜 주는 기능이다.

더하기 낱말 모드

aa까지만 입력한 뒤 <CTRL-N> 을 누르면, aaaaa까지만 완성되고 @nadf.vom 은 완성되지 않는다. 이는 @ 이 단어에 포함되지 않는 문자 부호라서 발생하는 문제이다.

이런 경우를 대비하여 더하기 낱말 모드가 존재한다. 일단 aaaaa까지 완성된 상태에서 <CTRL-X><CTRL-N> 을 누르면 aaaaa@sdf.vim 이 완성된다.


단어 완성 기능의 확장 모드(입력 모드에서 사용)

<CTRL-X> <CTRL-N>                                더하기 낱말 모드로 작동하여 추가 검색을 함.

<CTRL-X> <CTRL-K> <CTRL-N>            사전 검색 모드로 작동한다.




HTML 변환하기

소스코드를 웹에 게재했을 때 들여쓰기나 줄바꿈 모양이 망가지는 경우가 있다. 웹에 프로그래밍 소스코드를 게시하려면 많은 부분을 수정해야 하는데, 간단한 코드라면 직접 수정해도 되겠지만 코드가 길어지면 이 작업도 만만치 않다. 그래서 vim에서는 현재 화면에 보이는 상태를 HTML로 변환하는 기능이 탑재되어 있다.

:TOhtml 을 명령하면 된다.

생성된 HTML에서 <head>나 <body> 등 html 문서에 필요한 모든 뼈대가 포함되어 있으므로, 코드만 다른 곳에 붙이고 싶다면 <body> 태그부터 </body> 태그 앞까지만 복사하면 된다.


'Vim > Tutorial' 카테고리의 다른 글

C++ code completion  (0) 2016.02.27
vim Regular Expression  (0) 2013.05.12
반복적인 작업 녹화하기  (0) 2013.02.06
자동화  (0) 2013.02.05
오퍼레이션 펭딩 모드 / 약어 매크로 / 레지스터 활용  (0) 2013.02.05
Posted by scii
:

반복적인 작업을 녹화해서 작업하는 동영상이다. 이것은 ID랑 똑같은 것을 찾아서 뒷 부분에 이메일 주소를 넣어주는 영상이다.

지금은 몇 줄 안되서 그러지만, 이것이 수십, 수백, 수천줄이면 정말 상당히 유용할 것이다.


녹화는 사용자의 작업을 기억해두었다가 다시 작동시키는 일종의 매크로 기능이다.


녹화 시작

qa를 누르면 상태바에 recording 이라는 메시지가 표시되면서 녹화가 시작된다. 

q 는 녹화를 시작하거나 종료할 때 쓰는 명령이다. 

a 는 녹화할 매크로의 이름이다. 매크로 이름으로는 영문 소문자를 사용해야 한다. 녹화된 내용은 녹화가 끝난 후 동일한 이름의 레지스터에서 확인할 수 있다.


ID 복사

고객을 식별하는 기준이 되는 고객 번호를 복사해야 하므로, ^ 눌러 커서의 행 맨 앞부분으로 이동시킨 후 yiw 명령을 실행하여 단어를 복사한다.


고객 번호로 검색

복사했던 번호를 /<CTRL-R>" 을 명령하여 찾는다. 그 후 2w를 눌러 이메일 앞까지 커서를 옮긴다. 그 다음 y$를 하여 복사한다.

CTRL-R" 이것은 ""p 와 같고, 위의 영상으로선 "ap 와 같다. 


clientlist.txt에 주소 붙여넣고 녹화 끝내기

A를 눌러 행의 맨 뒤로 커서를 이동, 입력 모드로 전환하여  쉼표를 입력하고 ESC를 눌러 입력 모드를 종료한다. 그 다음 p를 눌러 메일 주소를 붙여 넣는다.


녹화된 내용 재생

@a 라고 명령한다.

@ 은 녹화를 재생하는 명령이다.

a 는 녹화했던 레지스터의 이름이다.

그리고 @@ 는 바로 이전에 실행했던 녹화 내용을 다시 실행하는 명령이다.


녹화와 재생 명령어

q<매크로 이름>                녹화를 시작한다. 매크로 이름은 {a-zA-Z} 중 선택해야 한다.

@<매크로 이름>               매크로를 실행한다. 매크로 이름은 {a-z} 중 선택해야 한다.

@@                                    바로 이전에 실행된 매크로를 재실행한다.


대문자 이름은 바로 이 레지스터를 수정할 때 사용한다. 

즉, qA 로 녹화를 시작하면, a 레지스터에 녹화된 내용에 새로 녹화하는 내용이 추가된다. 만약 a 레지스터에 녹화한 적이 없으면서 qA 로 녹화를 시작한다면 qa 명령과 동일한 기능을 수행한다.


녹화 내용 확인하기

:reg a 로 내용을 볼 수 있다. 

^W 는 <CTRL-W> 이다.

^M 은 Enter 이다.

^[ 는 ESC 이다.


범위를 지정하여 매크로 수행하기

각 행마다 수동으로 @a를 누르는 과정은 여전히 비효율적이다. 만약 수정할 파일이 수천 행 정도로 길다면 보통 고역이 아닐 것이다. 그래서 문서 전체를 한 번에 처리할 수 있는 방법을 알아야한다.

:%normal! @a

% 는 문서 전체를 의미한다.

normal 은 바로 뒤에 나오는 문자열을 일반 모드의 명령어로 인식하라는 뜻이다. (norm 으로 축약 가능)


ex) %normal! ^^X     이것은 맨 왼쪽으로 가서 숫자를 1씩 감소시키라는 명령이 된다.

숫자를 5씩 증가 시키려면 %normal! ^^A


매크로 수정하기

이메일 주소에 ""로 감싸려고 한다면, 다시 녹화를 진행하는 것보단 수정하는 편이 더 효율적이다.

"ap 명령하면 레지스터 a의 내용이 입력된다. 이제 이것을 가지고 수정하면 된다.

"ay$ 를 명령하여 레지스터 a 의 내용을 업데이트 시킨다.


Tip: 

여기서는 레지스터 전체를 불러오고 내용을 수정한 후, 수정된 내용 전체를 레지스터 a에 다시 입력했다.

하지만 레지스터의 맨 뒤에 내용을 추가하는 것과 같이 간단한 경우에는 대문자로 녹화를 하면 된다. 예를 들어 위와 같은 경우는 qA 로 녹화하면 추가 모드로 녹화가 진행된다.

 

q: 와 q/ 명령

q:명령행 모드의 과거 기록을 보여준다.

q/과거 검색어 목록을 보는 기능이다.

이전에 실행했던 명령어나 검색어의 목록을 개별 창에서 보면서 선택할 수 있는 유용한 기능이다. q:나 q/ 로 보이는 이력 창은 일반 창과 동일하게 작동하므로 :q 로 닫으면 된다.





현재 디렉토리에 있는 모든 파일들의 <stdio.h> 문장을 찾아서 <aaaaa.h> 로 바꾸는 작업.



:n * 는 현재 디렉토리의 모든 파일을 버퍼로 가져온다.

999@b 는 b 레지스터를 999번 재생한다. (현재 디렉토리의 파일이 999개 미만이라고 가정)


그리고 여기서 가장 중요한 것 %s/<stdio.h>/<aaaaa.h>/ge 이 부분이다. 

특히, 이 부분에서 e 이것이다. e 는 에러 발생시 무시하는 명령이다. 이 명령이 없으면 찾는 문자열이 없을 경우 재생이 중단되어버린다.


'Vim > Tutorial' 카테고리의 다른 글

vim Regular Expression  (0) 2013.05.12
프로그래밍할 때 유용한 기능  (0) 2013.02.06
자동화  (0) 2013.02.05
오퍼레이션 펭딩 모드 / 약어 매크로 / 레지스터 활용  (0) 2013.02.05
공백 지우기  (0) 2013.02.05
Posted by scii
:

자동화

Vim/Tutorial 2013. 2. 5. 21:00 |

vim 의 자동화 기능은 매우 간단하고 직관적이지만 강력하다. 자동화를 잘 사용하면 지루한 작업에서 해방될 수 있다.


키 매핑(단축키)

키 매핑은 특정 키가 눌릴 때, 미리 설정한 기능을 호출하도록 한다. 약어 매크로와 크게 다를 것은 없지만, 약어 매크로가 입력 모드, 명령행 모드에서만 사용가능한 반면, 

키 매핑은 모든 모드에 대해 사용할 수 있다는 점이 다르다.


vim에는 일반 모드, 입력 모드, 명령행 모드, 비주얼 모드에 따라서 키 매핑을 설정하는 명령어가 다르다. 하지만 nmap 명령의 n은 일반(normal) 모드를, imap 명령의 i는 입력(insert) 모드를, vmap 명령의 v는 비주얼(visual) 모드를 의미하므로 따로 외울 필요없이 이해할 수 있다.


일반, 입력, 비주얼, 명령행 모드의 단축키 지정 방법

nmap key command                일반 모드에서 key를 누르면 command를 실행

imap key command                 입력 모드에서 key를 누르면 command를 실행

vmap key command                비주얼 모드에서 key를 누르면 command를 실행

cmap key command                명령행 모드에서 key를 누르면 command를 실행

이 외에도 omap, xmap, smap, map!, lmap 등 다양한 단축키 매핑 명령이 있다. vim의 도움말 참조.


단축키를 해제하는 명령

map 대신 unmap을 사용하면 된다. 

모드에 따라 각각 nunmap, iunmap, vunmap, cunmap 등으로 하면 된다.




자동 명령

자동 명령은 특정 파일을 열거나 저장하는 이벤트가 발생할 때 사용자가 지정한 vim 명령을 자동으로 수행시키는 기능이다.

이 기능을 이용하면, 파일 형식에 따라 자동으로 특정 옵션을 켜거나 특정 명령을 내리는 것이 가능해진다. 

autocmd는 자동 명령을 의미하며 au로 많이 쓰인다. 

BufRead 는 파일을 읽는 이벤트, BufNewFile은 파일을 새로 만드는 이벤트를 의미한다.

ex) autocmd BufRead,BufNewFile *.txt colo shine|set ts=2 sw=2

예를 들어 이 같이 설정이 되어있다면, 이것은 확장자가 txt인 파일을 새로만들거나 열 때, 컬러스키마를 shine으로 하고 들여쓰기 관련 옵션을 2칸으로 설정하라는 뜻이된다. 그리고 이렇게 여러 명령을 실행하는 경우는 수직 바(|)를 사용하여 구분한다.


파일 관련 이벤트에 따른 자동 명령

자동 명령에 사용되는 파일 관련 주요 이벤트

BufNewFile                    파일을 새로 생성했을 때의 이벤트

BufRead                          파일을 읽은 후의 이벤트

BufWrite                         파일을 저장한 후의 이벤트

SwapExists                     스왑 파일이 이미 존재하는 경우의 이벤트


파일을 열 때 스왑 파일이 존재하면 중복해서 여는 것으로 보고 에러가 발생한다. 그런데, 이벤트를 활용하면 자동으로 읽기 전용으로 열 수 있다.

au SwapExists let v:swapchoice='o'

:swapchoice 라는 변수에 영문 소문자 o를 넣으라는 vim 내장 스크립트 구문이다. 여기서 let은 변수를 지정하는 명령어이다. 따라서 스왑 파일이 존재하면(SwapExists) 자동으로 v:swapchoice 변수를 영문자 o로 설정한다.

v:swapchoice 변수는 차후 vim이 스왑 파일이 존재하는 경우 어떻게 작동할 지 경정하는데, o는 읽기 전용(read-only)으로 파일을 연다는 의미이다.

다른 예를 들자면, 파일을 중복해서 열었을 때 나중에 연 vim은 자동으로 종료하게끔 하려면 이렇게 하면 되겠다.

let v:swapchoice='q'

그리고 확장자가 c나 h인 파일을 이 같이 지정하려면 이렇게 하면 되겠다.

au SwapExists *.[ch] let v:swapchoice='q'


파일 타입에 따른 자동 명령

만약 C++파일을 열 때 색상 테마를 slate타입으로 바꾸는 자동 명령을 작성해 보면 이렇게 될 것이다.

au BufRead,BufNewFile *.cpp colo slate

그런데, 작동은 하겠지만 완벽하지는 않다. 왜냐하면 C++ 파일의 확장자는 cpp 외에도 cc, cxx, 대문자 C 등으로 다양하기 때문에, 이 확장자들을 모두 등록해야 한다. 

여러 파일을 적을 때는 쉼표로 구분하여 다음과 같이 설정해야 한다.

au BufFead,BufNewFile *.cpp,*.cc,*.cxx,*.C colo slate


헌데 이 방법은 조금 지저분하고 비효율적으로 보인다. 그래서 파일 형식을 구분할 수 있는 새로운 이벤트가 있다.

au FileType cpp colo slate

FileType 은 filetype 옵션을 확인하여 자동 명령을 실행하는 이벤트이다. C++ 파일의 filetype은 cpp 이다.

vim에서 지원 가능한 파일 타입을 보려면 $VIMRUNTIME/ftplugin 에서 찾아 볼 수 있다.


자동 명령 그룹화와 해제

자주 사용하지는 않지만 autocmd를 해제하는 au! 명령과 자동 명령을 그룹으로 묶는 augroup 명령이 있다. 

이 명령어는 상관 관계가 있는 명령어들을 묶어서 필요에 따라 실행하거나 제거하는 용도로 많이 사용한다. 

augroup UserDefinedColorScheme

au!

au FileType sh,perl,python,ruby    colo shine

au FileType c,cpp    colo slate

au BufRead,BufNewFile *.txt    setfiletype text

au FileType text    colo evening

augroup End

이것은 UserDefinedColorScheme 란 그룹을 만들고 몇몇 기능을 설정한 예제이다. 이렇게 하면 해당 자동 명령 그룹의 기능이 중복 설정되는 것을 방지 할 수 있다.

autocmd는 사용자에게 다양하게 확장된 기능을 제공할 수 있다. 더 많은 이벤트 목록은 autocmd-events 도움말 항목에서 확인.


'Vim > Tutorial' 카테고리의 다른 글

프로그래밍할 때 유용한 기능  (0) 2013.02.06
반복적인 작업 녹화하기  (0) 2013.02.06
오퍼레이션 펭딩 모드 / 약어 매크로 / 레지스터 활용  (0) 2013.02.05
공백 지우기  (0) 2013.02.05
파일 열기(고급)  (0) 2013.02.05
Posted by scii
:

Plug-in 모음

Vim/Plug-Ins 2013. 2. 5. 19:29 |

vim Color Scheme Site

http://vimcolorschemetest.googlecode.com/svn/html/index-html.html

http://ethanschoonover.com/solarized




vim 사용자를 위한 플러그인 매니저 vundle 설정 Tip


http://kldp.org/node/125263

http://www.morenice.kr/118





L9 library must be installed! 해결 방법



여기로 가서 다운받아 설치하면 해결된다.


CTags   

http://ctags.sourceforge.net/

윈도우의 gvim이면  ctags.exe 파일만 windows 디렉토리에 갖다두면 끝!


리눅스:

$ sudo apt-get install ctags 로 설치.

$ ctags --version 으로 잘 설치되었는 지 확인.





Tlist    : 창 좌측으로 현재 파일에 있는 변수/함수명을 출력해주는 플러그인

taglist는 소스코드를 분석하여 변수, 매크로, 함수의 목록을 만들어준다. 따라서 소스코드의 구조를 쉽게 파악할 수 있다.


http://www.vim.org/scripts/script.php?script_id=273

CTags 플러그인이 기본적으로 있어야 이 플러그인을 쓸 수 있다.


단축키 설정

map <F7> :Tlist<CR>

let g:Tlist_WinWidth=24 이걸로 창의 너비를 조절할 수 있다.


현재 디렉토리에 있는 *.c 파일을 분석하려면 다음 명령을 순서대로 입력하면 된다.

:TlistAddFiles *.c

:TlistToggle


태그에서 엔터를 치면 즉시 해당 태그로 이동하여 편집할 수 있다.

태그에서 스페이스바를 누르면 변수나 함수의 선언 부분을 볼 수 있다.




The NERD tree    : 창 좌측으로 디렉토리와 파일들을 트리로 출력해주는 플러그인(디렉토리 탐색기)

http://www.vim.org/scripts/script.php?script_id=1658

편하게 하기위한 단축키 설정

map <F8> :NERDTreeToggle 경로<CR>


NERD tree 의 주요 브라우징 단축키

<CR>, o                    디렉토리의 경우 이동, 파일인 경우 열어준다.

t                                 파일을 새로운 탭에 열어준다.

T                                파일을 새로운 탭에 백그라운드로 열어준다.

x                                현재 선택된 노드를 닫고 상위 노드로 이동한다.

X                               현재 선택된 노드를 포함하여 하위 노드를 모두 닫는다.

e                               선택된 노드를 새 창에서 열어 준다.


자세한 설명

? : 도움말창 토글

q : NERDTree 종료


- 디렉토리 이동

u : 상위 디렉토리로 이동

U : 상위 디렉토리로 이동, 모든 디렉토리리스트를 접음.

c : 선택된 디렉토의 하위 리스트를 새창을 열어서 보여줍니다.

C : 현재 선택된 디렉토리를 ROOT디렉토리로 두기(chroot)

cd : 현재 디렉토리명을 보여줌 (pwd)

P : 최상위 디렉토리(ROOT)로 이동

p : 부모 디렉토리로 이동

K : 첫번째 자식디렉토리로 이동

J : 마지막 자식디렉토리로 이동


- 새로고침

r : 현재 위치한 디렉토리를 새로고침

R : 전체 새로 고침


- 현재 선택된것이 디렉토리라면

o : 디렉토리 노드를 열기(보여주기)/접기

O : 모든 하위 디렉토리를 열기(보여주기) 

X : 열린 모든 하위 디렉토리를 닫기(O와 반대)


- 현재 선택된것이 파일이라면

o : 미리보기 윈도우를 띄워서 미리보기

go : 미리보기

t : 새탭으로 열기

i : 수평분할해서 보여줍니다.

gi : 미리보기 윈도우를 사용하여 수평분할해서 보여줍니다.

s : 수직분할해서 보여줍니다.

gs : 미리보기 윈도루르 사용하여 수직분할해서 보여줍니다.


:NERDTreeFromBookmark "Bookmarkname" "북마크된걸 최상위 루트로 해서 엽니다

:NERDTreeToggle "Tagbar과 비슷한거죠머.. 토글기능. 없으면 나오게 하고, 이미 있으면 없애고..

:NERDTreeMirror "다른탭에 있는 NERDTree를 현재 탭과 공유하는 기능이라고 하는데... 사용하지 않아서 전 잘 모르겠어용

:NERDTreeClose 

:NERDTreeFind "현재 열려있는 파일의 디렉토리의 트리를 봅니다. 그러니까, 현재디렉토리가 /tmp라면 새로띄우는 NERDTree의 Root는 /tmp 가 된다... 이말이죠.


~/.vimrc

let g:NERDChristmasTree = 1 "colorful 효과
let g:NERDTreeAutoCenter = 1 
let g:NERDTreeChDirMode = 1
let g:NERDTreeHighlightCursorline = 1 "현재 커서 위치를 하일라이팅합니다. 기본값은 1

let g:NERDTreeSortOrder=['\.c$', '\.h$', '*'] "*.c, *.h, 기타파일 순으로 정렬합니다.

let g:NERDTreeBookmarksFile = ~/.NERDTreeBookmarks "북마크 파일을 지정합니다. 이값은 디폴트 값이에요.

let g:NERDTreeIgnore = ['\.vim$', '\~$'] "*.vim파일과 끝이'~'로 끝나는 파일들은 보여주지 않습니다.

let g:lNERDTreeWinSize = 20 "NERDTree의 폭을 설정합니다.

let g:NERDTreeMinimalUI = 1 "NERDTree에서 (위에뜨는) help/bookmark 메세지를 보여주지 않습니다.


" let g:NERDTreeShowHidden = 1 "숨김파일을 보여준다고 합니다.

" let g:NERDTreeShowLineNumbers=1 "라인을 보여줍니다

" let g:NERDTreeShowFiles = 0 "0이면 파일을 보여주지 않고, 디렉토리만 보여줍니다.

" let g:NERDTreeWinPos = right "이렇게 설정하면 오른쪽에 NERDTree가 나타납니다.

" 이외에 더 자세한건 :help NERDTree




SrcExpl    : 윈도우 하단에 현재 커서 부분의 함수나 변수에 대한 선언부를 보여주는 플러그인

http://www.vim.org/scripts/script.php?script_id=2179




AutoComplPop    : 키워드 자동완성 플러그인

http://www.vim.org/scripts/script.php?script_id=1879






Python Plug-ins


많이 사용하는 파이썬 플러그인들 목록

http://www.vim.org/scripts/script_search_results.php?keywords=python&script_type=&order_by=rating&direction=descending&search=search




Python Syntax 파일. 

이것을 적용해야 vim에서 제대로 된 파이썬 syntax가 나온다. 나의 컴퓨터에서 윈도우랑 리눅스랑 똑같은 컬러스키마를 적용시켰는데 왜 틀리나했더니 syntax 파일의 버전이 달라서 그랬던거구나~!!

python-syntax.vim-master.zip




Pydiction    : Python AutoComplete 플러그인

http://www.vim.org/scripts/script.php?script_id=850

윈도우 gvim 기준으로 설명한다.

다운받아서 압축푼 후, 개발자의 설치 예와 같이 Vim\vimfiles\ftplugin에 python_pydiction.vim 파일을 넣어준다.

그 다음, ftplugin 디렉토리에 pydiction 디렉토리를 만든 후 나머지 파일들을 넣어준다.


vimrc 파일을 열어서 다음과 같이 두 줄을 넣어준 후 저장한다.

filetype plugin on

let g:pydiction_location='C:\Program Files (x86)\Vim\vimfiles\ftplugin\pydiction\complete-dict'


이렇게 하면 설치가 완료된다.

이 플러그인은 Tab키를 눌러서 자동완성을 실행한다. 즉, impo까지만 타이핑한 다음 Tab키를 누르면 목록이 쫘르륵~ 뜬다.

목록이 뜨면 Tab키를 눌러서 밑으로 옮겨다닐 수 있다. Shift + Tab 키는 위로 올라간다.




pyflakes.vim : PyFlakes on-the-fly Python code checking 

코딩 시 자동으로 문법오류를 잡아줌. 화면에 틀린 부분 나오도록하는 파이썬 플러그인

http://www.vim.org/scripts/script.php?script_id=2441

https://github.com/vim-scripts/pyflakes.vim


어디다 설치하는지 모를 경우 이 명령어로 현재 vim이 실행되고있는 경로를 알 수 있다.


echo $VIMRUNTIME


설치 방법도 간단하다. 리눅스를 쓰고 있다면, 그냥 ~/.vim/ftplugin에 넣어주기만 하면 자동으로 실행된다.

gvim 에서의 설치는 잘 모르겠다. 



문법이나 논리적인 오류가 나면 저렇게 붉은색으로 표시가 된다. 그리고 그 부분에 커서를 가져가면 밑에 어떤 오류인지가 나온다. 

와우~ 좋다!!



'Vim > Plug-Ins' 카테고리의 다른 글

Vundle for Linux  (0) 2013.03.21
Vundle for Windows  (0) 2013.02.20
VIM 자세한 설정  (0) 2013.01.15
autocomplpop (vim 자동완성 플러그인)  (0) 2012.05.09
c.vim 플러그인 설치  (0) 2012.05.09
Posted by scii
:

오퍼레이션 펜딩 모드(operation pending mode) 는 새로운 모드라기 보다는 일반 모드의 기능 중 명령어가 지연되는 방식을 의미한다.


오퍼레이션 펜딩 모드

예를 들어, d 명령이 실행되기는 하지만 뒤따라오는 추가 명령어가 입력되기까지는 대기 상태(pending)에 머무른다. 이렇게 다른 명령어를 받기 위해 대기하는 상태를 오퍼레이션 펜딩 모드라고 한다.

만일 vim의 모움말 문서를 보는데 일반 모드의 명령어를 여러 개의 키 입력으로 실행해야 한다면 오퍼레이션 펜딩 모드를 사용하는 명령어일 가능성이 매우 높다.


범위 지정하기

vim의 모움말을 보면 오퍼레이션 펜딩 모드에 추가로 입력되는 키 중에 {motion}이라고 부르는 것들이 종종 등장하는데, 이는 단어 사이나 행, 특정 위치로 이동하는 키 입력을 기리키며, 이때 입력된 이동 범위가 명령어가 작동할 범위가 된다. 


{motion}을 사용하는 명령어의 예

y{motion}                {motion}만큼 복사

d{motion}                {motion}만큼 삭제

c{motion}                {motion}만큼 변경(삭제 후 입력 모드로 전환)


이렇게 오퍼레이션 펜딩 모드를 사용하는 이유는 나중에 단축키나 자동화를 배울 때 오퍼레이션 펜딩 모드에 따라 다양한 기능을 구현할 수 있기 때문이다.


Tip: 커서 위치의 단어를 선택하는 {motion}

dw 명령으로 단어 하나를 온전히 삭제하려면 커서의 위치가 단어의 시작 부분이어야 하는 단점이 있다. 이런 단점을 보완하여 커서 위치가 어디든 상관 없이 단어 전체를 삭제 범위로 지정할 수 있는 aw와 iw 명령이 존재한다.

이들은 오퍼레이션 펜딩 모드로 작동하는 다은 명령어와 결합하여 daw, diw 혹은 caw, ciw 처럼 사용된다. 

차이점은, aw가 단어의 앞뒤 공백을 포함하는 반면, iw는 공백을 포함하지 않는다는 점이다. 단 aw의 공백은 문맥에 따라서 앞부분일 수도 있고 뒷부분일 수도 있다.

이 기능들은 뒤에서 다룰 녹화, 반복 작업, 단축키에서 유용하게 써먹을 수 있다.




약어 매크로

약어(abbreviation) 매크로는 입력 모드나 명령행 모드에서 길고 복잡한 문장을 짧은 단어로 대체하여 입력할 수 있는 기능이다.

예를 들어 mymail 이라고 하면 asldkfjl@nasl.com 이 입력되게 한다. 혹은, 입력 모드에서 'time0' 이라고 입력하면 현재 날짜와 시간이 입력되게 한다.

이런 기능을 구현하려면 .vimrc 파일에 코드 내용을 넣어두면 된다.

이제 mymail 이라고 입력한 후 space,  tab 혹은 문장부호를 누르면, mymail단어가 즉시 메일주소로 바뀐다. 한편 mymailaddress라고 입력했을 때는 'mymail' 이 독립된 단어로 인식되지 않으므로 매크로가 작동하지 않는다.

이때 억지로 약어를 변환하고 싶다면 <CTRL-]> 를 사용하면 된다. 반대로 'mymail' 이라는 단어를 입력했지만 약어로 해석되기를 원하지 않는다면 <CTRL-V> 를 누르면 된다.


ia 는 입력 모드에서만 작동하는 약어이다. 그리고 입력 모드에서 <C-R> 은 레지스터 버퍼를 붙여 넣는 단축키이며 는 레지스터 이름이 된다.

= 레지스터는 특수 키나 함수 같은 기능을 호출할 때 주로 사용하는데 여기서는 현재 시간을 출력하는 vim 내장 스크립트 함수인 strftime을 호출하는 데 사용되었다.


약어 설정과 해제

ab나 ia와 관련된 주요 기능 (약어의 주요 기능) 도움말의 abbreviation 참고

:ab [lhs]                현재 설정된 모든 약어 목록을 출력한다. lhs에 약어를 지정하면 해당 약어의 정보만 출력한다.

:ab {lhs} {rhs}       약어 lhs를 rhs로 설정한다.

:unab {lhs}            약어 lhs를 해제한다.

:abclear                설정된 모든 약어를 해제한다.

:ia {lhs} {rhs}        ab와 기능은 같지만 입력 모드에서만 작동한다.

:ca {lhs} {rhs}       ab와 기능은 같지만 명령행 모드에서만 작동한다.


명령행 모드에서만 작동하는 ca는 여러모로 쓸모가 있다. 예를 들어 :w나 :wq 를 잘못 입력하여 :ㅈ, :ㅈㅂ 가 입력되었을 때 이를 자동으로 변환해 준다.


Tip: 한글이 포함된 약어 매크로가 작동하지 않을 경우

간혹 한글이 포함된 약어가 제대로 작동하지 않는 경우가 있다. 이는 .vimrc 파일과 편집하는 문서 파일의 인코딩 형식(fileencoding)이 일치하지 않기 때문이다. 예를 들어 유닉스 계열의 vim에서는 .vimrc 파일이 UTF-8 형식으로 저장되는데, 현재 편집하는 파일은 EUC-KR 형식이라면 이런 문제가 발생한다.

반대로 윈도우용 vim에서는 _vimrc 파일이 EUC-KR로 저장되므로, UTF-8로 저장된 파일을 편집하면 같은 문제가 발생한다. 

이런 문제를 해결하려면 설정 파일과 편집할 파일의 fileencoding을 통일시켜야만 한다.




편집 관련 레지스터

레지스터는 크게 세 가지로 나눌 수 있다.

첫째는 편집 과정에서 복사나 삭제했던 데이터를 저장하는 레지스터.

둘째는 vim의 각종 기능에 사용된 인수를 기억해두는 레지스터.

셋째는 파일에 관련된 레지스터.


레지스터 목록(편집에 관련된 레지스터)

""                    가장 최근에 복사, 삭제된 데이터

"0                    가장 최근에 복사(yank)된 데이터

"1~"9               가장 최근에 삭제된 데이터(시간순, 1번이 가장 최근 데이터)


p는 "" 레지스터의 내용을 붙여넣는 명령어이다. 만일 "3 레지스터를 붙여 넣고자 한다면 "3p 라고 명령하면 된다. 따라서 p 명령도 ""p와 같은 의미라고 볼 수 있다.


기능 관련 레지스터

기능에 관련된 레지스터의 이름에는 기호가 많다. 그런데 굳이 외울 필요는 없다.

왜냐하면, (-)는 가장 최근에 한 라인 이내로 삭제한 데이터, 슬래쉬(/)는 검색하는 키, 콜론(:)은 명령행 모드로 바꾸는 키, 마침표(.)는 최근 명령어를 반복하는 키이기 때문이다. 따라서 대부분 각 기능을 사용하는 키가 바로 기능 관련 레지스터의 이름이 된다.


파일 관련 레지스터

파일에 관련된 레지스터의 이름도 직관적이다. 

%는 현재 파일명을 의미한다. 즉, 현재 파일명은 문서 전체를 의미한다는 말이다. 

#은 이전에 열었던 파일명이다.


사용자 등록 레지스터

영문자는 사용자가 임의로 등록할 수 있는 레지스터이다. 그런데 레지스터 이름에 소문자를 쓰는 경우와 대문자를 쓰는 경우가 다르기 때문에 주의해야 한다.

"byiw 라고 명령하면, b 레지스터에 대해 yiw 명령을 실행한다. 여기서 iw는 공백을 포함하지 않는 단어 단위 선택이므로 공백을 제외하고 커서 아래의 단어만 b 레지스터에 복사된다.

:reg b 명령을 입력하면 볼 수 있다.

특정 레지스터의 이름을 지정해서 내용을 확인할 대는 앞의 겹 따옴표는 생략할 수 있다. 따라서 :reg b 혹은 :reg "b는 동일한 명령이다.


"Byy 는 B 레지스터에 대해 yy명령을 실행한다는 뜻이다. 하지만 명령 후 :reg 로 전체 레지스터 목록을 확인해보면 B레지스터가 존재하지 않는 것을 보게 된다. 대신 b 레지스터의 내용이 바뀌어 있는 것을 확인할 수 있다.

즉, 대문자 레지스터는 기존의 소문자 레지스터의 뒤에 내용을 추가하는 명령으로 작동한다.


^J 는 개행 문자를 의미, ^I 는 탭을 의미


레지스터 복사, 삭제, 붙여넣기

레지스터로 확장된 복사, 삭제, 붙여넣기

"{reg}y{motion}                {reg} 레지스터에 {motion}에 해당하는 부분을 복사한다.

"{reg}p                           {reg} 레지스터의 내용을 현재 커서 뒷부분에 넣는다.(개행 문자가 포함된 경우 커서의 아래 행에 넣는다)

"{reg}P                           {reg} 레지스터의 내용을 현재 커서의 앞부분에 넣는다.(개행 문자가 포함된 경우 커서의 윗 행에 넣는다)

"{reg}d{motion}               {reg} 레지스터에 {motion} 에 해당하는 부분을 잘라 넣는다.

CTRL-R{reg}                   입력 모드에서만 사용하는 명령으로 {reg} 레지스터에 붙여 넣습니다. "{reg}를 생략하면 ""레지스터를 가리킨다.


레지스터의 내용은 .viminfo 파일에 저장되므로, vim을 종료한 뒤에 다시 실행해도 레지스터를 사용할 수 있다.

'Vim > Tutorial' 카테고리의 다른 글

반복적인 작업 녹화하기  (0) 2013.02.06
자동화  (0) 2013.02.05
공백 지우기  (0) 2013.02.05
파일 열기(고급)  (0) 2013.02.05
파일 관련 기능  (0) 2013.02.04
Posted by scii
:

공백 지우기

Vim/Tutorial 2013. 2. 5. 03:37 |

공백 라인 지우기

:g/^$/d

문서전체(g)에서 처음과 끝이 만나는(^$) 것을 지운다(d).


문장 끝 공백 지우기

:%s/ \+$//g

문장 맨끝에서 ($) 스페이스가 있는 것을 모두 지운다.

'Vim > Tutorial' 카테고리의 다른 글

자동화  (0) 2013.02.05
오퍼레이션 펭딩 모드 / 약어 매크로 / 레지스터 활용  (0) 2013.02.05
파일 열기(고급)  (0) 2013.02.05
파일 관련 기능  (0) 2013.02.04
문자, 문자열 검색/치환  (0) 2013.02.02
Posted by scii
:

파일 열기(고급)

Vim/Tutorial 2013. 2. 5. 02:45 |

버퍼(파일) 목록 보기

:ls, :buffers, :files 이라고 명령하면 열려 있는 파일 목록이 나타난다.

위의 3개 명령어 중에 하나를 선택하여 명령을 내리면 아래의 사진처럼 화면이 나온다.


vim에서는 편집 중인 문서를 버퍼(buffer)라고 부르며, 문서를 불러와서 보거나 작업하는 기억장치라는 의미로 사용된다. 버퍼가 특정 파일과 연결되어 있는 상태에서 불러오거나 저장되는 경우라면 '버퍼 = 파일' 이라고 말해도 큰 무리가 없지만, 빈 문서로 만들어진 경우라면 아직 파일과 연결된 상태가 아니므로 파일이라고 부를 수 없다.

그래서 파일명이 있든 없든 작업하는 문서를 가리켜 버퍼라고 한다. vim 매뉴얼을 읽을 때도 상황에 따라서 버퍼가 문서임을 알아두면 이해하기 쉬울 것이다.


vim은 종료하기 전까지 한 번이라도 열었던 파일의 목록을 모두 유지하고 있다. 위의 그림처럼 파일 목록이 7개이며, 각 파일명 뒤에는 몇 번째 행을 보고 있었는지도 표시된다. 

숫자와 파일명 사이에 표시되는 %나 # 기호는 해당 파일의 상태를 나타낸다.


버퍼 목록에 표시되는 기호

%                현재 편집 중인 버퍼

#                  바로 이전에 열었던 버퍼 혹은 다음에 열도록 예비된 버퍼. <CTRL-^>를 누르면 #이 표시된 파일이 열린다.

a                  활성된 버퍼(현재 화면에 보이는 버퍼). 창 분할 기능을 쓰는 경우에는 여러 파일에 a표시가 나타난다.

+                  변경된 부분이 있는 버퍼


버퍼 목록에 파일 추가하기

일반적으로 버퍼 목록은 열었던 파일들을 자동으로 추가하여 작성된다. 하지만 열지 않았던 파일도 수동으로 목록에 추가할 수 있다. 

사용법은 :n {pattern} 으로, :n 명령의 확장된 방법이다. 예를 들어 :n *.txt 라고 하면 현재 디렉토리에서 *.txt 에 해당하는 모든 파일을 찾아서 목록에 추가한 후, 첫 번째로 검색된 파일을 열어준다.

여기에 하위 디렉토리를 검색하는 기능을 추가하고 싶을 때는 **를 붙여서 :n **/*.txt 라고 명령하면 된다. 

이를 활용해서 :n doc**/*.txt 라고 하면 doc로 시작하는 디렉토리에 대해서만 검색할 수 있다. 

:n 명령어가 확장되듯 이전 파일로 이동하는 명령인 <CTRL-^> 과 :e #{n} 으로 확장되며, N에는 :files에서 보이는 파일 번호를 지정할 수 있다. 


버퍼 관련 명령어들

:ls                                파일 목록을 확인한다.

:buffers

:files

:n {pattern}              지정된 pattern으로 파일을 검색하여 목록에 추가하고 첫 번째 검색된 파일을 열어준다.


{N}CTRL-^                {N} 번째 파일 목록을 연다.

:e #{N}

:0f                             현재 버퍼를 목록에서 제거한다. 연결된 파일이 있다면 해제하여 [No Name]버퍼로 만든다. 

:r[ead] 파일              파일을 끼워 넣는다.



본문에 등장한 파일명 인식하여 열기

본문에 등장하는 파일명을 인식하여 해당 파일을 열 수 있다. 주로 프로그래밍 소스나 스크립트 파일에서 볼 수 있다.

만약, 파일중에 /etc/bashrc 파일이 나오면 이 파일을 불러와서 살펴볼 수 있다. 방법은 :e /etc/bashrc 라고 명령하면 되겠지만, 엔터까지 포함하면 무려 열 다섯 번이나 키보드를 눌러야 한다. 

그래서 더 편리한 방법으로 파일명 위에 커서를 두고 gf 를 입력하면 곧바로 파일을 열 수 있다. (이 명령은 goto file 이라는 의미)


본문의 파일명을 인식해서 열어주는 명령어

gf                                커서 위치의 파일명을 인식해서 열어준다.

<CTRL-W> f             커서 위치의 파일명을 분할된 창에 열어준다.

<CTRL-W> gf           커서 위치의 파일명을 탭에 열어준다.


gf 는 디렉토리가 포함된 경우 경로 전체를 인식할 수 있으며, 경로가 없고 파일명만 있는 경우에는 현재 디렉토리와 path 옵션에 설정된 디렉토리를 순서대로 검색한다.


Tip: 

유닉스 계열의 vim에서는 path에 시스템 헤더 디렉토리가 기본으로 포함되어 있으므로 C 언어 헤더를 검색할 수 있다. 예를 들어 C 언어 소스코드의 #include <stdio.h> 가 있다면 stdio.h 위에 커서를 두고 gf를 누르면 시스템 헤더 파일을 찾아서 열어준다.

만일 사용자가 검색 대상 디렉토리를 추가하고 싶다면 path에 추가하면 된다. 예를 들어 ~/doc 를 추가하고 싶다면 :set path+=~/doc 라고 명령하면 된다. 

자주 쓰이는 파일들이 있다면 설정 파일인 .vimrc 에 경로를 추가해두면 되겠다.


'Vim > Tutorial' 카테고리의 다른 글

오퍼레이션 펭딩 모드 / 약어 매크로 / 레지스터 활용  (0) 2013.02.05
공백 지우기  (0) 2013.02.05
파일 관련 기능  (0) 2013.02.04
문자, 문자열 검색/치환  (0) 2013.02.02
vim 에러 처리  (0) 2013.02.02
Posted by scii
:

파일 관련 기능

Vim/Tutorial 2013. 2. 4. 03:13 |

열었던 파일 다시 열기

a.c 파일을 작업하다가 e! b.c 를 불러들였다는 가정하에, 

그럼 현재 b.c 파일을 편집하고 있을텐데 여기서 <CTRL-^> 를 누르면 이전 파일인 a.c 파일이 열린다. 계속 <CTRL-^>  를 누르면 a.c 파일과 b.c 파일 사이를 오갈 수 있다. 

이렇게 한번 열었던 파일을 다시 열 수 있는 이유는, vim이 최근에 연 파일 목록을 기억하고 있기 때문이다.


한번에 여러 파일 열기

vim a.txt b.txt c.txt 라고 명령하면 a.txt가 열린 상태로 vim이 시작되지만, 내부적으로는 세 파일이 목록에 등록이 된다. 이 상태에서 :n 이나 :N 명령을 사용하면 파일 사이를 전환할 수 있다. 반복 횟수를 지정하여 :2n 이라고 하면 두 번째 뒤의 파일로 이동한다.

파일 사이를 이동할 때, 실제로는 현재 파일을 닫고 다음 파일을 여는 순서로 진행되므로 변경된 내용을 저장하지 않으면 역시 에러가 발생한다. 

만일 변경된 내용을 버리고 강제로 다른 파일을 열려면 느낌표(!) 기호를 넣어 :n! 이나 :N! 으로 명령하면 된다. 


여러 파일 닫기

여러 파일이 열려 있을 때 :q 로 종료하려고 하면 다른 파일이 있기 때문에 종료되지 않는 경우가 있다. 이를 무시하고 종료하려면 :q! 나 모든 윈도우를 다는 :qa 명령을 사용하면 된다.


Tip: 표준 입력을 통해서 읽어오기

유닉스, 리눅스, 맥에서는 다른 프로세스에서 출력된 결과를, 표준 입력을 통해 vim에서 읽어 올 수 있다. 

예를 들어, ps -ef 명령의 결과를 vim으로 가져오고 싶다면 쉘에서 'ps -ef | vim -' 명령을 실행하면 된다. (아니면, vim에서 'r !ps -ef' 명령을 내려도 된다.)

이때 '-' 는 표준 입력을 의미한다. 이 기능은 명령의 결과가 길거나 실행 결과를 편집해야할 때 유용하다. 




다양한 파일 저장법

파일을 저장하는 명령에는 :w 외에도 다른 이름으로 저장하거나 변경점이 있는지 확인해서 저장하는 명령도 있다. 


파일을 저장하는 다양한 명령어

:w filename                        파일을 저장

:sav filename                    현재 파일을 다른 이름으로 저장(save as)

:up                                        변경 사항(update)이 있는 경우에만 저장

:x                                         vim을 종료하면서 변경 사항이 있는 경우에는 저장 (일반 모드에서는 ZZ)

※ 새로운 파일로 저장하면서 편집 중인 파일도 바꾸는 명령: sav[!] {file}


변경 사항이 있을 때만 파일 저장하기

:up 명령은 변경 사항이 있는 경우에만 저장하고 변경 사항이 없을 때는 아무일도 하지 않는다. 이에 비해 :w 명령은 무조건 저장하므로 변경 사항이 없을 때도 디스크 입출력이 발생하는데, 여러 사용자가 공동으로 사용하는 서버에서는 이러한 디스크 입출력은 부담이 된다. 

따라서 :up 명령을 권장한다. 

:x 명령은 :up과 :q 명령을 결합한 형태로서 :wq 대신 사용할 수 있다. 많은 사용자들이 :wq 로 vim을 종료하는데, :w 명령은 무조건 저장하여 디스크 입출력을 발생시킨다는 단점이 있다. 

따라서, 이제부터는 :wq 대신 :x나 ZZ 의 사용을 권장한다.




창 분할

창 수평 분할

:sp 명령을 입력하면, 창이 위/아래로 분할된다. 단축키로는 <CTRL-W> s 이다.

다른 파일로 창을 분할하고 싶다면 :sp file 명령을 사용하면 된다. 기본적으로 새 창과 기존 창은 균등한 크기로 나뉘며, 새창의 크기를 직접 지정하려면 sp 명령 앞에 크기를 넣으면 된다. 

예를 들어 :10sp file 로 명령하면 새로 생성되는 창의 크기는 10행이 된다. 


창 수직 분할

:vs 명령을 입력하면(vertical), 창이 왼쪽/오른쪽으로 분할 된다. 단축키로는 <CTRL-W> v 이다.


창 분할 명령어 정리

:[#]sp [파일명]                        [#]CTRL-W s                상하로 창을 분할. 파일명 생략하면 현재 파일을 의미

:[#]vs [파일명]                        [#]CTRL-W v                좌우로 창을 분할

:[#]new [파일명]                        [#]CTRL-W n            상하로 분할하고, 위쪽에 새로운 창을 만듦

:[#]vnew [파일명]                        [#]CTRL-W v           좌우로 분할하고, 왼쪽에 새로운 창을 만듦


여러 파일을 분할된 창에 열기

vim을 시작하면서 여러 파일을 분할도니 창에 열고 싶다면 -o 옵션을 사용하면 된다. 

vim -o hello.c hello2.c

이렇게 옵션을 넣으면 위쪽 창에 hello.c 를, 아래쪽 창에 hello2.c 를 열어준다.

소문자 -o 대신에 대문자 -O 를 사용하면 창은 좌우로 분할된다.


창 크기 조절

창의 크기를 조절할 때는 <CTRL-W> 에 +,- 를 사용하여 크기를 키우거나 줄일 수 있다. 

그리고 현재 열린 창의 크기를 모두 균등하게 만들 때는 <CTRL-W> = 를 사용한다.


분할된 창의 크기를 조정하는 명령어

CTRL-W =                    모든 창의 크기를 동일하게 조절

CTRL-W [#]+                # 크기만큼 크기를 키운다. #을 생략하면 1을 키운다.

CTRL-W [#]-                # 크기만큼 크기를 줄인다.




파일 내용 비교하기

vim 을 시작할 때 -d 옵션을 사용하여 vim -d file1 file2 처럼 명령하면, file1과 file2 를 수직 창 분할로 열면서 내용이 서로 다른 부분을 강조하여 표시해준다.

윈도우용 vim에서는 여러 파일을 선택한 뒤에 마우스 오른쪽 팝업 메뉴의 '빔으로 Diff' 를 실행하면 된다.


※ 다른 점을 비교한 후, 다른 점을 가져오는 기능(do)과 다른 점을 복사해 넣는 기능(dp)도 사용할 수 있다 


:diffthis 명령을 양쪽 모두 실행시키면, vim이 실행되어있는 상태에서 두 파일을 비교할 수 있다. 

그리고, :diffget, diffput 의 명령을 이용하면 다른점을 파일로 복사해 올 수 있다.




탭 페이지

창 분할 기능에는 결정적인 단점이 있다. 바로 분할할 때마다 편집 화면이 반으로 줄어든다는 점이다. 

그래서 vim 7 버전에서는 전체 화면에서 여러 파일을 열 수 있는 탭 페이지 기능이 추가되었다.


탭으로 열기

:tabedit aa.c 라곰 명령하면 화면 상단에 탭이 생기면서 현재 파일몇에 aa.c 파일의 탭이 열린다.


탭 사이 이동하기

:tabprevious 명령은 이전(previous) 탭으로 이동한다. 

:tabnext 명령은 다음(next) 탭으로 이동한다.

단축 명령인 :tabn, :tabp 으로 할 수 있다.

단축키인 <CTRL-PageDown>, <CTRL-PageUp> 이 많이 쓰인다. 주의할 점은 터미널에서는 <CTRL-PageDown>, <CTRL-PageUp> 키가 스크롤다운, 스크롤업으로 예약되어 제댜로 작동하지 않을 수 있다는 점이다.


탭 이동 명령

:[#]tabn[ext]                                다음 탭으로 이동, 일반 모드의 gt와 동일    

[#]gt                                                #에 숫자를 지정하면 탭 번호가 지정됨

[#]<CTRL-PageDown>               


:[#]tabp[revious]                        이전 탭으로 이동, 일반 모드의 gT와 동일

[#]gT                                             #에 숫자를 지정하면 반복수가 지정됨

[#]<CTRL-PageUp>

:tabm[ove] [#]                            #번째 탭으로 현재 탭을 이동시킨다(0부터 시작).  #이 생략되면 가장 오른쪽으로 이동.


탭 열고 닫기

:tabclose 명령을 입력하면 탭을 닫을 수 있다.

새 파일을 탭으로 여는 명령은 :tabnew 이다. 파일명을 지정하면서 새 탭을 열고 싶다면 :tabnew filename 명령을 사용한다.


탭 생성과 종료 명령

:[#]tabe[dit] filename            #번째 탭에 파일을 연다. #이 생략되면 현재 탭 뒤에 생성. 번호는 0부터 시작

:[#]tabnew filename            #번째 위치에 비어있는 탭을 만든다.

:[#]tabc[lose]                          #번째 탭을 닫는다. #을 생략하면 현재 탭을 닫는다.

tabedit, tabnew, tabclose 의 앞에 숫자를 넣으면 열거나 닫는 탭의 숫자를 정할 수 있다.


Tip:    vim 시작 시 여러 파일을 탭으로 열기

vim을 시작하면서 여러 파일을 탭으로 열고 싶은 경우!! 이를 위해서 -p 옵션이 제공된다. 

예를 들어 vim -p aaa.txt bbb.txt 라고 명령하면 두 파일이 각각 탭으로 열린다

'Vim > Tutorial' 카테고리의 다른 글

공백 지우기  (0) 2013.02.05
파일 열기(고급)  (0) 2013.02.05
문자, 문자열 검색/치환  (0) 2013.02.02
vim 에러 처리  (0) 2013.02.02
명령어 표기법에 대해서  (0) 2013.02.02
Posted by scii
: