이번 글에서는 Nerd Fonts 와 vim-devicons 설치를 진행해보겠습니다.
vim-devicons 는 자체적으로 제공하는 기능은 없고, 지난 글들에서 설치했던 ctrlp 와 NERDTree, vim-airline 에 아이콘 출력 기능을 추가해주는 플러그인입니다.
각 플러그인들에서 출력되는 파일들의 타입들을 아이콘으로 쉽게 구분할 수 있게 되니, 프로젝트에 포함된 파일 종류가 많을수록 유용하게 쓰일꺼예요. 부가적으로... 거의 문자로만 구성된 vim 화면에 아이콘이 추가되서 한층 더 예뻐보이기도 하구요.
그럼 Nerd Font 먼저 설치 후, vim-devicons 설치를 진행하겠습니다.
Nerd Font 설치
Nerd Fonts 프로젝트 사이트에서 제공하는 Nerd Font 를 다운받거나(링크), 마찬가지로 해당 사이트에서 제공하는 font-patcher 스크립트로 원하는 폰트를 직접 Nerd Font 로 만드시면 됩니다.
Ners Fonts 에서 제공하는 폰트 중 하나를 설치하시는 경우, 다운받은 Nerd Font 를 사용하는 터미널의 폰트로 지정하신 후 2. vim-devicons 단계로 넘어가시면 됩니다.
전 한글이 포함된 프로그래밍 폰트를 선호해서 Nerd Fonts 에서 제공하는 폰트들은 사용하지 않고, 기존 사용하던 D2Coding 폰트를 Nerd Font 로 만들어 사용하려 합니다.
구글링 해보면 D2Coding Nerd Font 가 하나 있긴한데, 전 윈도우의 터미널 에뮬레이터에서 사용해서인지 글자 간격이 비정상적으로 안맞더라구요. 따라서 직접 만들어 보겠습니다.
먼저 다음 명령으로 GitHub의 Nerd Fonts 프로젝트를 클론 받습니다. font-patcher 스크립트 단일 수행은 안됐고, 프로젝트 내에서 src 하위의 아이콘 폰트들을 참고하는 것으로 보여 전체를 받았어요. 사이즈가 크므로 depth 1 로 설정해서 마지막 커밋들만 클론 받도록 합니다.
$ git clone --depth 1 https://github.com/ryanoasis/nerd-fonts
font-patcher 는 python 스크립트이므로 시스템에 python 이 없다면 설치 필요합니다. 최근의 Ubuntu 18.04 나, Ubuntu 20.04 에는 python3 가 기본으로 설치되어 있으니 설치방법은 따로 기술하진 않겠습니다.
font-patcher 는 또한 python의 FontForge 라이브러리를 필요로 하니, 다음 명령으로 python3 의 해당 라이브러리를 받습니다.
$ sudo apt -y install python3-fontforge
이제 font-patcher 는 수행 준비가 되었고, 다음으로 패치할 대상 폰트를 준비하여 프로젝트 경로에서 다음과 같이 수행합니다. 아래 명령에서 굵은 글씨의 파라미터만 원하는 폰트로 바꿔서 수행해주시면 되고, 아쉽게도 ttc 는 지원하지 않습니다.
$ ./font-patcher ../D2Coding/D2Coding-Ver1.3.2-20180524.ttf -s -w -c --careful --progressbars --fontawesome --fontawesomeextension --fontlinux --octicons --powersymbols --pomicons --powerline --powerlineextra --material --weather
각 옵션들에 대한 설명은 다음과 같습니다.
- -s: 문자들의 width 설정. 기본이 double-width 이므로, single-width 로 지정. double-width 로 생성한 폰트를 윈도우에서 사용 시 글자 간격이 비정상적으로 넓었음.
- -w: 윈도우와의 호환을 위해 내부 폰트 이름 길이 31자로 제한.
- -c: 가능한 모든 문자 추가.
- --careful: 중복 문자 발견 시 덮어쓰지 않음.
- --progressbars: 진행 상황 프로그레스바로 출력.
- --fontawesome ~ --weather: 패치할 아이콘 폰트들 지정.
수행이 완료되면 수행 경로에 다음과 같이 설정된 옵션에 따라 이름이 설정된 Nerd Font 가 생성됩니다.
$ ls *Nerd*
'D2Coding Nerd Font Complete Mono Windows Compatible.ttf'
이렇게 생성된 Nerd Font 들을 윈도우 또는 리눅스에서 사용하는 터미널의 폰트로 지정해주시면 됩니다. 터미널들 마다 설정법이 제각각이고, 쉽게 변경하실 수 있으므로 설정 방법은 기술하지 않겠습니다.
추가로, 제가 만들어둔 D2Coding Nerd Font 는 이 곳(D2Coding Nerd Font 다운로드)에서 다운 받으실 수 있습니다. 마지막으로 릴리즈된 D2Coding 1.3.2 이미지 내의 모든 ttf 파일들을 전부 Nerd Font 로 만들어 두었습니다. 윈도우의 XShell 6 와 같은 터미널 에뮬레이터에서 정상 동작은 확인했어요.
vim-devicons 설치
위의 Nerd Fonts 프로젝트와 동일한 제작자가 만든 플러그인 입니다. 위에서 말씀드린 것처럼 다른 플러그인들 ctrlp, vim-airline, NERDTree 등등 다양한 플러그인들에서 파일 타입, 기타 기호 등을 아이콘으로 출력하는 기능을 제공합니다. 별 것 아닌것 같지만 생각보다 편하고 예쁩니다. 설치 방법은 다음과 같습니다.
vim-plug 로 설치가 가능하니 .vimrc 내 vim-plug 초기화 섹션에 아래 굵은 라인을 추가합니다.
$ vim ~/.vimrc
…
call plug#begin('~/.vim/plugged')
…
Plug 'ryanoasis/vim-devicons'
…
call plug#end()
…
편집한 .vimrc 를 저장하고, 다시 읽어 플러그인을 설치합니다.
:w
:source %
:PlugInstall
이 플러그인은 추가적인 설정은 필요하지 않습니다. 바로 동작 확인을 해볼께요.
비교하기 편하게 플러그인 적용 전 화면도 같이 첨부 했습니다. 위 그림이 적용 전, 아래 그림이 적용 후 화면이며, 기존에 설치해두었던 ctrlp, vim-airline, NERDTree 플러그인들에 아이콘들이 추가된 것을 확인하실 수 있습니다.
* Environment
- HW: DS920+ (Synology NAS)
- OS: Ubuntu 20.04 (Docker container)
- vim 8.1
* References
- GitHub: ryanoasis/nerd-fonts
- GitHub: ryanoasis/vim-devicons