vi & gvim

[vi&gvim] Editor에서 단축키 사용+설정 방법

4열람실 2024. 11. 14. 14:59

 

※ 본 포스트의 작업환경은 CentOS 7.9.2009, CentOS 8.5.2111 에서 확인되었습니다.

 

1. 개요

 

vi에서 지원되는 수많은 Plugin 들이 있고, 그 Plugin들은 작업자가 편하게 사용할 수 있도록 수 많은 기능들을 지원한다.

그러나 그 기능들도 결국에는 기본 기능들의 조합을 통해 파생된 기능 묶음이고, 결국 가장 기본적인 명령어 설정을 통해서도 해당 기능을 구현 할 수 있기도 하다.

물론 당연히 Plugin을 사용하는 것 보다는 불편 할 수 있고, UI의 가시성이 아주 불편함을 넘어서 UI 자체가 없을 수도 있다.

하지만 사용자만 괜찮다면 해당 기능은 굉장히 강력하게 그 어떤 과부하 요소 없이 원하는 기능만 딱 구현 할 수 있기도 하다.

무엇보다 설정해놓고 혼자 사용하면서 '남들과 다르게, 나 좀 멋진듯?'과 같은 느낌을 가져다 주는 자기 만족이 제일 크다.

 

 

2. [.vimrc] 파일에 단축키를 선언(설정) 하는 방법

 

vi/gvim 에는 이미 알고 있겠지만 3가지 모드가 존재 한다.

insert mode / command-line mode / normal mode

이중 insert mode는 사실상 메모장이고, 나머지 두 모드에서 vi 만의 강력한 장점이 드러나는데

두 가지 모드 각각에서 그 특징을 살려 단축키를 사용 할 수 있는 방법을 소개 한다.

 

다만, 단축키는 여러 방향으로 응용 될 수 있기에 모든 방법을 제안하기 보다 해당 글에서는 자주 사용하는 문구를 Template 으로 만들고 현재 작업중인 파일에 불러와 붙여넣는 작업을 예시로 한다.

 

 

2-1. 조합키 사용 설정 방식 : nmap (with normal mode)

 

- example

> nmap <C-L>  :r  ~/Public/sample_template<CR>

- description

1) nmap

뒤에 따르는 Argument 들을 단축키로 mapping 해주는 vimrc 설정 command 이다.

앵글브래킷 (<>)으로 선언되는 첫 argument는 조합키에 대한 선언으로, "C (Ctrl 키) - L (알파벳 L 키)"를 뜻한다.

대소문자는 사용해본 결과 구분 없는 것으로 보인다.

2) :r

커서가 있는 위치로 다음에 뒤따르는 Path가 가리키는 파일의 내용을 불러와 붙여넣는 command 이다.

3) ~/Public ... [PATH]

":r" 에 대한 Argument로 template 처럼 자주 사용하는 문구를 미리 파일로 저장해두고 그 path를 통해 사용한다.

4) <CR>

키보드에서 [Enter]키를 대체하여 command 창에 [Enter]키를 입력하도록 하는 command 이다.

 

해당 조합키 사용 설정 방식은 결국 normal mode에서 시작하여 [ Ctrl + L ] 을 입력하면

command-line mode로 진입하면서 아래의 커맨드

":r ~/Public/sample_template"

을 입력하고 [Enter]까지 치는 단축키가 된다.

 

with normal mode라고 이름 붙여두긴 했으나 command-line mode를 활용하는 방법이기도 ㅎㅎ

 

 

2-2. command-line 에서 사용할 command 등록 방식 : command! (command-line mode)

 

- example

> command!  DATEIN  execute ':r ~/Public/sample_template'

- description 

1) command!

command-line mode에서 다음에 뒤따르는 키워드를 입력하면 그 뒤에 입력된 것을 수행하도록 선언하는 command 이다.

2) DATEIN

command-line mode에서 사용자가 ":" 콜론 입력후 입력하여 사용하게 될 command 호출 키워드다.

3) execute

앞서 입력된 "DATEIN"으로 대변되는 command 호출 키워드가 command-line mode에서 입력되었을 때, 활성화 되어 동작 할 수 있는 command option 중 하나로, 다음에 뒤따르는 ' '(작은 따옴표) 로 묶인 command를 수행하라는 의미의 command 이다.

4) :r ~/Pu.... 

execute에 대한 argument로 "DATEIN" 키워드가 ' '(작은 따옴표)로 묶여있는 내용을 수행하게 된다.

내용에 대한 설명은 앞선 normal mode에서 소개된 내용과 동일 하다.

 

해당 단축키 방식은 vi의 normal mode에서 ":" 콜론을 입력하면 진입 가능한 command-line mode에서 사용가능한 방식이다.

사용할 때는 아래와 같이 사용 할 수 있는데, 

:DATEIN

:DATEI

:DATE

:DAT

:DA

:D

중 하나만 입력해도 결국 동일한 command가 호출 되기 때문에 신중하게 해당 커맨드를 어떤것으로 사용할 지 정해야 한다.

 

만약 사용자 command로 DATEIN 과 DATASET 을 둘다 선언할 경우 DAT 까지 동일 하므로 명령어 충돌로 인해 오동작을 하게 될 수 있다.

 

 

3. 마무리

 

template 파일을 활용하는 방법을 예시로 단축키를 설정 방법을 설명하였다.

단축키를 활용하는 방법으로는 template 불러오기 이 외에도, 자주 사용하는 Plugin의 command를 등록 할 수 도 있고, 이미 있는 vim 단축키지만 사용자에게 더 친숙한 방법으로 remapping을 할 수도 있다. 심지어 vimrc내에 함수를 선언하는데, 해당 함수가 여러 변수를 통해 특정 키워드로 필터링을 한다거나, 연산을 한다거나 하는 등 단순하지만 반복되는 작업을 자동화한 내용을 포함하며, 그 함수를 불러와서 그 자동화 함수 마저도 빠르게 실행되도록 설정하는 것도 가능 하다.

그러한 확장 가능한 기능은 ..... 다음 기회에