티스토리 뷰

728x90

1. vim 기능에서 많이 사용하는 것들

  1-1 여러 개 파일을 같이 열면서 화면 분할을 사용하고 싶을 때는 -O 옵션을 사용한다.

 

vim -O hello.c hello.py

 

 

  1-2 위와 같이 열린 상태에서 ctrl + w를 누르면 위의 오른쪽 하단의 ^W 가 나타나고 좌우 화살표로 어떤 면을 수정할지를 결정한다.

    1-2-1 처음에 실행될 때는 좌우의 넓이가 동일한데 창을 확대할 경우 오른쪽 창만 커진다.

    1-2-2 동일하게 다시 맞출 때는 ctrl + w 후에 = 를 누른다. 높이를 변경할 때는 ctrl + w 후에 +, - 를 눌러서 조정한다.

 

  1-3 vim에서 쓸 만한 설정은 /etc/vim/vimrc에서 정의할 수 있다. 기본적으로 : 을 누른 후 설정을 하면 된다.

    1-3-1 set number 는 화면에 라인이 나오도록 한다.

    1-3-2 set expandtab shiftwidth=2 tabstop=2 softtabstop=2 이렇게 설정하면 tab을 사용하면 2개의 space가 입력된다.

      1-3-2-1 shiftwidth는 vim이 indent를 넣어 줄 때 사용할 space의 개수를 지정, tabstop은 tab을 대체할 space의 개수이다.

      1-3-2-2 softtabstop은 tab이 눌러졌을 때 커서가 스페이스 몇 개 만큼 앞으로 갈지를 지정한다.

    1-3-3 기존의 모든 tab을 space으로 변경하고 싶으면 retab 명령어를 실행한다.

    1-3-4 syntax on 설정은 기본적으로 vimrc에 정의되어 있기 때문에 안해도 된다.

 

 

  1-4 vim에서 프로그램을 수정하고 컴파일 하거나 실행을 한 후 다시 에디터로 돌아오는 것은 상당히 귀찮다.

    1-4-1 위 처럼 :! 를 사용하면 외부 명령어를 실행할 수 있다. 위에서는 :!ls 가 되어 있는데 enter를 누르면 terminal화면으로 변경되면서 ls 명령어가 실행된다. 

    1-4-2 terminal 화면에서 한번더 enter를 치면 다시 에디터로 돌아가게 된다.

    1-4-3 :!을 사용할 때 % 를 사용하면 현재 편집되고 있는 파일이름이 자동으로 들어가게 된다.

    1-4-4 c프로그램을 컴파일 할 때 :!gcc % -o hello 를 사용하면 hello 실행 파일이 만들어 진다. 

 

  1-5 C로 작성된 프로그램은 종료 시에 정상일 경우 0, 정상 종료가 아닌 경우는 0이 아닌 수를 반환한다. 

    1-5-1 프로그램이 종료할 때는 환경변수 ?에 결과값이 들어가게 된다. 환경변수 같지는 않은데 echo $? 로 값을 읽어 올 수 있다.

    1-5-2 $의 의미는 $ 뒤에 나오는 문자열과 일치하는 환경변수의 값을 대체하라는 의미가 된다.

    1-5-3 아래를 보면 쉘이 실행 시 $를 만나면  환경변수에 정의된 USER 값을 그대로 가지고 와서 변환한다.

    1-5-4 env 명령어는 현재 쉘의 환경변수의 값을 읽어와서 표출해 준다.

 

 

  1-6 file 명령어는 파일의 정보를 알려준다. 실행파일은 어떤 방식으로 컴파일 되었는지, 어떤 라이브러리를 사용했는지 알 수 있다.

    1-6-1 아래는 hello 실행파일, 소스코드, object 파일, python 소스코드에 대한 정보를 보여주고 있다.

 

 

  1-7 whereis 명령어인데 현재 PATH에 설정되어 실행되는 실행파일의 위치를 알려준다.

    1-7-1 사실 실행파일, 소스코드, 메뉴얼 파일 모두 찾아주고 리눅스의 표준 디렉토리를 검색한 후 PATH, MANPATH를 검색한다.

    1-7-2 특정 파일을 특정 경로 내에서 찾아주는 find 명령어와는 다른 목적을 가진다.

    1-7-3 아래 창에서는 gcc, java, dotnet 실행파일의 위치를 찾아보았다. gcc, java는 설치되어 있지만 dotnet은 설치되어 있지 않다.

 

 

  1-8 실행 명령어의 위치를 찾기 위해 최적화 된 whereis와 차별화된 일반적인 검색을 위한 명령어로는 find가 있다.

    1-8-1 다양한 기능을 가지고 있지만 가장 많이 사용되는 방법만 기억에 두어도 충분한다.

    1-8-2 첫번째 인자는 검색을 시작할 최상위 디렉터리(생략시 '/') 두번째는 -type 옵션으로 file은 f directory는 d

    1-8-3 세번째 는 -name으로 검색 대상의 이름이 들어온다. 정확하게 일치하는 파일만 찾아주기 때문에 wild card를 잘 활용해야 한다. '*', '?', '.', [] 등을 사용할 수 있다.

 

find /etc -type f -name vimrc

 

 

  1-9 nl 명령어는 파일에 있는 내용물에 줄번호를 넣어주는 기능을 하지고 있다. 이 기능은 파일에 있는 특정부분을 찾아서 그 부분만 보는데 상당히 유용한 기능을 가지고 있다. 소스코드를 검색해서 특정한 부분을 표출하거나 로그에서 특정한 부분만 추출해서 사용할 때 기준 값으로 번호를 사용할 수 있다.

    1-9-1 아래 처럼 .zshrc 쉘 설정파일에서 alias라는 것이 포함된 라인을 보고 싶으면 아래처럼 출력할 수 있다.

    1-9-2 -b 옵션은 라인을 계산할 때 공백라인을 포함할지를 결정하는 부분인데 기본값은 공백라인을 계산하지 않는다. 그렇기 때문에 head, tail에서 -n + 옵션을 사용해서 특정라인 부터 보여주고 싶은 경우, 라인의 계산이 달라진다.

    1-9-3 그래서 일반적으로는 -ba 를 항상 붙여주는 것이 좋다. 기본설정은 -bt (공백라인 제외) 이다. 

 

 

    1-9-2 만일 위에서 나오는 164라인 부터 10라인을 보고 싶은 경우는 아래 처럼 하면 된다.

      1-9-2-1 우선 .zshrc에 라인을 붙여 출력한 것을 tail로 전송하여 164라인 부터 끝까지 필터링한다. 

      1-9-2-2 라인이 붙은 164에서 끝까지를 다시 head로 파이핑을 하여 처음 10줄만 출력하게 한다.

      1-9-2-3 추가적으로 head, tail의 -n(--lines)은 동일하게 동작하는데 -n에 +가 붙으면 해당 줄을 시작점으로 한다는 의미가 된다. -n에 +가 없으면 처음부터 몇 개의 줄을 가지고 올 지를 설정하는데, 이것은 -10 이런 식으로 -n을 생략해도 된다.

 

nl .zshrc -ba | tail -n+164 | head 10

 

728x90
댓글