입력 모드로 전환하기(삽입)
a (append) : 현재커서 다음에서 입력
A (Append) : 현재 줄의 제일 끝에서 입력
i (insert) : 현재커서에서 입력
I (Insert) : 현재 행을 제일 앞에서 입력
줄을 결합 ( J )
2개의 라인이 있고, 2번째줄을 1번째줄 끝에 붙이고 싶다면,
1째줄에서 J를 입력하면된다.
커서의 이동
0 : 줄의 처음
$ : 줄의 끝
w : 단어단위 이동
H, M, L : 커서를 화면 상,중, 하로 이동
#gg : # 줄로 이동
검색 (/후 검색할 단어 입력)
/<string> : 전방 검색
?<string> : 후방 검색
* : 현재 커서의 단어를 전방 검색
# : 현재 커서의 단어를 후방 검색
n : 검색후 후방검색
N : 검색후 전방검색
0
매트로
ab aa aaaa : aa를 입력하면 aaaa로 자동변환
치 환
:s/pattern/replace : 현재줄에서 첫번째 matching pattern 치환
:s/pattern/replace/g : 현재줄의 모든 matching pattern 치환
:%s/pattern/replace/g : 모든 줄에서 matching pathern 치환
:line,lines/pattern/replace : 해당 범위의 치환
(tip) 먼저 변환할 문자열을 검색해서 확인해하고 전체 치환을 수행하는 것이 필요 없는 변환을 막을수 있다.
저 장
w >> file : 현재 편집중인 문서를 file 로 저장
line,lines w >> file : 해당 범위를 file로 저장
윈도위 split
vi 내에서 윈도우 창이 2개로 분할되어 파일을 동시에 open/편집 할수 있다.
:sp filename
윈도우창의 전환은 Ctrl + ww
visual 모드
윈도우 텍스트 에디터와 같이 선택부분이 반전되면서 복사, 삭제 등을 할수 있다.
복사 : 영역설정후 => y
삭제 : 영역설정후 => d
vi 설정(vim 설정)
set ai : auto-indent, tab
set ts=4 : tab stop, tab을 4칸으로 설정
set sw=4 : shift width, 자동들여쓰기시 4칸씩 들여쓰기
set nu : 줄번호
윈도에서 작업중에 vi 에 붙여넣기시 계단현상발생 방지
:set paste
ctags 사용
쉘에서 ctags -R 모든 소스에 대해 인덱스 발생 ( 열씨미와 게을러 책 참고)
여러줄을 주석으로 처리할때
- 고전적 방법
:10, 100 s/^/\/\//g
:10, 100 s/^\/\///g
- 더 좋은 방법
1. Ctrl + v 로 원하는 만큼 블록지정
2. Shift + i
3. // 입력
4. ESC 2번 누름
- 더 좋은 방법
1. Ctrl + v 로 원하는 만큼 블록지정
2. x