2020. 12. 1. 17:06ㆍLinux/Command-line
이번 포스팅에서는 vim 명령어 중 cursor 이동에 관련된 명령어를 알아볼 것입니다.
- 단어 이동
- 문장 맨 앞/뒤 이동
- 매칭
- 특정 line 이동
- scroll
- 커서 위치 가운데로 조정
- 검색
1. 단어 이동
다음 단어로 이동하는 명령어는 w, 이전 단어로 이동하는 명령어는 b 입니다.
The point of u
sing Lorem Ipsum is that it has a more-or-less normal distribution of letters
w을 누를 경우 L
orem 으로 커서가 이동되고, b를 누를 경우 o
f 으로 커서가 이동됩니다.
이 명령어의 앞에는 숫자를 붙여서 3w(3단어 뒤) 라던가, 2w(2단어 앞) 과같은 사용도 가능합니다.
참고로 -, ., (, )
과 같은 특수문자들은 단어 하나로 칭하기 때문에 m
ore-or-less 에서 w를 누를경우 more-
or-less 로 이동됩니다.
특수문자를 무시하고 싶다면 대문자 W, B를 이용하면 됩니다.
※ w, b 명령어는 단어의 맨 첫번째 문자에 커서가 위치합니다.
2. 문장 맨 앞/뒤 이동
커서가 어디에 있든, 문장의 맨앞이나 맨 뒤로 커서를 이동시키는 명령어를 알아봅시다.
0 은 문장 맨앞으로 이동합니다. 이때 문장 맨앞에 공백이 있다면 공백으로 이동합니다.
^ 는 문장 맨앞에 위치한 공백을 제외한 문자로 커서를 이동합니다.
$ 는 문장 맨 뒤에 위치한 문자로 커서를 이동합니다.
예를 들어, 아래와 같은 문장이 있고, s에 커서가 위치한 상태라면
Temporibus autem quibus
dam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae.
0 를 누르면 Temporibus 로 커서가 이동되고,
^ 를 누르면 T
emporibus 로 커서가 이동됩니다.
$ 를 누르면 recusandae.
로 커서가 이동됩니다.
$ 는 숫자와 혼합하여 3$ 와같은 형태로 명령어를 쓸수 있지만, ^ 나 0 는 숫자와 혼합하여 사용할 수 없습니다.
3. 괄호 매칭
% 는 현재 커서가 위치한 line에 괄호가 있을 경우, 해당 괄호의 짝이 되는 괄호로 커서를 이동시킵니다.
한번 더 누를 경우, 반대쪽 괄호로 커서가 이동됩니다.
프로그래밍 코드를 작성할 때, 해당 괄호의 끝으로 이동하기 위해 사용하면 좋습니다.
예를 들자면, 아래 코드에서, T
est에 커서가 위치된 상태에서 %를 누를 경우 맨 아래에 위치한 }
로 이동되고, 한번 더 누를 경우 public class Test {
로 커서를 이동시킵니다.
public class Test { public static void main(String[] args) { if(Pattern.matches("^Bearer .*", "Bearer 123")) { System.out.println("valid"); } else { System.out.println("Invalid"); } } }
4. 특정 line 이동
G 를 누르면 문서의 맨 마지막 line의 첫번째 문자(공백 제외)에 커서가 이동됩니다.
14G 와 같이 G앞에 숫자를 넣을 경우 해당 line의 맨 첫번째 문자로 커서를 이동하며, 1G는 문서의 맨 첫번 째 line의 첫번째 문자로 커서를 이동합니다.
1G 는 보다 간단하게 gg 를 이용해도 작동됩니다.
현재 창에 보이는 문서 중 맨 위, 가운데, 맨 아래 line으로 이동하는 명령어도 제공되는데. 맨위는 H, 가운데는 M, 맨 아래는 L 입니다.
++ 참고로 line number를 vim 편집기에 표현하기 위한 command-line 명령어는 :set number
입니다. (line number를 안보이게 하는 명령어는 :set nonumber)
++ 커서가 위치한 line의 줄번호와 %(파일 전체중 위치), 파일명을 맨 아래에 보여주는 명령어는 Ctrl + G 입니다.
5. scroll
마우스의 스크롤기능을 대신하는 단축키입니다.
※ 기존 스크린을 넘어가는 경우가 아니라면 커서는 이동되지 않습니다.
5-1) 1 Page 스크롤
아랫부분에 있는 문장을 위로 끌어당긴다고 가정해봅시다.
1 페이지 위로 이동되는 것이 Ctrl + B 이며 (= Page Up)
1 페이지 아래로 이동되는 것이 Ctrl + F 입니다. (= Page Down)
보통 문서는 위에서 아래 방향으로 작성하기 때문에, 아래쪽 방향이 나아가는 방향(Forwards)이고, 위쪽 방향은 반대방향(Backwards)이라고 생각하면 명령어를 이해하기 편할 것입니다.
5-2) 1/2 Page 스크롤
1/2 페이지 위로 이동되는 것이Ctrl + U이고,
1/2 페이지 아래로 이동되는 것이 Ctrl + D 입니다.
5-3) 1 line 스크롤
한줄 위로 이동되는 것이Ctrl + Y이고,
한줄 아래로 이동되는 것이 Ctrl + E 입니다.
6. 커서 위치 가운데로 조정
z + z
스크롤을 할 때, 문서상의 커서 위치는 그대로 두면서 커서가 위치한 line을 스크린 중앙에 위치시키고 싶을 때 사용하는 명령어 입니다.
7. 검색
문자열을 검색은 command-line 명령어를 이용합니다.
7-1) 일반 검색
/문자열
현재 커서 위치 다음 문자부터 문자열을 forwards(순차) 검색합니다.
n을 누르면 다음 찾기, N을 누르면 이전 찾기가 됩니다.
?문자열
현재 커서 위치 이전 문자부터 문자열을 backwards(역순) 검색합니다.
역순 검색이기 때문에 n은 커서 이전에서 찾고, N은 커서 이후에서찾습니다.
.*[]^%/\?~$
와 같은 특별기호가 포함된 문자열을 검색하고 싶을 때엔, 특별 기호 앞에\
를 입력하면 됩니다.
7-2) 기본 패턴 검색
시작하는 문자열 검색
/^문자열
line에서 'apple'로 시작하는 문자열을 검색합니다.
공백으로 시작되는 맨 마지막 줄의 apple은 제외됩니다.
끝나는 문자열 검색
line에서 'melon'으로 끝나는 문자열을 검색합니다.
뒤에 탭이나 공백이 있을 경우 제외됩니다.
any single character
.
은 문자 1개를 의미합니다.
이것을 검색과 함께 적용하면, 아래와 같이 검색이 가능합니다.
만일, .
문자를 검색하고 싶다면 \.
와 같이 backslash를 앞에 붙여 검색하면 됩니다.
7-3) 검색 옵션
:set ignorecase
문자열 검색시 대소문자 구분을 하지 않습니다.
대소문자 구분을 원한다면 :set noignorecase 명령을 하면 됩니다.
※ 참고로 :set 으로 시작되는 command-line 명령어들은 대부분 no를 붙여서 옵션을 해제시킬 수 있습니다.
:set nowrapscan
vim editor는 기본적으로 wrapscan(되돌이 검색)이 활성화 되어있는 상태입니다.
따라서, 문서 내의 검색 조회가 맨 마지막에 도달했을 때, 한번 더 검색을 실행할 경우 맨 첫번째 검색어 위치로 커서를 이동시킵니다.
만일, 되돌이검색을 원하지 않는다면 :set nowrapscan 을 실행하면 됩니다.
기본적으로(:set wrapscan), 마지막 검색 검색 도달시 맨 첫번째 검색 위치로 커서를 옮깁니다.
:set nowrapscan 설정이 되어있는 경우, 마지막 검색 도달시 검색을 멈춥니다.
:set nohlsearch
기본적으로 검색된 문자열은 background highlight 처리됩니다.
만일, 검색된 문자열의 highlight 처리를 끄고 싶다면 :set nohlsearch 명령을 하면 됩니다.(다시 켜고싶다면 :set hlsearch)
만약, 일시적으로 highlight를 끄고 싶다면 :nohlsearch 를 합니다.
그러나,n 또는 N을 누를경우 다시 highlight는 켜집니다.
:set incsearch
커서 위치 다음부터 검색하고자하는 문자열을 실시간으로 매칭합니다.
7-4) 계정별 vim 검색 옵션 기본값 설정
계정별 vim 옵션 기본값을 설정하면, vim 에디터 실행시 자동으로 옵션이 적용됩니다.
계정의 홈디렉토리내의 .vimrc에 적용하고자하는 옵션을 설정합니다.
vim ~/.vimrc
set number set nowrapscan set incsearch
줄번호 표시, 되돌이검색 비활성화, 검색 문자열 실시간 매칭 옵션 활성화 옵션을 추가하였습니다.
'Linux > Command-line' 카테고리의 다른 글
ssh 터널링을 이용한 원격 private database 접속 (0) | 2021.03.03 |
---|---|
[Command-line] sort 명령어를 이용한 텍스트 정렬 (0) | 2021.01.12 |
[Command-line] tr 명령어를 이용한 character set 변환 및 삭제 (0) | 2021.01.05 |
[Command-line] tail을 이용한 실시간 로그 모니터링 (+ head) (0) | 2020.12.29 |
[CLI vim] 1. vim 시작하기 (0) | 2020.11.20 |