dev-os

[Linux] vim 유용한 명령어

검은바람 2013. 6. 26. 11:57
반응형

vi[Visual Edit]의 간단한 팁들...

[사용하고 있는 헤더파일 열기]

***.h (Header file) 에 커서를 이동시킨후에

[ctrl + wf] : 해당 Header file 이 창이 분할 되어서 표시된다.

------------------------------------------------------------------------------------

[Tab Size 를 변경하기]

명령어 모드에서

[set ts=8]

[set sts=4]

ts [tabstop] : tab 사이즈가 얼마나 보일지를지정한다.

sts [softtabstop] : 실질적으로 얼마만큼의 간격으로 이동할지를 지정한다.

-------------------------------------------------------------------------------------

[함수을 폴딩하기]

vi편집기에서 '접기'기능을 사용할 수 있다.

 

1. 사용법

   기본 단축키는 아래와 같다.

 

  • zf : 선택부분 접기
  • zi : 접는기능 토글(누를 때마다 접기/펴기가 토글됨)
  • zv : 커서 줄 보기
  • zo : 부분 펴기 (open)
  • zc : 부분 접기 (close)
  • zM : 모두 접기
  • zR : 모두 펴기
  • zd : 접은 부분 삭제
Ex)
1. shift+v 로 folding할 영역 선택
2. zf 를 눌러 folding 설정.
3. 접힌 부분에 커서를 위치시키고 zo로 펼칠 수 있다.
4. 펼쳐진 folding영역 내에 커서를 위치시키고 zc로 접을 수 있다.
 
2. folding방법 선택
   foldmethod를 세팅하여 어떤 방식으로 접기를 실행 할 지 설정할 수 있다.
  • manual - 수동
  • indent - ?
  • expr - ?
  • marker - 특정 marker로 지정된 영역을 폴딩
  • syntax -  syntax에 따라 자동폴딩
  • diff - 변경되지 않은 부분 폴딩
Ex) :set foldmethod=marker
 
3. .vimrc설정
  vimrc에 foldmethod를 설정해 놓으면 vi실행 시 folding된 상태로 창이 뜬다.

[출처] '접기'기능 (folding)|작성자 립윤

--------------------------------------------------------------------------------------

[함수의 범위를 파악하기]

함수의 범위가 어디까지인가 를 { , }확인가능하는 기능이다.

{ 에서 % 를 누르면 해당하는 } 로 이동한다.

--------------------------------------------------------------------------------------

[파일탐색기능으로 파일열기]

해당 화일을 같은 vi 상에서 보고싶을경우 어떤 파일명을 전부 입력하여 열수있지만

:20vs./ 와 같이 입력하면 탐색기와 같이 탐색하여 파일을 열수 있다.

20 -> 창의 사이즈(% 값이다.)

vs -> vertical screen 즉 vi 의 창을 세로 분할하여 파일의 내용을 보여주겠다는 것

./ -> 어느 폴더를 보여줄것인지 ./ 는 현재 폴더이다.

따라서 :20vs./ 를 입력하게 되면 창의 20% 가 탐색기와 같이 열리게 된다.

--------------------------------------------------------------------------------------

[현재vi창에서 다른 파일 열기]

현재의 창에서 다른 파일을 열고 싶을경우

:e FileName 을 입력하면 된다.

--------------------------------------------------------------------------------------

[파일의 처음과 끝으로 이동하기]

해당파일의 처음으로 이동하거나 끝으로 이동하려면.

파일의 처음으로 이동시 :1 을 입력하여 이동가능하나, gg 를 실행하면 파일의 처음으로 이동한다.

파일의 끝으로 이동하려면 :$ 를 입력하여 이동가능 하지만 G 를 실행하여도 파일의 끝으로 이동한다.

--------------------------------------------------------------------------------------

[블럭 지정하기]

한줄이 아닌 원하는 부분을 삭제하거나 복사 등의 명령을 내리고 싶을경우엔

ctrl+v 를 입력한 후에 원하는 부분을 블럭을 지정할 수 있다.

블럭을 지정한 후에

y : 해당 블럭 복사

d : 해당 블럭 삭제

U : 해당 블럭 대문자로 변경

u : 해당 블력 소문자로 변경

~: 해당 블력 대소문자 변환

--------------------------------------------------------------------------------------

[되살리기와 되돌아가기]

실행한 명령을 되돌리기 즉 윈도우의 ctrl+z 에 해당하는 u 명령어와

되살리기 윈도우의 ctrl + y 에해당하는 ctrl+r 명령어가 있다.

--------------------------------------------------------------------------------------

[문자열 치환하기]

해당하는 문자열을 치환하기 위해서는

:%s/old/new/g 를 실행하면 문서 전체를 범위로 하여 해당 old 문자를 new 로 치환한다.

:s/old/new/g 를 실행하면 현재 라인에서 검색하여 치환을 실행한다.

:%s/old/new/gc 를 실행하면 치환하기 전에 사용자에게 확인을 한다.

--------------------------------------------------------------------------------------

[vi창을 분할하여 사용하기]

작업을 하다보면 다른 파일의 소스를 참조해야할 일들이 있다 이럴때 창을 나누워 사용하면편리하겠지..

이럴때 사용하는 명령어는

ctrl+w s : 현재 파일을 두개의 수평창으로 나눔

ctrl+w v : 현재 파일을 두개의 수직창으로 나눔

이렇게 나뉘워진 창으로 의 이동은 ctrl + ww 를 입력하면 이동 가능하다.

나누어진 차에서 다른 파일을 불러드리고 싶으면 ctrl + e FILE_NAME 을 입력한다.

--------------------------------------------------------------------------------------

[분할된 창의 크기를 조절하기]

분할된 창의 크기를 조절할 필요가 있을 것이다. 이때는 다음과 같이 사용하면 된다.

수평분할의 경우

ctrl+w N+ : N만큼 증가한다.

ctrl+w N- : N만큼 감소한다.

수직분할의 경우

ctrl+w N> : N만큼 오른쪽으로 증가

ctrl+w N< : N만큼 왼쪽으로 증가

공통적인 것

ctrl+w = : 창의 크기가 균등하게 분할

--------------------------------------------------------------------------------------

[원하는 위치를 마킹하기]

어떠한 특정한 위치를 마킹하여 사용하고자 할때 즉 임의로 저장해 이동하려할때는

vi 의 마킹기능을 이용하면 편리하다.

원하는 위치 즉 기억 시키고 싶은 위치에 커서를 이동하고

ma 를 입력한다. (여기서 a 대신에 a-z 까지 입력가능하다.)

그러면 a 라는 마킹 이름으로 현재 커서의 위치가 저장이 된다.

mA 를 입력하게 되면 현재 파일에서만의 이동이 아닌 전역적으로 다른 파일에서도 이동가능하게 된다.

마킹된 곳으로 이동하는 방법은 'a 또는 'A 를 입력하면 해당 마킹 지점으로 이동하게 된다.

현재 마킹된 정보를 알아보는 방법은 :marks 명령어를 통해서 가능하다.

--------------------------------------------------------------------------------------

[편집중에 명령어를 수행하는 법]

편집화면 중에서 어떠한 셀 명령어를 실행하고 싶을 경우에는

:!command 를 실행하면된다. 이렇게 하면 명령어를 실행하고 난 후에 다시 편집 창으로 돌아온다.

만약 실행 명령의 결과를 현재 편집창에 넣고 싶다면

:r !command 를 실행하면 된다.

--------------------------------------------------------------------------------------

 

반응형