08 Vim 기본 - 특정 문자로 커서 이동
- vim
- 2021. 11. 19.
Vim 특정 문자로 커서 이동하기
이번에는 f
, F
, 't', T' 키를 활용해서 한 줄 안에서 특정(지정한) 키로 이동할 수 있는 방법을 알아본다. 앞서 살펴보았듯, 문자 단위로 한 글자씩 좌, 우로 이동할 수 있었는데 h
, l
로 가능했다. 단어 단위로 점프하고자 할 때는 w
, W
, b
, B
, e
, E
등을 활용했다. 그러나 때로는 단어 단위가 아니라 '특정 문자까지'를 명령의 대상으로 삼고싶을 때가 있다. 다음 코드를 보자.
Calculator c2 = new CalculatorDecoMinus(); // 주석만 남기고 싶다면?
↑ 커서는 C 위치에 있다고 가정
현재 커서가 맨 첫번째 문자 - C 에 있다고 가정하자. 이 때, 주석만 남기고자 한다면 어떻게 할 수 있을까? 한번 생각해보자. 다양한 답이 나올 수 있다. vim 고수라면, 여러가지 방법들이 생각해낼 수 있을 것이다. '특정 문자로 커서 이동하기' 기능을 활용하면 단 한번의 명령 - dt/
로 해결할 수 있다. (미리 명령어를 풀어 설명하자면, '지워라(d) "/" 문자 까지(t)' 로 해석할 수 있다.)
f
, t
- 지정 문자까지 앞으로 이동하기
f
명령어는 지정한 문자가 존재하는 위치로 이동한다.t
명령어는 지정한 문자 바로 직전 위치로 이동한다.
다음 스크린샷과 같이 f
명령어는 지정한 문자 직전 문자로 이동한다. 반면 t
명령어는 해당 문자 직전 문자까지 이동한다. t
는 till 의 앞글자를 의미하는데, '~까지'라는 의미를 담고 있다. 따라서 '지정 문자 직전까지'라고 이해하면 기억하기 쉽다. f
는 find 의 앞글자를 따온 것 같다. 실제로 해당 문자를 찾겠다라는 의미로 이해하면 되겠다.
F
, T
- 지정 문자까지 뒤로 이동하기
F
(shift + f) 명령어는 지정한 문자의 위치로 뒤로 이동한다.T
(shift + T) 명령어는 지정한 문자 바로 직전 위치로 뒤로 이동한다.
f
, t
와 동일한 원리로 거꾸로 이동할 뿐이다. 커서로부터 전에 있는 문자를 찾는다.
;
- 이전 커서 이동 명령 재실행
다음 코드를 보자.
load('some', 'thing', 123, 345, 234, 'apple', 'micro soft')
↑현재커서위치 ↑이동하고싶은 위치
(
파라미터들이 좀 억지스럽기는 하지만...
) '현재커서 위치'와 '이동하고싶은 위치'를 표시해보았다. 이동하는 방법은 여러가지가 있을 수 있다. w
를 여러번 눌러도 된다. 하지만 그러지는 말자. vim 은 그렇게 쓸 수도 있지만, 항상 더 나은 방법이 있는지 고민해보아야 한다. 그게 The Vim Way 이다. ',' 라는 문자로 이동하기를 활용하면 된다. 다음 스크린샷을 보자.
원하는 위치까지 이동하기 위해서 키스트로크가 총 몇번 일어났는지 세어보자. 총 10번이다. 더 줄일 수 있는 방법이 있다. vim 에서는 f
, F
, t
, T
명령어에 대해서는 직전에 수행한 찾기를 반복할 수 있는 기능을 제공한다. ;
키를 누르면 직전에 했던 찾기를 바로 수행할 수 있다.
사실 이런 기능을 제공하는 것은 당연하다. 한 줄에 동일한 문자가 충분히 여러번 출현할 수 있다. 위 코드에서 micro soft 의 t
문자로 이동하는 것도 한 번에 불가능하다. 이 때도 ft
로 thing 의 t 로 이동한 뒤, ;
키로 그 다음 t 로 점프할 수 있다.
여기서 한 설명은 f
, F
, t
, T
에 대하여 모두 유효하다. T
명령어와 ;
키를 조합한 예제를 하나만 더 보도록 하자. 다음 코드와 같이 현재 커서는 줄의 마지막 문자에 위치하며, 첫번째 괄호 안 args 의 a 문자로 이동하고 싶다고 가정하자.
const onLineFunc = (args) => ({(+args[0].value) + (1000)});
↑이동하고싶은 위치 ↑현재커서위치
지금 당장은, a 를 지정해서 Fa
명령 수행 후 ;
를 사용하는 것이 더 효율적이지만, 이 부분에서는 T
와 ;
를 활용하는 방법을 확인하기 위해 T(
를 조합을 활용해서 점프해보도록 하자.
f
, F
, t
, T
는 모션
f
, t
, F
, T
는 모두 모션이다. 따라서 오퍼레이터와 조합하여 응용할 수 있다. 글 도입부에 dt/
라는 명령어를 이용해서 주석까지 d
명령어를 수행했던 것처럼 다양한 응용이 가능하다. 즉, c
, d
, v
명령어와 조합하여 활용할 수 있다.
맨 처음에 예시로 d
를 살펴보았으니 여기서는 c
, v
와 조합하여 사용한 예를 살펴본다.
오퍼레이터 c
와 조합
다음 코드에서 마지막 인자를 변경하고 싶다면 어떻게 해야할까? 커서는 맨 오른쪽 끝에 위치하고 있다고 가정하자.
load('some', 'thing', 123, 345, 234, 'apple', 'micro soft');
↑현재커서위치
'apple', 'microsoft' 를 각각 'amazon' 를 'tesla' 으로 변경하고 싶다고 가정하자. 다음 스크린샷과 같이 할 수 있다.
물론 더 다양한 방법들이 있을 수 있다. 최적의 방법을 찾아보는 것도 좋은 경험이 될 것이다. 여기서는 특정 문자로 이동하는 방법을 '굳이' 활용한 예를 보여준 것이다. 사실, 여기서 알아본 특정 문자로 이동하는 방법은 추후 매크로와 조합되었을 때 그 효과를 더욱 실감할 수 있다.
오퍼레이터 v
와 조합
v
는 앞선 포스팅에서 살펴보았듯, Vim Visual Mode 로의 진입을 위한 명령이다. 다음 코드에서 load 함수의 숫자로 된 부분을 save 함수의 인자로 붙여넣고 싶은 상황을 가정해보자.
↓ 2.숫자부분을 복사하여 ↓ 1.현재커서위치
load('some', 'thing', 123, 345, 234, 'apple', 'tesla');
save();
↑ 3.여기에 붙여넣기
이상으로 Vim 에서 특정 문자로 이동하고자 할 때 사용하는 명령어에 대해서 알아보았다. Vim 에서는 커서를 이동시키는 방법만 해도 여러가지이다. 장황하게 많은 것이 절대 아니고, 모두 적절하게 쓰일 적절한 순간들이 있다. 그만큼, 어떤 대상을 정확히 지시한다는 것이 수고로운 일인지 알 수 있다. 보통 논문이나, 전문적인 내용을 다루는 글들은 글의 도입부에 용어를 명확히 하고 시작하듯, Vim 도 그렇다. 대상을 정확히 지시하기 위해 지시하는 방법도 여러가지인 것이다.
[The Vim Way] 01 Vim 기본조작 - Vim 의 실행과 종료 글부터 여기까지 정주행했다면, 먼저 박수를 쳐주고 싶다. 곧 클라이맥스다. 다음 포스팅에서는 Vim 에서의 문자열 찾기에 대해서 다뤄보도록 하자.
'vim' 카테고리의 다른 글
10 Vim 기본 - 이전 명령 재실행(마이크로 매크로) (1) | 2021.11.19 |
---|---|
09 Vim 기본 - 문자열 찾기 (0) | 2021.11.19 |
07 Vim 기본 - Visual Mode(블록 씌우기) (0) | 2021.11.14 |
06 Vim 기본 - 복사하기와 붙여넣기 그리고 레지스터 (2) | 2021.11.14 |
05 Vim 기본 - 수정, 삭제 그리고 오퍼레이터 (0) | 2021.11.13 |