▶ 기초
리눅스와 좀 더 친해지기....
리눅스는 직접 경험해 봐야 익숙해지고 알 수 있게 된다.
1. 여러 파일을 편집하는 방법
vi file1.c file2.c file3.c /*file1, file2, file3 열기*/
vi *.c *.h /*c파일과 헤더파일 열기*/
:ls | 열린 파일 리스트 보기 |
:b[N] ex):b2 | 버퍼 2(file2.c)로 이동 |
:bw[N] | N버퍼 삭제(N없으면 현재 버퍼) |
:bp[N] | 이전 버퍼 이동(N번) |
:bn[n] | 이후 버퍼 이동(N번) |
tip>
코딩을 하는 사람이라면, 이 방법보다 플러그인을 활용한 Tlist를 사용할 수 있다.
여러 파일 편집과 아래의 키 매핑의 기능은 Tlist로 더욱 쉽게 사용 할 수 있다.
2. 키 매핑
map ,1 : b!1<CR> ~/.vimrc 파일 편집(추가) map ,2 : b!2<CR> |
- map = 맵핑
- ,1 : b!1 = ex모드(ESC 누른 상태)에서 ,1을 눌렀을 때 b!1<CR> 이 실행
- b!1 = 파일을 수정중일때 경고 무시하고 강제로 창 전환
- <CR>
주의> ",1" 누를 시 ','키 누르고 뗀 후 빨리 '1'키를 눌러야 인식
tip>
<F4>키로 Tlist를 실행 혹은 ,ma 키 입력으로 해당 줄의 함수의 man 페이지를 볼 수 있도록 할 수 있다.
3. 매크로 사용
: ex 모드에서 qb( q[네임레지스터명] ) 입력 시 하단에 '기록 중'글이 나온다. 이 후 누르는 키는 b 레지스터에 저장된다.
ex>^i//[space bar][ESC][ENTER] |
^ : 행의 처음 i : 삽입 esc : ex모드 enter : 개행 |
@b 혹은 5@b 형태로 사용 가능 하며 자동으로 주석처리를 하게 된다.
4. 다중 창 사용
: 터미널을 분할하여 효율적으로 사용 한다.
[분할]
ctrl+w n | (new)가로 분할 |
ctrl+w s | (split)동일한 파일을 복사, 가로 분할 |
ctrl+w v | (vertical)동일한 파일 복사, 세로 분할 |
분할된 창에서 파일 로드 ==> :e[파일명]
[창 이동]
ctrl+w w | 창전환 |
ctrl+w h/j/k/l | 왼쪽, 위, 아래, 오른쪽으로 이동 |
ctrl+w 화살표 | 위와 동일 |
ctrl+w t | (top) 가장 위의 창으로 |
ctrl+w b | (bottom) 가장 아래 창으로 |
[크기 변환]
ctrl+w _ | 수평분할일때 현재 창 최대로 |
ctrl+w | | 수직분할일때 현재 창 최대로 |
ctrl+w = | 모든창을 동일한 크기로 |
ctrl+w [N]+ or [N]- | 수평분할일때 해당 창 n씩 크기 변동 (n이 없을 시 1크기만큼 변동) |
ctrl+w [N]> or [N]< | 수직분할일때 해당 창 n씩 크기 변동 |
5. 마킹 이동
: 코딩을 하다가 기억해야 하는 위치가 있을 때 마킹을 사용하면 해당 위치로 복귀가 가능하다.
전역마킹(A - Z) : 서로 다른 파일간에서도 이동 가능
지역마킹(a - z) : 현재 파일 내에서만 이동 가능
마킹 | ex모드, ma or mb |
마킹된 행의 처음으로 이동 | ex모드, :'a |
마킹 테이블 보기 | ex모드, :marks |
6. 쉘명령어 사용
: 편집 중 쉘을 잠시 써야 하는 일이 발생할 때, 번거롭게 새 터미널을 켜거나 vim을 종료 하지 않고 이용 할 수 있다.
:!ls ls가 실행되고 다시 vim으로 복귀
:!bash, :sh, :shell 잠시 쉘로 이동, 쉘에서 exit로 vim 복귀
7. 문자 치환
:패턴s/기존문자열/바꿀문자열/옵션
:%s/기존/바꿀/g
예를들어 첫줄부터 끝줄까지의 index를 dex로 바꾸려면 다음과 같이 쓰면 된다.
:%s/index/dex/g
옵션 c : 바꿀때마다 묻기
8. 복사/붙이기/잘라내기/삭제
복사 - yy(현재 행 복사), 10yy 10개의 행 복사
붙이기 - p
잘라내기 - x
삭제 - dd(현재 행 삭제)
9. 되돌리기/되살리기
되돌리기 - u
되살리기 - ctrl+r
10. 주석
1. Ctrl + v 로 원하는 만큼 블록지정
2. Shift + i
3. // 입력
4. ESC 2번 누름
1. Ctrl + v 로 원하는 만큼 블록지정
2. x
11. 탭 끼워넣기/제거
v 키로 블럭을 잡고 '>' 또는 '<' 키로 탭을 넣기/제거 할 수 있다
-sw(shift width) : < 또는 >로 탭 사이즈를 조절할때 표시 크기.
:set sw=4 #vim설정
▶ tip + plugin
1. 파일 탐색 기능 - 디렉토리 브라우징과 선택열기가 가능하다.
:20vs ./
2. 빠른 괄호 이동 - if, while 문의 범위가 어디까지인지 한번에 확인 할 수 있다.
'{' 기호에서 %를 누르면 쌍을 이루는 괄호로 이동.
3. 폴딩기능
함수 시작부위 '{' 위에 커서를 두고 명령모드에서 v]}zf
혹은 ./vimrc 에 매핑시켜 사용가능 하다.
map <F1> v]}zf
4. 함수의 원형보기, 지역변수 선언 부분 바로 이동
함수 원형 보기 -[i
선언부분 바로 이동 -gd
5. 흐트러진 소스 정렬
v로 블록 지정후, '=' 키
6.파일에서 다른 부분 비교하기 - 다른 부분의 라인이 색깔표기되어 알기쉽다
vimdiff a.txt b.txt
7. header 파일 바로 읽기 - ~/.vimrc에서 지정되있는 path에서 파일을 찾기때문에, 만약 열리지 않는 헤더파일이 있다면, 그 곳의 path를 지정해주어야 한다.
일고자 하는 헤더에 커서 위치 -> ctrl+wf (창이 수평분할 되며 헤더파일이 열린다)
path 지정 - set path=/usr/include (.vimrc에)
8. plug in 사용(tag list, ctags, 자동완성, help page 세팅)
8.1. TagList
왼편에 추가된 것이 taglist이다.
구조체, 변수, 함수 등이 정리되어서 나오며 해당 위치로 바로 이동 가능하다.
창전환 : crtl +ww
창전환으로 tag쪽에 커서가 이동하면, 이동 하고픈 곳에서 엔터키를 눌러서 해당 라인으로 이동하게 된다.
설치법.
1. 우선 apt-get install ctags로 ctags를 설치 한다.
2. taglist 최신버전을 다운 받는다.
http://vim.sourceforge.net/scripts/script.php?script_id=273
3. 받은 파일의 압축을 풀면 doc/, plugin/ 폴더 두개가 있고 각각 폴더에 doc/taglist.txt, plugin/taglist.vim 파일이 존재한다.
그 파일들을 각각 아래 위치로 이동
/usr/share/vim/vim72/doc/
/usr/share/vim/vim72/plugin/
실행법.
1. 커맨드모드에서 :Tlist 입력
2. vimrc파일을 열어 단축키를 지정
map <F4> :Tlist<cr> //커맨드 모드에서 :Tlist 입력 과 같다.
8.2 ctags
소스원문에서 해당 함수로 이동할 수 있다.
- 함수 들어가기 : ctrl+]
- 이전 위치로 돌아오기 : ctrl + t
8.3. 자동완성기능
filetype plugin on
vim 7.? 버전 이상에선 위와 같이 적어주면 된다. tab과 ctrl+p로 자동완성이 가능하다.
set complets : 이것이 자동완성 기능이다.
c 소스를 vi로 연 후 (ctrl+p?) ctrl+space 를 눌러보자
이제 vim으로도 멋지게 코딩합시다.
8.4 plugin help page 세팅
doc 페이지 세팅
:helptags /usr/share/vim/vim73/doc/
다만 위의 폴더에 플러그인의 doc 문서가 존재해야 한다.
doc 페이지 보기
:help taglist (혹은 help tagli 까지만 해도 비슷한 류가 있다면 해당 doc 문서가 열린다)
------------------------
ctags 더 자세한 내용 :
http://www.viper.pe.kr/cgi-bin/moin.cgi/ctags_%EC%99%80_vi_%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
'학습자료 > 리눅스' 카테고리의 다른 글
[리눅스] /proc 파일 시스템 - 링크 (0) | 2012.11.13 |
---|---|
[리눅스] 날짜 시간 변경, 동기화 (0) | 2012.10.29 |
[링크] systemctl (0) | 2012.09.21 |
lsof를 이용하여 공유메모리 를 확인하는 방법[펌] (0) | 2012.09.20 |
fstab[펌] (0) | 2012.06.15 |