practical-vim-1
개인이 모르는 명령만 정리한 내용입니다.
명령
- x 명령 : 커서 아래 문자 삭제
- >G 명령 : 현재 행부터 문서 끝까지 들여쓰기 추가
- j 명령 : 커서를 한 행 밑으로 옮김
- s 명령 : 커서 밑에 있는 문자를 제거한 후에 끼워넣기 모드로 진입
- f+문자 명령 : 현재 행에서 문자가 나타나는 위치로 검색
- ; 명령 : 수행한 마지막 검색을 반복
- @: 명령 : Ex 명령을 반복
- & 명령 : :subsititute 명령 반복
반복 가능한 동작과 되돌리는 방법
기능 | 동작 | 반복 | 되돌리기 |
---|---|---|---|
내용 변경하기 | {편집} | . | u |
행에서 다음 문자 찾기 | f{문자} / t{문자} | ; | , |
행에서 이전 문자 찾기 | F{문자} / T{문자} | ; | , |
문서에서 다음 일치 찾기 | /패턴 |
n | N |
문서에서 이전 일치 찾기 | ?패턴 |
n | N |
치환 동작하기 | :%s/대상/치환/gi | & | u |
연속 변경 실행하기 | qx{변경}q | @x | u |
vim 클립보드 사용
set clipboard=unnamed "use OS clipboard
일반모드
숫자 조정
:h count
<C-a> "커서 밑 숫자 증가"
<C-x> "커서 밑 숫자 감소"
삭제
cw "단어 삭제 후 끼워넣기"
db "커서 위치부터 현재 단어 시작위치까지 제거"
dw "커서 위치한 단어 하나 삭제"
dap "문단삭제"
오퍼레이터 + 모션 = 행동
- 명령{모션}
:h operator
c "변경"
g~ "대소문자 변환하기"
gu "소문자로 변환하기"
gU "대문자로 변환하기"
= "자동으로 들여쓰기"
gUaw "현재 단어 모두 대문자로 전환"
gUap "문단 전체 대문자로 변경"
주석으로 변경
"Comentary 플러그인"
"https://github.com/tpope/vim-commentary"
"주석변경"
"gc{모션} - 주석 변환"
gcc "현재행 주석 전환"
gcgc "현재행 주석 전환"
gcap "현재문단 주석 전환"
gcG "현재 행부터 파일끝까지 주석 전환"
끼워넣기 모드
<C-h> "앞에 있는 글자 하나 제거하기(백스페이스)"
<C-w> "앞에 있는 단어 하나 제거하기"
<C-u> "행의 시작 부분까지 제거"
"셸에서도 사용 가능"
일반 모드로 돌아가기
<C-[> "일반 모드로 전환하기"
<C-o> "끼워넣기-일반 모드로 전환하기(1회용)"
<C-o>zz "현재 행을 화면 중간으로 옮겨서 작업하는 행을 기준으로 위아래 절반씩 볼 수 있도록 조정"
"나는 <C-o>가 안 되어서 <C-a>로"
끼워넣기 모드 벗어나지 않고 레지스터 붙여넣기
yt "행 복사"
<C-r>0 "붙여넣기"
즉석에서 계산하기
<C-r>=6*5 "표현식 레지스터로 계산하기"
ga "문자의 숫자코드 검색"
<C-v>065 "A, 문자코드(숫자로) 문자 표시"
<C-v>{123} "8진수 코드로 문자 삽입"
<C-v>u{1234} "16진수 코드로 문자 삽입"
<C-v>{숫자 아닌 문자} "키 문자로 삽입하기"
<C-k>{문자1}{문자2} "{문자1}{문자2} 이중자가 나타내는 문자 삽입하기"
:h i_CRTL-V_digit
:h digrapshs-defalut
바꾸기 모드
R "바꾸고 덮어쓰기"
gR "선택 치환모드"
r{문자}gr{문자} "일회성 바꾸기 모드와 선택치환 모드"
비주얼 모드
c 명령 "특정 본문을 지우고 끼워넣기 모드 전환"
viw "단어를 영역으로 선택"
비주얼 모드 활성화
V "행 단위 비주얼 모드 활성화"
<C-v> "블록 단위 비주얼 모드 활성화"
gv "비주얼 모드에서 마지막으로 선택했던 영역 다시 선택"
선택영역의 끝 전환하기
vbb "커서 기준 뒤쪽으로 선택"
o "선택 영역 중 반대쪽 끝으로 이동"
{특정 문자} "특정 문자까지 선택 영역 확장"
오퍼레이터 명령 사용
gU{모션} "비주얼 모드에서 U명령 - 대문자로 변경"
gUit "it 명령은 텍스트 객체를 의미(inside the tag의 약어로 생각하면 쉽게 외울 수 있다)"
j. "아랫줄에서 같은 명령 반복"
열 사이에 수직 파이프 넣기
Chapter Page
Normal mode 15
Insert mode 31
Visual mode 44
"탭 중간에 커서가 있다는 가정"
<C-v>3j "3칸 아래까지 블록 설정"
x... "간격 줄이기, 3번 반복"
gv "위 블록 설정 반복"
r| "| 삽입"
yyp "한 줄 복사 붙여넣기"
Vr- "행단위 비주얼 모드, -로 변경"
다중 행 입력하기
url('/imges/sprite.png')
url('/imges/sprite.png')
url('/imges/sprite.png')
"커서가 i에 위치해 있다는 가정"
<C-v>jje "2줄 아래 단어 끝까지 블록 모드"
c "삭제 후 끼워넣기 모드"
components
<ESC> "한 줄이 아니라 세 줄 모두 변경"
명령행 모드
역사적인 이류로 명령행 모드에서 실행할 수 있는 명령을 Ex명령이라고 부른다.
명령행 모드는 /를 눌러 검색 프롬프트(serach prompt)를 불러오거나
버퍼 문서 작업에 사용할 수 있는 Ex 명령
:[행]put [x] "지정한 행 뒤에 레지스터 x에 저장된 문서를 붙여넣기"
:[범위]copy {주소} "지정한 행을 복사해서 {주소} 행 아래에 붙여넣기"
:[범위]move {주소} "지정한 행을 {주소} 행 아래로 이동하기"
:[범위]join "지정한 행을 한 줄로 연결하기"
:[범위]normal {명령} "일반 모드에서 쓰는 {명령}을 지정한 범위의 각각 행에서 실행하기"
:[범위]substitute/{패턴}/{문자열}/[플래그] "지정한 행에서 {패턴}이 나타나면 {문자열}로 치환"
:[범위]global/{패턴}/[명령] "Ex 명령인 [명령]을 지정한 모든 행 중 {패턴}이 나타나는 곳에서 실행하기"
:h ex-cmd-index
Vim 명령행 모드에서의 특수키
<C-w>는 이전 단어까지 <C-u>는 행의 시작까지 역방향으로 지우는 기능
<C-v>와 <C-k> 명령은 키보드에 없는 문자를 삽입할 때 사용
주소로 행 범위 지정하기
. ".은 현재 커서가 놓인 행을 의미"
'm "위치 표시 m이 포함된 행"
'< "비주얼 모드에서 선택된 영역의 첫 행"
'> "비주얼 모드에서 선택된 영역의 마지막 행"
:2,3p "2~3행 출력"
:3d "3번 행으로 이동한 다음에 그 행을 삭제하는 작업까지 한 번에"
:t와 :m 명령으로 행 복제 또는 이동
:6t. "6번행 복사해서 현재 행 밑으로 붙여넣는다."
"copy to를 생각하면 기억하기 쉽다(:t, :c, :copy)"
:t6 "현재 행을 복사해서 6번 행 밑에 붙여넣기"
:t. "현재 행을 복사해서 붙여넣기(일반모드의 yyp와 유사)"
:t$ "현재 행을 파일의 마지막에 붙여넣기"
:'<,'>t0 "비중러 모드에서 선택한 행을 파일의 시작에 붙여넣기"
"yyp는 레지스터를 사용하고 :t.는 사용하지 않는다"