작년에 인텔리제이 서브로 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로 붙여넣기.
'기타' 카테고리의 다른 글
| 전략 패턴 (0) | 2025.04.28 |
|---|---|
| ArrayList와 HashSet 만들어보기.. C++ (1) | 2025.03.03 |
| 순서복잡도 (Time Complexity) (0) | 2025.03.02 |
| List와 Set의 차이 (0) | 2025.03.02 |
| 어떻게 공부할 것인가.... 1 (0) | 2025.02.11 |