반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UNIX Internals
- go
- TiKV
- Symbol
- newSQL
- DBMS 개발
- getopts
- OS 커널
- 약어
- Programming
- Pointer
- Preprocessor
- DBMS
- kernel
- 긴옵션
- 한빛미디어
- UNIX
- 포인터변수
- 포인터
- 컴퓨터 강좌
- Windows via c/c++
- bash
- FreeBSD
- 전처리기
- SQLite
- 커널
- TiDB
- 구조와 원리
- Golang
- 함수포인터
Archives
- Today
- Total
sonumb
VIM tip 모음 본문
1. 짧게 매칭되는 패턴 찾기.
malloc( sizeof( blahblab ) * 3 ) 를 malloc( sizeof(blahblab) * 3 ) 로 바꾸고 싶을때,
:%s/sizeof( \(.*\) )/sizeof(\1)/g
와 같이 명령어를 쓰면 실제로는 malloc( sizeof(blahblab ) * 3) 이 된다.
즉, 가장 짧게 매칭되는 패턴으로 하고 싶다면 \{-}를 쓴다.
:%s/sizeof( \(.\{-}\) )/sizeof(\1)/g
2. 검색시 대소문자 무시
2.1. 커맨드모드에서 명령어로 설정
:set ignorecase 혹은 :set ic
:set noignorecase 혹은 :set noic
:set smartcase 혹은 :set scs
검색 문자열이 모두 소문자이면, 대소문자를 구분하지 않고,
검색 문자열에 대문자가 하나라도 있으면, 대소문자를 구별
단, smartcase가 활성화되려면, ignorecase가 먼저 실행되어야 함.
2.2. 검색모드에서 명령어
검색 커맨드 상태에서 \c를 입력후 검색문자열 입력
/\cmemory
를 실행하면, Memory와 memory, MEMORY 모두 검색.
3. 단축키 모음
3.1. 전역
:help keyword
- keyword에 대한 도움말 열기:saveas _file_
- file로 저장하기:close
- 현재 영역 닫기K
- 커서가 위치한 단어에 대한 맨페이지 열기
3.2. 커서 이동
h
- 왼쪽으로 이동j
- 아래로 이동k
- 위로 이동l
- 오른쪽으로 이동H
- 화면 상단으로 이동M
- 화면 중간으로 이동L
- 화면 하단으로 이동w
- 다음 단어 시작으로 점프W
- 다음 단어 시작으로 점프 (단어 옆에 붙은 연속된 문장부호도 하나의 단어로 본다)e
- 다음 단어 끝으로 점프E
- 다음 단어 끝으로 점프 (단어 옆에 붙은 연속된 문장부호도 하나의 단어로 본다)b
- 이전 단어 시작으로 점프B
- 이전 단어 시작으로 점프 (단어 옆에 붙은 연속된 문장부호도 하나의 단어로 본다)%
- 현재 괄호와 맞는 짝의 괄호로 이동 (:h matchpairs
를 통해 더 많은 정보를 얻을 수 있다.)0
- 행의 처음으로 점프^
- 행의 시작 문자로 점프$
- 행의 끝으로 점프g
_ - 행의 끝 문자로 점프gg
- 문서 첫 행으로 점프G
- 문서 마지막 행으로 점프5G or :5
- 5번째 행으로 점프fx
- 커서 위치 기준 오른쪽에서 가장 가까운 문자 x로 이동tx
- 커서 위치 기준 오른쪽에서 가장 가까운 문자 x의 한 칸 뒤(왼쪽)으로 이동Fx
- 커서 위치 기준 왼쪽에서 가장 가까운 문자 x로 이동Tx
- 커서 위치 기준 왼쪽에서 가장 가까운 문자 x의 한 칸 앞(오른쪽)으로 이동;
- 가장 최근의 f, t, F나 T 명령을 다시 실행,
- 가장 최근의 f, t, F나 T 명령을 반대 방향으로 다시 실행}
- 다음 단락(또는 함수/블록)으로 이동{
- 이전 단락(또는 함수/블록)으로 이동zz
- 커서가 있는 행을 중간으로 하도록 화면 이동Ctrl + e
- 커서 이동 없이 한 줄 아래로 화면 이동Ctrl + y
- 커서 이동 없이 한 줄 위로 화면 이동Ctrl + b
- 한 화면 위로Ctrl + f
- 한 화면 아래로Ctrl + d
- 반 화면 아래로Ctrl + u
- 반 화면 위로- 커서 이동 명령 앞에 숫자를 붙이면 그 수만큼 반복. 예를 들어 4j 는 4행 아래로 이동.
3.3. 삽입 모드 - 택스트 삽입/추가
i
- 커서 앞에 삽입I
- 행 시작에 삽입a
- 커서 뒤에 추가A
- 행 끝에 추가o
- 현재 행 아래에 새 행 추가O
- 현재 행 위에 새 행 추가ea
- 단어 끝에 추가<Esc>
- 삽입 모드 종료
3.4. 편집
r
- 한 글자 바꾸기J
- 현재 행과 다음 행을 연결gJ
- 현재 행과 다음 행을 둘 사이에 공백 없이 연결gwip
- 단락을 리플로우cc
- 행 전체를 새로 쓰기C
- 행 끝까지를 새로 쓰기c$
- 행 끝까지를 새로 쓰기ciw
- 단어 전체를 새로 쓰기cw
- 단어 끝까지를 새로 쓰기s
- 한 글자 삭제하고 삽입 모드 시작S
- 행 삭제하고 텍스트 입력 (cc와 동일)xp
- 두 문자 위치 바꾸기 (잘라내기 붙여넣기 조합)u
- 실행 취소Ctrl + r
- 다시 실행.
- 마지막 명령 반복
3.5. 텍스트 선택 (비주얼 모드)
v
- 선택 모드 시작. 텍스트 선택해서 명령 수행 (가령 y로 복사)V
- 행 단위 선택 모드 시작o
- 선택 영역의 반대쪽 끝으로 이동Ctrl + v
- 블록 선택 모드 시작O
- 블록의 반대쪽 모서리로 이동aw
- 단어 선택ab
-()
블럭 선택aB
-{}
블럭 선택ib
-()
블럭의 내부 선택iB
-{}
블럭의 내부 선택<Esc>
- 선택 모드 종료
3.6. 선택 모드 명령
>
- 텍스트를 오른쪽으로 이동<
- 텍스트를 왼쪽으로 이동y
- 선택한 텍스트 복사d
- 선택한 텍스트 삭제~
- 대소문자 반전
3.7. 레지스터
:reg
- 레지스터 내용물 표시"xy
- 레지스터 x로 복사"xp
- 레지스터 x의 내용물 붙어넣기
Tip
- 레지스터들은 ./viminfo에 저장되며 다음번 vim 재시작 때 다시 읽어들임.
- 0번 레지스터에는 항상 최근 복사 명령의 값이 들어있음.
3.8. 표시
`:marks`
- 표시 항목 표시m_a_
- 현재 위치를 표시 a로 설정`_a_
- 표시 a의 위치로 점프y`_a_
- 표시 a의 위치까지 복사
위의 a는 키보드 상의 단일문자 모두 가능하다.
3.9. 매크로
qa
- 매크로 a 기록 시작q
- 매크로 기록 중지@a
- 매크로 a 실행@@
- 마지막 실행한 매크로 재실행
3.10. 잘라내기와 붙여넣기
yy
- 행 복사2yy
- 2줄 복사yw
- 커서 위치에서 다음 단어 시작까지 복사y$
- 행 끝까지 복사p
- 커서 위치 뒤에 붙여넣기P
- 커서 위치 앞에 붙여넣기dd
- 행 잘라내기2dd
- 2줄 잘라내기dw
- 커서 위치에서 다음 단어 시작까지 잘라내기D
- 행 끝까지 잘라내기d$
- 행 끝까지 잘라내기x
- 한 글자 잘라내기
3.11. 나가기
:w
- 저장하고, 나가지는 않기:w !sudo tee %
- sudo로 현재 파일 저장:wq
or:x
orZZ
- 저장하고 나가기:q
- 나가기 (저장하지 않은 변경 사항 있으면 실패):q!
orZQ
- 나가기 (저장하지 않은 변경 사항 버림):wqa
- 열어 놓았던 모든 탭을 다 저장하고 나가기
3.12. 찾기와 바꾸기
/pattern
- 패턴 찾기?pattern
- 패턴 역방향 찾기\vpattern
- '마법' 패턴: 영문/숫자가 아닌 문자는 정규표현식 심볼로 해석 (이스케이프 불필요)n
- 같은 방향으로 찾기 반복N
- 반대 방향으로 찾기 반복:%s/old/new/g
- searchAndReplace.commands .colonPercentForwardSlashOldForwardSlashNewForwardSlashg:%s/old/new/gc
- searchAndReplace.commands .colonPercentForwardSlashOldForwardSlashNewForwardSlashgc:noh
or:nohlsearch
- 찾기 강조 표시 없애기
3.13. 여러 파일에서 찾기
:vimgrep /pattern/ {`{file}`}
- 여러 파일에서 패턴 찾기
e.g.) :vimgrep /foo/ **/*
:cn
- 다음 일치 항목으로 점프:cp
- 이전 일치 항목으로 점프:copen
- 일치 목록을 새 창으로 열기
3.14. 여러 파일 작업
여러 파일 동시에 창으로 열려면, vim 실행시 파일명들과 함께, -o
혹은 -O
옵션을 이용한다. (옵션의 차이점은 수평/수직 이다)
:e file
- 새 버퍼에서 파일 편집:bnext
or:bn
- 다음 버퍼로 이동:bprev
or:bp
- 이전 버퍼로 이동:bd
- 버퍼 삭제 (파일 닫기):ls
- 열린 버퍼 모두 나열:sp file
- 새 버퍼에 파일 열고 상하로 창 분할:vsp file
- 새 버퍼에 파일 열고 좌우로 창 분할Ctrl + ws
- 상하로 창 분할Ctrl + ww
- 창 전환Ctrl + wq
- 창 닫기Ctrl + wv
- 좌우로 창 분할Ctrl + wh
- 왼쪽 창으로 이동 (좌우 분할)Ctrl + wl
- 오른쪽 창으로 이동 (좌우 분할)Ctrl + wj
- 아래 창으로 이동 (상하 분할)Ctrl + wk
- 위 창으로 이동 (상하 분할)
3.15. 탭
여러 파일 동시에 탭으로 열려면, vim 실행시 파일명들과 함께, -p
옵션을 이용한다.
:tabnew
or:tabnew {page.words.file}
- 새 탭에서 파일 열기Ctrl + wT
- 현재 분할 창을 새로운 탭으로 이동gt
or:tabnext or :tabn
- 다음 탭으로 이동gT
or:tabprev
or:tabp
- 이전 탭으로 이동#gt
- #번 탭으로 이동:tabmove #
- 현재 탭을 #번째로 이동 (0부터 시작):tabclose
or:tabc
- 현재 탭과 그 안의 창들 닫기:tabonly
or:tabo
- 현재 탭 이외의 모든 탭 닫기:tabdo command
- 모든 탭에서command
실행하기 (예를 들어,:tabdo q
- 열린 모든 탭 닫기)
반응형