Categories
Vim

Vim 편집기에서 본문에 행번호 (line numbers) 를 삽입하는 방법

vim 편집기에서 행의 첫머리에 행번호를 삽입하는 방법을 알아보자.

1. 치환 명령 실행

명령 모드에서 : (콜론) 키를 눌러 이스케이프 (escape) 모드로 바꾼다.

아래 명령을 입력하고 엔터키를 누른다.

:%s/^/\=printf(“%04d”, line(“.”))

이 명령은 문서 전체에서 행의 처음을 찾아 행번호로 치환한다.

2. 명령어 설명

명령어의 구성 요소들을 하나씩 살펴보자.

% 는 치환의 범위를 문서 전체로 지정하는 기호이다.

s 는 치환 (substitution) 명령이다.

검색 패턴 ^ (캐럿) 은 행의 처음을 의미하는 기호이다.

\= 는 대체 문자열이다. \= 의 값은 다음에 나오는 함수나 수식을 평가한 결과값이다.

printf() 는 주어진 데이터를 문자열로 포맷하여 출력하는 함수이다.

“%04d” 는 포맷 문자열이다. 주어진 데이터를 4 자리의 십진수로 포맷한다. 숫자가 4 자리 미만일 때는 빈 자리를 0 으로 채운다.

“%4d” 를 쓰면 빈 자리를 공백으로 채운다. “%-4d” 를 쓰면 숫자가 왼쪽으로 정렬된다.

line(“.”) 은 현재 행의 행번호를 리턴하는 함수이다.

printf(“%04d”, line(“.”)) 는 현재 행의 행번호를 “%04d” 포맷에 맞게 바꾸어 리턴한다.

Categories
Vim

우분투 20.04에서 vim 텍스트 에디터 설치하기

우분투에 vim 텍스트 에디터를 설치하는 방법을 알아보자.

우분투를 설치할 때 자동으로 설치되는 vim 은 미니멀 (minimal) 버전이다. 풀 (full) 버전을 사용하려면 별도의 설치 과정을 거쳐야 한다.

우분투의 패키지 데이터베이스를 업데이트한다.

sudo apt update

vim 패키지를 설치한다.

sudo apt install vim

설치가 끝난 후에 vim 의 버전을 확인해 본다.

vim –version

vim 은 “vi improved” 를 의미한다. 유닉스의 vi 를 개선해서 만들었기 때문에 이런 이름이 붙었다.

Categories
Vim

Vim 의 치환 명령으로 영문자를 대문자나 소문자로 바꾸기

vi 의 바꾸기 명령으로 대문자를 소문자로 바꾸거나 소문자를 대문자로 바꾸는 방법을 알아보자.

1. 대문자로 바꾸기

문서에서 xtmci.com 을 찾아 모두 XTMCI.COM 으로 바꾸어 보자.

:%s/\(xtmci\).\(com\)/\U\1.\2/gc

여기서 \1 은 첫번째 부표현식 (sub expression) 으로 xtmci 를 가리킨다. \2 는 두번째 부표현식으로 com 을 가리킨다. \U 는 뒤에 오는 문자들을 모두 대문자로 바꾼다.

아래 명령은 xtmci.com 을 XTMCI.com 으로 바꾼다.

:%s/\(xtmci\).\(com\)/\U\1.\e\2/gc

여기서 \e 는 대소문자 변환을 중단시킨다. 그래서 com 은 대문자로 바뀌지 않은 것이다. \e 대신 \E 를 사용해도 된다.

아래 명령은 xtmci.com 을 Xtmci.com 으로 바꾼다.

:%s/\(xtmci\).\(com\)/\u\1.\2/gc

여기서 \u 는 뒤에 오는 문자 하나만 대문자로 바꾼다. \e 나 \E 를 사용하지 않아도 나머지 문자들은 바뀌지 않는다.

아래 명령은 xtmci.com 을 xtmci.COM 으로 바꾼다.

:%s/\(xtmci\).\(com\)/\1.\U\2/gc

아래 명령은 xtmci.com 을 xtmci.Com 으로 바꾼다.

:%s/\(xtmci\).\(com\)/\1.\u\2/gc

2. 소문자로 바꾸기

소문자로 바꾸는 방법은 대문자로 바꾸는 방법과 비슷하다.

\U 대신 \L 을 쓰고 \u 대신 \l (소문자 엘) 을 쓴다는 점만 다르다.

XTMCI.COM 을 xTMCI.cOM 으로 바꾸어 보자.

:%s/\(XTMCI\).\(COM\)/\l\1.\l\2/gc

여기서 \l (소문자 엘) 은 뒤에 오는 문자 하나만 소문자로 바꾼다.

Categories
Vim

vi 에서 사용자 정의 키 매핑 사용하기

vi 에서 사용자정의 키 매핑을 사용하는 방법을 알아본다.

F8 키를 누르면 현재 날짜와 시간이 입력되도록 해 보자.

vi 의 커맨드 라인에서 아래와 같이 입력한다.

:map <F8> :read !date<CR>

map 은 키 매핑을 정의하는 명령이다.

<F8> 은 F8 키를 누른다는 의미이다.

:read !date<CR> 부분을 살펴보자.

: 는 vi 의 커맨드 라인을 시작한다.

read 는 명령의 출력 결과를 현재 커서 아래에 삽입한다.

!date 는 vi 내부에서 실행되는 date 명령이다.

<CR> 는 엔터 키를 누르는 것과 같다.

아래 명령으로 <CR> 과 같은 키보드 키의 표기법을 확인할 수 있다.

:help key-notation

키 매핑을 정의하고 나서 기본 모드에서 F8 키를 눌러 보자. 현재 커서의 아래 줄에 날짜와 시간이 삽입될 것이다.

Sat 08 Oct 2022 06:24:32 AM KST

키 매핑은 기본 모드에서 사용한다. 입력 모드에서는 효과가 없다.

map 명령만 실행해 보자.

:map

현재 정의되어 있는 모든 키 매핑의 리스트가 출력될 것이다.

커맨드 라인에서 정의한 키 매핑은 해당 키 매핑을 정의한 세션에서만 사용 가능하다. vi 를 재시작하면 사용할 수 없다.

키 매핑을 ~/.vimrc 파일에 등록해 두면 영구적으로 사용 가능하게 된다.

~/.vimrc 파일을 열고 아래 내용을 추가한다.

map <F8> :read !date<CR>

이렇게 해 두면 vi 가 시작될 때마다 해당 키 매핑이 정의될 것이다.

vi 를 재시작하지 않고 ~/.vimrc 파일에 정의한 키 매핑을 사용할 수도 있다.

vi 커맨드 라인에서 아래 명령을 실행하면 된다.

:!source ~/.vimrc