티스토리 뷰
위아래로 빠르게 이동하고 싶을때
Vim을 이용해서 위아래로 빠르게 이동하는 방법에 있어 정답이 딱 정해져있진 않고 상황에 맞게 사용할 수 있게 여러 커맨드를 익혀두고 이용하는 것이 좋다.
- 문장의 처음으로 가고 싶다면
G
, 마지막은gg
를 이용한다. - 단락별로 이동한다면
{
}
를 이용한다. - 문장별로 이동하고 싶다면
(
)
를 이용한다.{ }
보다 조금 더 세밀한 움직임 가능. - 단어를 알고 있다면
/검색할단어
와n
N
을 이용해서 찾아갈 수 있다. <C-d>
,<C-u>
를 이용해서{ }
커맨드보다 더 빠르게 이동할 수 있다.:number
로 정확한 라인에 찾아갈 수도 있고:+number
:-number
를 이용해서 relativenumber를 이용해 상대적인 라인으로 이동할 수 있다.:+ -
대신에 단순히{number}j,k
를 이용할 수 있다.
좌우로 빠르게 이동하고 싶을때
좌우 이동은 대부분의 경우 b
와 w
몇 번만으로 쉽게 찾아갈 수 있지만 다음과 같은 상황을 고려하면 좀 더 빠르게 이동할 수 있다.
- 찾고자 하는 단어가 마지막에 가깝다면
$
를 입력한 후에b
를 이용하여 이동한다. B
와W
를 이용하면 스페이스바를 기준으로 이동해서 더 빠르게 이동할 수 있다.f
나t
로 특정 char를 찾아갈 수 있다. ;(semi-colon)을 이용해서 반복한다./단어
를 이용하는 것도 역시 좋은 방법이다.
현재 위치에서 같은 줄의 어느 지점까지 지우고싶을때
어떤 애매한 시작 지점에서 어떤 애매한 지점까지 지워야 할 때는 dt{char}
, ct{char}
를 이용한다. 지우고 싶은 지점이 현재부터 (
이전까지라면 dt(
를 입력한다.
그 사이에 문자가 중복된다면 .
를 이용해서 명령을 반복할 수 있다.
커서의 위치에 상관없이 라인의 마지막에 ;을 붙이고 싶을때
A;<Esc>
를 입력한다. 라인의 마지막으로 이동함과 동시에 insert mode로 진입하는 A
커맨드를 이용하는 방법이다.
커서의 위치에 상관없이 현재 단어 전체를 변경하고 싶을때
caw
혹은 ciw
를 입력한다. "SomeLoooong{커서}Words"의 상황에서 caw
혹은 ciw
커맨드를 입력하면 "{커서}"로 된다.
""나 '' 내의 모든 단어를 변경하고 싶을때
""(double quotes)내의 모든 단어를 한 번에 변경하고 싶은 경우가 있다.
"Some/ Long: Words."같은 문장은 ciw
caw
의 경우 한 단어씩밖에 변경되지 않는다.
이런 경우 ci"
를 사용한다. 해당 커맨드는 "" 사이의 모든 캐릭터를 지우고 insert mode에 들어간다는 의미를 갖는다.
이와 비슷하게 ci'
, ci(
, ci{
, ci`
등의 커맨드도 같은 방식으로 사용이 가능하며
ci뿐 아니라 yi
, di
vi
등으로도 응용이 가능하다.
만약 ""에 한정된 경우라면 ciq
의 커맨드로 ci"
를 대체할 수 있다. (VScode 기준)
현재 커서의 단어를 quote 처리하고 싶을 때
다음과 같은 매핑을 통해서 현재 커서에 있는 단어를 double quote 처리할 수 있다.
e.g. quote -> "quote"
nnoremap gq ciw""<Esc>P
현재 문장 전체의 단어에 quote 처리하고 싶다면 다음을 이용한다. 빈도수가 많지 않기 때문에 키매핑은 해두지 않음.
:s/\(\w\+\)/"\1"/g
여러 문장을 한 번에 복사하거나 제거하고 싶을때
여러 줄의 라인이 bracket 등에 속해있다면 위의 ci{
와 같은 커맨드를 이용할 수 있다.
하지만 특정 패턴에 부합하지 않아 일일히 선택해야 하는 경우 V
커맨드로 line 단위의 visual mode로 진입한 후 normal mode의 다른 커맨드와 조합해서 원하는 만큼 선택 이후 d
로 제거, yp
로 복사 붙여넣기 등을 이용한다.
문서 내의 모든 특정 단어를 찾아서 변경하고 싶을때
:%s/특정단어/변경하고싶은단어
를 입력한다.
insert mode와 함께 auto indenting이 되기를 원하는 경우
커서가 0번째에 있을때 i
나 a
를 이용하면 indenting이 되지 않고 그 자리에서 바로 insert mode로 들어가게 된다.
이런 경우 cc
를 이용해서 auto indenting과 함께 insert mode에 들어갈 수 있다.
IntelliJ에서는 동작하지 않으며 VSCode에서만 동작.
파일 내에서 다른 곳을 보고 와야 할때
현재 위치에서 작업을 하다가 파일 내의 다른 위치를 확인하고 와야 할 경우가 있다. 이런 경우 m{char}
를 이용해서 현재 위치를 마킹하고 다른 곳에 가서 확인한 후에 '{char}
로 즉시 마킹한 곳으로 되돌아 올 수 있다.
혹은 gd
를 이용해서 확인하고나서 <C-o>
로 되돌아올 수 있다.
다른 클래스의 정의를 보고 와야 할때
다른 디렉토리에 존재하는 클래스의 정의 등을 보고 와야 하는 경우에는 gd
커맨드를 이용해서 확인할 수 있다. 확인이 끝난 이후에는 <C-o>
를 여러 번 입력해서 원래의 위치로 되돌아올 수 있다.
파일 전체 주석 처리하고 싶을때
:%s/^/\/\//
을 이용하여 전체 주석처리를 한다. 주석을 #
으로 처리하는 경우 :%s/^/#/
을 이용한다.
주석 해제는 :%s/^\/\//
을 이용한다.
다음 코드처럼 작성해서 전체 주석 처리를 등록해서 사용할 수 있다.
noremap gm my:%s/^/\/\// <CR> 'y
noremap gu my:%s/^\/\//<CR> 'y
파일 전체 라인을 복사하고 싶을때
- Vim의 register만을 이용하는 경우 :
:%y
후 엔터를 입력한다. 이후에p
커맨드를 이용해서 붙여넣기 할 수 있다. - OS의 클립보드에 복사하고 싶은 경우 :
:%y+
를 입력한다. 이후에Ctrl + v (Vim X)
를 이용해서 붙여넣기 할 수 있다.
파일 전체에 올바른 indenting을 적용하고 싶을때
gg=G
를 입력한다. 이 경우에도 현재 작업 중인 위치를 잃는다는 단점이 있다.ma
로 현재 위치를 마킹해두고 gg=G
후 'a
로 되돌아오는 방법으로 대처할 수 있다.
이는 noremap gi mygg=G'y
과 같이 등록해서 사용할 수 있다.
Suggestions에서 위 아래로 이동하고 싶을때
가장 좋은 방법은 OS 레벨에서 지원하는 키매핑을 이용해서 Alt + h,j,k,l
을 방향키로 매핑 후 이를 이용하는 방법이다.
키매핑이 여의치 않다면 <C-n>
를 이용해서 아래로 <C-p>
로 위로 이동할 수 있다.
Suggestions 목록에서 설명을 보고 싶다면 <C-j>
를 입력한다.
현재 파일의 절대 경로를 클립보드에 복사하고 싶을때
:!echo -n % | pbcopy
를 입력하면 클립보드에 복사한다. intelliJ ideaVim + Mac.:!echo % | clip
은 intelliJ + Windows의 경우에서 동작.
이는 map gp :!echo % \| clip <CR>
와 같이 ~/.vimrc에 등록해서 사용하면 편리하다.
기타
Esc가 너무 멀다고 느껴질 때
일반적인 키보드에서의 Esc 위치는 Vim에서 사용하기에 너무 멀어 대부분 backtick이나 Capslock, <C-c>
등에 Esc를 매핑해서 사용한다.
다음과 같이 jk
와 kj
에 Esc를 매핑해두고 사용하면 더 편리할 수 있다. 빠르게 입력할 수 있으며 normal mode에서 실수로 입력한다고 해도 대부분의 경우 제자리로 되돌아오게 된다.
imap jk <Esc>
imap kj <Esc>
{} 코드 블럭을 접거나 열고 싶을때
zc
(z-close)로 코드를 접고 zo
(z-open)으로 코드를 열 수 있다.
탭간 이동을 하고 싶을때
gt
로 오른쪽 탭으로 이동, gT
로 왼쪽 탭으로 이동을 한다.
탭을 생성하거나 닫고 싶을때
:vs
(vertical split)로 현재 탭을 복사해서 좌우로 분리된 창에 열 수 있다. :sp
(split)은 상하로 분리된 창을 연다.<c-w><c-w>
(2번 입력)로 분할된 윈도우 간에 커서를 이동할 수 있다.:q
혹은 :bd
(bufferdelete) 혹은 :tabc
(tabclose)로 현재 탭을 끌 수 있다.
'etc > Vim' 카테고리의 다른 글
LunarVim 설치 가이드 (0) | 2023.06.23 |
---|---|
neovim에서 dap 세팅하기 (자바스크립트) (1) | 2023.06.23 |
AHK로 특정 프로그램(IDE) 실행시에만 Esc 클릭시 한/영 전환되게 하기 (0) | 2023.01.13 |
웹서핑을 키보드로만 해보자 (Vimium) (0) | 2022.12.05 |
- Total
- Today
- Yesterday
- ModelAttribute
- RequestParam
- neovim
- JavaScript
- RequestBody
- 아키텍처
- vim
- RequestPart
- 루나빔
- lunarvim
- Dap
- 레디스
- 배포
- IDE
- 도커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |