콘텐츠로 건너뛰기
Home » 도구와 팁 » vi/vim in Linux » Page 4

vi/vim in Linux

스크립트에서 파일명 확장 – vim

vim 명령줄 모드에서 %는 보통 현재 파일의 전체 범위1나 현재 파일 이름의 의미가 된다. 예를 들어 C 파일을 작성하던 중에 현재 파일을 컴파일하고 싶다면 :!gcc -c % 라고 할 수 있다. 그렇다면 함수와 같은 스크립트 문맥에서는 어떨까? 스크립트 문맥에서는 파일명확장이 이루어지지 않고, 대신에 expand()함수를 써서 수동으로 처리해야 한다. let current_file_name = expand('%') let current_file_prefix = expand('%<') 그외 몇 가지 옵션이 있는데 이는 :h expand()로 찾아보면 된다. % : 현재 파일이름 # : 대체 이름 (아마 이전 파일?) #n : 대체이름… 더 보기 »스크립트에서 파일명 확장 – vim

여러 파일에 대해 한 번에 문자열 치환하는 방법들

문자열에 대한 찾기/바꾸기를 여러 파일에 대해 한 번에 적용하는 방법

Sublime Text 3 에서

Find > Find in Files... 메뉴를 사용하여 찾을 패턴, 찾을 폴더들 (,로 구분가능하며, 와일드카드 패턴으로 특정 확장자를 한정할 수 있다.) 지정하고 변경할 값을 만들어서 한 번에 적용 가능하다.
더 보기 »여러 파일에 대해 한 번에 문자열 치환하는 방법들

vim : 단어 및 선택 영역을 둘러싸기

Surround.vim이라는 멋진 플러그인이 있기는 하지만, 개인적으로는 vimrc에 오랫동안 넣고 쓰던 코드

기본원리

기본원리는 매우 간단한데, 괄호 등으로 감싸고자 하는 단어를 선택영역으로 만든 다음, 선택 영역을 해제하고, 이 영역의 마지막과 끝 영역으로 이동해서 괄호짝을 삽입해주면 된다.

  1. viw: 현재 단어 선택
  2. <esc>: 단어 선택 취소
  3. \>`: 마지막 선택영역의 끝으로 이동
  4. a)<esc>: 선택영역 뒤에 닫는 괄호 추가
  5. \<`: 선택영역의 시작지점으로 이동
  6. i(<esc>: 여는 괄호 삽입
  7. \>ll`: 두 글자가 추가되었으므로 다시 단어 끝부분을 이동하여 오른쪽으로 두 칸 이동

더 보기 »vim : 단어 및 선택 영역을 둘러싸기

:g (vim)

:g[lobal] 사용법 : :[range]g[lobal]/{pattern}/[cmd] 주어진 범위에 대해 패턴에 매칭하는 줄에 대해서만 주어진 명령을 실행한다. 사용예 빈줄을 모두 삭제하는 명령 :%g/^$/normal dd 이때 명령은 명령모드 명령이다. 따라서 키 시퀀스 명령을 쓰려면 normal을 사용하 면된다. 참고 반대로 패턴에 매칭되지 않는 경우에만 실행하려면 :g!를 사용한다. 이와 동치의 명령으로는 :v가 있다.

vim의 정규식 기호와 very magic 모드

vim의 문자열 검색, 치환 기능은 패턴 매칭에 의한 것이며, 이 패턴 매칭은 정규식에 기반을 두고 있다. 그런데 정규식 문법을 조금 알고 있는 상태에서 vim의 정규식을 사용하면 깊은 빡침을 느끼거나 심한 멀미를 겪을 수 있다. 왜냐하면 정규식은 딱히 하나의 정해진 표준도 없거니와 기능과 편의를 위해서 여러 갈래로 나뉘어져 있고 vim에서는 상황에 따라서 서로 다른 기준을 사용해서 패턴을 파싱하기 때문이다. 예를 하나 들어보자.

(this)isnot{this}nor[this]

이런 문자열이 있다고 할 때, 괄호들을 포함한 this를 검색, 즉 (this), {this}, [this]를 검색하려면 다음의 패턴을 사용한다.더 보기 »vim의 정규식 기호와 very magic 모드