Command mode - 커서이동
vim에서는 텍스트를 편집함에 있어서 커서이동과 관련된 명령어들이 존재하는 데 그 명령어들은 다음과 같다.
종류 |
기능 |
|
h / (숫자)h |
왼쪽으로 이동 / (숫자)만큼 왼쪽으로 이동 |
|
j / (숫자)j |
아래쪽으로 이동 (숫자)만큼 아래쪽으로 이동 |
|
k / (숫자)k |
위쪽으로 이동 (숫자)만큼 위쪽으로 이동 |
|
l / (숫자)l |
오른쪽으로 이동 / (숫자)만큼 오른쪽으로 이동 |
|
- |
라인의 시작으로 이동 |
|
e, E |
다음단어의 끝으로, 문자단위 이동 |
|
w, W / b, B |
다음단어의 처음으로, 문자단위 이동 (시작->끝 / 끝 -> 시작) |
|
$ |
줄의 마지막으로 이동 |
|
0 |
줄의 처음으로 이동 |
|
^ |
줄의 처음으로 이동(공백을 제외한 문자가 처음 시작되는 지점) |
|
Shift + g |
문서의 마지막으로 이동 |
|
gg |
문서의 처음으로 이동 |
|
(숫자)Shift+g |
(숫자)번째 줄로 이동 |
|
), ( |
다음, 이전문장의 처음으로 |
|
}, { |
다음, 이전문단의 처음으로 |
|
]], [[ |
다음, 이전 구절의 처음으로 |
h - 왼쪽으로 이동 / j - 아래쪽으로 이동 / k - 위쪽으로 이동 / l - 오른쪽으로 이동
지금은 vim상에서 방향키로도 이를 수행할 수 있지만 과거의 vi에서는 방향키의 개념을 지원하지 않아서 이렇게 h, j, k, l 을 방향키의 개념으로 사용해왔다고 한다. 실제로 특정에디터에서 여전히 방향키가 호환이 되지 않는 경우가 있다고 하니 이 이 명령을 익히는 것이 결코 헛된 것은 아니다. 방향키와 배치가 다르기 때문에 많이 햇갈리기도 하는 데 이에 대해서는 왼쪽 2개는 'ㄱ', 오른쪽 2개는 'ㄴ' 생각하면 외우기 쉬워진다.
굳이 방향키가 동작하는 데 영문이동키 사용이 의미가 있는 이유는 무엇일까? 사실 영문이동키의 지원은 vim 의 큰 장점 중 하나이기도 하다고 많은 이들이 강조한다. 그 이유는 영문방향키를 사용함으로써 이동하기 위해 다른 쪽으로 손을 옮길필요가 없어지기 때문에 작업흐름을 유지하는 데 아주 좋다는 것이 큰 이유이다. 그렇기 때문에 vim을 사용하면서 방향키를 이용해서 이동하는 것은 vim이 가지는 장점을 온전히 활용하지 못하는 것이기 때문에 처음에 조금 불편하더라도 영문방향키를 이용하는 것이 좋다.
그리고 이에 부가적으로 각 영문방향키를 입력하기 전에 숫자를 입력하고 입력을 진행하면,
커서가 이렇게 위치하고 있을 때 "10 l" 을 입력하면,
커서가 다음과 같이 10칸 우측으로 이동한 것을 볼 수 있다. 이는 l 뿐만 아니라 나머지 h,j,k에도 동일하게 적용되므로 유용하게 사용할 수 있다.
- : 라인의 시작으로 이동
다음과 같이 커서가 위치하고 있을 때 ' - ' 명령을 입력하면
다음과 같이 파일의 시작 방향으로 위쪽 문장의 시작으로 커서가 이동하는 모습을 확인할 수 있다. 지속적으로 ' - ' 명령어를 입력할 경우 파일의 시작방향으로 계속 올라가다가 파일의 시작에 도달하게 되면 더 이상 진행되지 않는다.
e, E - 다음 단어의 끝으로, 문자단위 이동
다음과 같이 커서가 위치한 상황에서 e명령을 입력하면
다음과 같이 커서가 단어의 끝으로 이동한다. 여기서 해당명령을 한 번 더 입력하면
여기서 주목할 점은 단어와 단어를 단순히 공백없이 이어져 있는 것을 단어로 보는 것이 아니라 기호를 따로 구분한다는 점이다. 여기서 말하는 기호는 우리가 프로그래밍을 할 때 많이 사용하는 (), {}, * 등등 많은 문자들이 해당한다. 그래서 e의 경우 이러한 것들을 모두 구분해서 다룬 다는 점을 기억해야 한다.
그렇다면 e와 E의 차이점은 무엇일까? 방금 보았듯이 e의 경우 기호들도 하나의 단어로서 구분한다. 하지만 E의 경우 그렇게 하지 않고 단순히 공백 단위로 커서가 이동하게 된다. 그 차이는 다음의 상황에서 각 명령어를 입력했을 때의 결과를 비교해보면 확실하게 알 수 있다.
커서가 다음 위치에 있을 때 e 명령과 E 명령의 결과를 비교해보면
w, W - 다음단어의 처음으로, 문자단위 이동
다음과 같이 커서가 위치한 상황에서 w 명령을 입력하면
이전에 order와 서로 다른 단어로 구분되었던 문자 *로 커서가 이동한 것을 확인할 수 있다. 여기서 해당 명령을 한 번 더 입력하면,
다음과 같이 다음 단어의 처음부분으로 커서가 이동한 것을 확인할 수 있다. 해당명령은 파일의 시작에서 끝 방향으로 커서 이동을 진행한다.
w와 W 명령의 차이는 마찬가지로 단어를 구분하는 기준에 있어 그 차이가 있다.
이도 마찬가지로 위의 커서 위치에 따른 각 명령의 실행결과를 비교해보면
$ - 줄의 마지막으로 이동
다음과 같이 커서가 위치한 상황에서 해당명령을 입력하면
다음과 같이 커서가 위치한 줄의 끝으로 이동하는 것을 확인할 수 있다.
0 - 줄의 처음으로 이동(알파벳이 아니라 숫자 0 이다.)
다음과 같은 상황에서 해당명령을 입력하면
다음과 같이 커서가 위치한 줄의 처음으로 이동하는 것을 확인할 수 있다. 단, 공백도 줄로 간주해서 이동했다는 점에 주목하자.
^ - 줄의 처음으로 이동(공백을 제외하고 문자가 시작되는 부분부터)
^ 명령과 0 명령의 차이를 유심히 보도록 하자. 이전과 같은 커서 위치에서 ^ 명령을 입력하면
다음과 같이 해당 줄의 처음으로 이동하는 데 공백이 아닌 문자로 시작되는 부분을 시작으로 보고 이동한다. 0과 ^의 차이을 잘 기억해 두고 활용하도록 하자.
Shift + g - 파일의 마지막으로 이동
다음과 같이 파일의 어떤 지점에 커서가 위치해 있을 때 해당명령어를 입력하면
다음과 같이 파일의 끝으로 커서가 이동한 것을 확인할 수 있다. 코드 새로작성하던 중에는 자신이 최근에 작성한 부분이 파일의 마지막인 경우가 많은데 그 때 이용하면 아주 편리하다.
gg - 문서의 처음으로 이동
이는 이전의 명령과 반대이다.
다음상황에서 해당 명령어를 입력하면
다음과 같이 파일의 처음으로 이동한다. 이는 프로그램 작성 중 특정한 헤더파일을 추가하고 싶은 경우에 빠르게 해더파일이 선언되는 파일의 첫부분으로 갈 수 있는 아주 유용한 방법이다.
(숫자)Shift + g - (숫자)번째의 줄로 이동(+a :set nu, set nonu)
우선 이에 대해서 이야기하기 전에 이는 command mode의 명령이 아니라 command-line mode에서의 명령이지만 이것을 먼저 알고 있을 필요성이 있기 때문에 이에 대해서 먼저 이야기 하도록 하겠다.
이전 화면에서 봤던 것처럼 다음과 같이 소스코드를 편집하다보면 자신이 작업하고 있는 라인이 몇번째 라인인지를 알아야 할 필요가 있는상황이 있다. 이때 사용할 수 있는 것이 바로 :set nu 이다.
command line mode로 변경해서 해당명령을 입력하면 다음과 같이 화면의 우측에 라인 넘버링이 된 모습을 확인할 수 있다. 그리고 이를 해제하고 싶으면 :set nonu 를 입력하면 된다.
이제 이를 기준으로 라인번호를 참고해서 (숫자) Shift + g 명령에 대해서 알아보겠다.
위 화면상에서는 현재 1번 라인에 커서가 위치하고 있는데 여기서 245g를 입력하면 다음과 같이 된다.
다음과 같이 245번째 라인의 시작부분으로 커서가 이동한 것을 확인할 수 있다. (숫자) Shift + g 명령을 제대로 활용하기 위해서는 이전에 함께 살펴본 :set nu와 함께 연동해서 사용 시 더 좋은 효과를 낼 수 있다. 이를 통해서 디버깅 시 문제가 있는 코드라인에 빠르게 접근하는 등 유용하게 사용할 수 있다. 물론 :set nu 명령어를 사용하지 않아도 (숫자) Shift + g 명령을 사용하는 것은 가능하다.
'Tools > Vim' 카테고리의 다른 글
Command mode - 글자(단어) 찾기 (0) | 2021.02.07 |
---|---|
Command mode - 현재 파일을 저장하고 vim 종료 (0) | 2021.02.06 |
Command mode - 내용변경 명령 (0) | 2021.02.06 |
Command mode - undo / redo (0) | 2021.02.06 |
Command Mode - 복사/지우기/붙여넣기 명령 (0) | 2021.02.06 |
댓글
이 글 공유하기
다른 글
-
Command mode - 글자(단어) 찾기
Command mode - 글자(단어) 찾기
2021.02.07 -
Command mode - 현재 파일을 저장하고 vim 종료
Command mode - 현재 파일을 저장하고 vim 종료
2021.02.06 -
Command mode - 내용변경 명령
Command mode - 내용변경 명령
2021.02.06 -
Command mode - undo / redo
Command mode - undo / redo
2021.02.06