f/t 모션을 확장하는 evil-snipe 패키지 - 두 문자 검색 지원 및 버퍼로 확장 찾기
hlissner/evil-snipe 패키지를 Henrik Lissner가 만들었다. Doom Emacs를 만든 사람이다. 그래서인지 Doom Emacs에 디폴트로 포함되어 있다. 익숙해지면 편리할 것 같아서 친해질 겸 정리해 본다.
제공하는 기능은 다음과 같다. 현재 줄 찾기 후 확장. s
, S
키로 연속된 두 문자 포함 찾기. x
, X
키로 연속된 두 문자 앞까지 operator 모드에서 사용.
찾기 범위 - ;
, ,
f/F
, t/T
키로 현재 라인에서 문자를 찾을 수 있다. 찾고 난 뒤에는 ;
키로 앞으로 반복해서 찾고 ,
키로 뒤로 반복해서 찾을 수 있다. 찾기와 반복 찾기 범위를 설정할 수 있다.
현재 줄에서 찾고 보이는 범위로 확장해서 반복 찾기를 하는 디폴트 값을 그대로 사용하고 있다. evil-snipe-scope
변수와 evil-snipe-repeat-scope
변수로 범위를 변경할 수 있다.
첫 번째 문장 제일 앞 문자에 커서가 있다.
The quick Brown fox jumps over the lazy dog.
^
The five boxing wizards jump quickly.
fu
키를 누른다.
The quick Brown fox jumps over the lazy dog.
^
The five boxing wizards jump quickly.
;
키를 누른다.
The quick Brown fox jumps over the lazy dog.
^
The five boxing wizards jump quickly.
한 번 더 ;
키를 누른다. vim 기본 패키지 상태에서는 line 단위로만 찾기 때문에 더 이상 커서 이동을 하지 않는다. 하지만 evil-snipe 패키지를 사용하기 때문에 범위를 확장해서 찾는다.
The quick Brown fox jumps over the lazy dog.
The five boxing wizards jump quickly.
^
F
는 반대로 찾는다. Fi
The quick Brown fox jumps over the lazy dog.
The five boxing wizards jump quickly.
^
t
는 입력한 문자 바로 이전으로 이동한다. T
는 뒤로 검색한다. 아래는 tu
를 입력한 결과다.
The quick Brown fox jumps over the lazy dog.
The five boxing wizards jump quickly.
^
찾는 글자 수와 관계없이 버퍼 대상으로 찾을 때, /
키를 눌렀다. 이제 범위를 확장할 수 있으니 f/F
, t/T
키 활용도가 증가했다.
두 문자 매칭 이동 - s/S
s/S
키를 누르면 키 입력을 추가로 두 개를 받는다. 문자 하나만 받는 f/F
키를 두 문자를 받게 한 기능이다. 아직까진 완전히 손에 익진 않았고 가끔 생각날 때마다 한 번씩 쓰기는 한다.
커서가 첫 번째 문장 제일 앞에 글자인 T
에 있을 때, sum
키를 누르면
The quick Brown fox jumps over the lazy dog.
^
The five boxing wizards jump quickly.
;
반복 찾기 키를 누르면
The quick Brown fox jumps over the lazy dog.
The five boxing wizards jump quickly.
^
S
는 반대로 이동한다.
두 문자 이전까지 - operator mode에서 x/X
d
키를 누르면 이후에 지울 범위를 받는다. operator mode로 변환되는 것이다. x/X
키는 연속된 두 글자 이전까지를 범위로 잡는다.
The quick Brown fox jumps over the lazy dog.
^
The five boxing wizards jump quickly.
위처럼 r
문자에 커서가 있을 때, dxov
키를 누르면
The quick Bover the lazy dog.
^
The five boxing wizards jump quickly.
처음으로 찾은 ov
문자 앞까지 지운다. X
키는 x
키와 반대로 커서 이전을 찾는다.
마치며
찾기 범위 변수인 evil-snipe-scope
와 반복 찾기 변수인 evil-snipe-repeat-scope
를 분리한 건 좋은 디자인 결정이다. 현재 줄에서 찾는 키 기능을 그대로 유지하면서 반복했을 때만 범위를 넓히는 확장을 할 수 있게 해준다. f/F
, t/T
키를 눌렀을 때, 갑자기 먼 곳으로 이동해서 놀라는 걸 막아준다.
그러고 보니 반복 찾기가 현재 줄을 넘어가서 찾는데, evil 기능이겠거니 하면서 쓰고 있었다. 확실히 편하다. s/S
, x/X
키가 유용하지만 아직은 손에 익지 않았다. 존재 자체를 매번 까먹게 된다. 흔한 글자를 찾을 때, 두 글자로 찾을 수 있는 s/S
키를 요긴하게 쓸 수 있다.
C-x C-s C-x C-c