작년에 인텔리제이 서브로 vscode대신 lazyvim을 사용하려고 했는데 진입장벽을 넘지 못하고 포기했다..
하지만 다시 또 온다... vim 마스터가 될거야..
lazyvim을 재설치하고 다시 한 번 써보려했지만 단축키 기억도 제대로 못하는데 사용법 익히는게 너무 막막하다..
일단 인텔리제이에IdeaVim
을 설치했다...
그리고 몇년째 곧잘 활용 못하는 Vimium
을 적극 사용해보기로...
먼저 Vimium 단축키다...
현재 페이지 탐색
?
: 모든 단축키 목록이 담긴 도움말 표시.h
: 왼쪽으로 스크롤.j
: 아래로 스크롤.k
: 위로 스크롤.l
: 오른쪽으로 스크롤.gg
: 페이지 맨 위로 이동.G
: 페이지 맨 아래로 이동.d
: 페이지 반만큼 아래로 스크롤.u
: 페이지 반만큼 위로 스크롤.f
: 현재 탭에서 링크 열기.F
: 새 탭에서 링크 열기.r
: 페이지 새로고침.gs
: 소스 코드 보기.i
: 입력 모드 진입 (Esc로 나올 때까지 명령 무시).yy
: 현재 URL 클립보드에 복사.yf
: 링크 URL 클립보드에 복사.gf
: 다음 프레임으로 이동.gF
: 메인/최상위 프레임에 포커스.
새 페이지로 이동
o
: URL, 북마크, 방문 기록 열기.O
: 새 탭에서 URL, 북마크, 방문 기록 열기.b
: 북마크 열기.B
: 새 탭에서 북마크 열기.
검색 사용
/
: 검색 모드 진입 (쿼리 입력 후 Enter로 검색, Esc로 취소).n
: 다음 검색 결과로 이동.N
: 이전 검색 결과로 이동.
방문 기록 탐색
H
: 뒤로 가기.L
: 앞으로 가기.
탭 관리
J
,gT
: 왼쪽 탭으로 이동.K
,gt
: 오른쪽 탭으로 이동.g0
: 첫 번째 탭으로 (예:3g0
은 3번째 탭).g$
: 마지막 탭으로.^
: 이전에 방문한 탭으로.t
: 새 탭 생성.yt
: 현재 탭 복제.x
: 현재 탭 닫기.X
: 닫힌 탭 복원.T
: 열린 탭 검색.W
: 현재 탭을 새 창으로 이동.<a-p>
: 탭 고정/고정 해제.
마크 사용
ma
,mA
: 로컬 마크 "a" 설정 (대문자 A는 전역 마크).a`,
A`: 로컬 마크 "a"로 이동 (대문자 A는 전역 마크).-
추가 고급 명령어
]]
,[[
: '다음' 또는 '>' / '이전' 또는 '<' 라벨 링크 따라가기 (페이지네이션 탐색).<a-f>
: 여러 링크를 새 탭에서 열기.gi
: 페이지의 첫 번째 텍스트 입력란에 포커스 (Tab으로 순환).gu
: URL 계층 한 단계 위로.gU
: URL 루트로 이동.ge
: 현재 URL 편집.gE
: 현재 URL 편집 후 새 탭에서 열기.zH
: 맨 왼쪽으로 스크롤.zL
: 맨 오른쪽으로 스크롤.v
: 비주얼 모드 (p/P로 붙여넣고 이동, y로 복사).V
: 비주얼 라인 모드.R
: 페이지 강력 새로고침 (캐시 무시).
명령어 반복 가능 (예: 5t
로 탭 5개 연속 생성). <Esc>
또는 <c-[>
로 명령어 초기화 및 입력/검색 모드 종료.
https://github.com/philc/vimium/blob/master/README.md#keyboard-bindings
IdeaVim
1. 기본 이동 (지금 아시는 것)
- 글자 단위 이동:
h
(좌),j
(하),k
(상),l
(우)- 메서드나 변수명 안에서 세밀하게 이동할 때.
- 단어 단위 이동:
w
: 다음 단어 처음으로 (예:public
→void
).b
: 이전 단어 처음으로 (빠르게 뒤로).e
: 다음 단어 끝으로 (예: 변수명 끝으로).
- 줄 단위 이동:
0
: 줄 맨 처음 (예: 들여쓰기 앞).$
: 줄 맨 끝 (예: 세미콜론 위치).^
: 줄의 첫 코드 위치 (들여쓰기 뒤).gg
: 파일 맨 위 (클래스 선언으로).G
: 파일 맨 아래 (엔드포인트나 메서드 끝으로).
2. 입력과 편집 (지금 아시는 것 + 추가)
- 입력 시작:
i
: 커서 앞에서 입력 (변수명 수정).a
: 커서 뒤에서 입력 (파라미터 추가).A
: 줄 끝에서 입력 (예: 메서드 끝에 세미콜론 추가).o
: 새 줄 아래에서 입력 (새 메서드나 로직 추가).O
: 새 줄 위에서 입력 (주석 추가).
- 삭제:
dd
: 현재 줄 삭제 (잘못된 코드 지우기).dG
: 커서부터 파일 끝까지 삭제 (대량 정리).dw
: 단어 삭제 (변수명 실수 지울 때).diw
: 커서가 단어 안에 있을 때 단어 전체 삭제 (공백 안 지움).x
: 커서 위치 글자 하나 삭제 (오타 수정).
3. 자바 스프링에서 자주 쓸 만한 추가 명령어
- 복사/붙이기 (로그나 코드 재사용):
yy
: 현재 줄 복사 (예:@GetMapping
라인 복사).p
: 커서 뒤에 붙이기 (복사한 코드 붙여넣기).P
: 커서 앞에 붙이기.
- 변경 (리팩토링이나 수정):
cw
: 단어 변경 (커서부터 단어 끝까지 지우고 입력 모드).- 예:
int
→String
으로 바꿀 때.
- 예:
ci"
또는ci'
: 따옴표 안 내용 변경 (문자열 수정).- 예:
"hello"
→"world"
.
- 예:
- 검색 (메서드나 변수 찾기):
/문자열
+ Enter: 파일 내 검색 (예:/getUser
로 메서드 찾기).n
: 다음 검색 결과로,N
: 이전 결과로.*
: 커서가 있는 단어 검색 (변수명 찾기 유용).
- 줄 이동 (코드 구조 확인):
:숫자
: 특정 줄로 이동 (예::50
으로 50번째 줄).{
/}
: 단락 단위 이동 (메서드 간 이동).
4. 자바 스프링 특화 작업
- 중괄호 탐색 (메서드 블록 이동):
%
: 짝이 맞는 중괄호/괄호로 이동.- 예: 메서드 시작
{
에서 누르면 끝}
로 이동.
- 예: 메서드 시작
- 들여쓰기 조정 (코드 정렬):
>>
: 현재 줄 오른쪽으로 들여쓰기.<<
: 현재 줄 왼쪽으로 들여쓰기.==
: 현재 줄 자동 들여쓰기 맞춤.
- 주석 처리 (디버깅/설명 추가):
- LazyVim 기준:
<Space>/
(줄 주석 토글). - 기본 Vim:
I//
+Esc
(줄 처음에//
삽입).
- LazyVim 기준:
5. 저장 및 종료 (작업 마무리)
:w
: 저장.:q
: 종료 (IntelliJ에서는 파일 닫기).:wq
: 저장 후 종료.:q!
: 저장 안 하고 강제 종료 (실수한 코드 버릴 때).
자바 스프링 코딩 예시 시나리오
상황 1: 새 메서드 추가
@GetMapping("/users")
public List<User> getUsers() {
return userService.findAll();
}
o
눌러 새 줄 추가 →@GetMapping("/users")
입력.o
로 다음 줄 →public List<User> getUsers() {
입력.o
로 블록 안 →return userService.findAll();
입력.$
로 줄 끝 →}
추가.
상황 2: 변수명 수정
int count = 10;
w
로 "count" 시작으로 이동 →cw
→total
입력.- 결과:
int total = 10;
.
상황 3: 메서드 찾기
/findAll
입력 → Enter →n
으로 다음 결과 이동.%
로 메서드 끝 확인.
상황 4: 코드 삭제/복사
- 잘못된 줄에서
dd
로 삭제. @PostMapping
라인에서yy
→ 아래로 이동 →p
로 붙여넣기.
'기타' 카테고리의 다른 글
ArrayList와 HashSet 만들어보기.. C++ (1) | 2025.03.03 |
---|---|
순서복잡도 (Time Complexity) (0) | 2025.03.02 |
List와 Set의 차이 (0) | 2025.03.02 |
어떻게 공부할 것인가.... 1 (0) | 2025.02.11 |
Deque (1) | 2025.01.16 |