오늘은 나의 맥 개발 환경 간지나게 꾸미기의 2탄으로 vi의 설정과 bat을 설치하고 사용 방법에 대해 살펴볼 것이다.
사실 다소 귀찮은 작업들은 1탄에서 완료했다.
[Terminal] 맥 터미널 개발 환경 간지나게 꾸미기 1/2 (iTerm2, zsh, oh-my-zsh, powerlevel10k)
[Terminal] 맥 터미널 개발 환경 간지나게 꾸미기 1/2 (iTerm2, zsh, oh-my-zsh, powerlevel10k)
맥 터미널을 간지나게 꾸며보자. 그 전에 Homebrew를 설치하지 않았다면 먼저 설치하자. 전공자나 찐 개발자 입장에서는 보잘것없겠지만 쉽고 적당히 간지도 나는 설정으로는 이만한 게 없어 보인
dykm.tistory.com
그럼 이제 남은 작업을 시작해보자.
Bat 이란
bat
은 터미널에서 파일을 열지 않고 내용을 확인하기 위한 커맨드 라인 툴로 보통 cat
을 대체한다.
bat
으로 코드를 출력할 때 syntax highlighting이나 라인 넘버를 표시하는 등 cat에서 지원하지 않는 기능들이 있다.
Bat 설치 및 실행
먼저 Homebrew가 설치되어있어야 한다.
만약 brew가 설치되어있지 않다면 아래 커맨드로 brew을 설치하자.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrew가 있으면 아래 커맨드로 bat
을 간단하게 설치할 수 있다.
brew install bat
설치가 끝났으면 이제 파일을 열 때 cat
대신 bat
을 사용해서 아래 예시처럼 파일의 내용을 확인할 수 있다.
bat myfile.txt
Bat 설정 및 옵션
보통 cat
대신 bat
을 사용하는데 cat
을 사용해오던 사람들은 bat
을 타이핑하는게 어색하다.
alias로 cat
을 입력하면 bat
이 실행되도록 설정해주자.
vi ~/.zshrc
로 파일을 연 다음 본인이 alias을 관리하는 곳이나 아니면 파일의 맨 밑에 아래 내용을 추가한 다음 저장하자.
alias cat='bat --paging never'
이때 --paging never
는 사실 추가하지 않아도 작동하지만 --paging never
로 pager에서 열리도록 허용하지 않을 수 있다.
취향 차이인데 주로 cat
이나 bat
은 파일을 열지 않고 빠르게 내용만 확인할 때 자주 사용하므로 저 옵션을 alias에 포함했다.
이 외에도 다양한 옵션들이 있다. 상황에 맞춰 적절한 옵션을 선택하거나 자주 사용하는 옵션을 alias에 추가하자.
-n, --number
: 파일의 각 줄 옆에 줄 번호를 표시-r, --plain
: Syntax highlighting 없이 파일을 표시-l, --language
: 구문 강조 표시에 사용할 언어를 지정 (예를 들어,bat -l python myfile.py
)-p, --paging
: 파일을 표시하는 데 사용되는 페이징 유형을 설정, 기본적으로 출력이 한 화면보다 길면 pager를 사용한다. 항상 전체 파일을 인쇄하거나 항상 pager를 사용하도록 설정할 수도 있다. (ex--paging=auto
,less
,never
,always
)-H, --highlight-line
: 파일에서 지정된 줄을 강조 표시, 예를 들어bat -H 10,15 myfile.txt
는myfile.txt
파일의 10행과 15행을 강조 표시한다.-A, --show-all
: 탭 및 줄 끝의 공백과 같이 안 보이는 공백(혹은 드래그 해야 보이는 공백)를 표시-C, --decorations
: 헤더 및 파일 이름과 같은 다양한 데코레이션을 활성화하거나 비활성화-s, --style
: 구문 강조에 사용할 스타일을 지정,bat --list-themes
를 실행하여 사용 가능한 스타일을 볼 수 있다.-o, --output
: 예를 들어bat myfile.txt -o output.txt
는 myfile.txt에서 사용된 하이라이팅을 output.txt에 사용한다. (설명이 애매한데 직접 사용해보면 뭔지 알 수 있다.그리고 잘 안 써서 다시 까먹게 된다.)-w, --warp
: 줄바꿈 옵션, 가로로 스크롤하지 않고 긴 줄이 있는 파일을 볼 때 사용한다. 예를 들어--warp=80
이나--warp=never
로 너비를 지정하거나 긴 파일을 볼 때 유용하도록 줄바꿈을 비활성화할 수 있다.
또한 기본 옵션은 아니지만 끝에 bat myfile.txt | pbcopy
처럼 끝에 | pbcopy
을 붙여서 출력되는 내용을 바로 클립보드에 저장하여 필요한 곳에 붙여넣을 수 있다. 혹은 bat -r 10:20 myfile.txt | pbcopy
으로 myfile.txt의 10에서 20행만 따로 클립보드에 복사할 수 있다.
하지만 위의 옵션들보단 아래 두 사용 예시만 거의 사용한다. 자주 사용하는 예시를 살펴보자
사용 예시:
- 그냥 확인용으로 예쁘게 출력할 때:
bat --paging never myfile.txt
- 필요한 부분을 복사하기 위해 출력할 때:
bat --wrap=never --paging=never -p myfile.txt
나는 bat --paging=never
와 bat --wrap=never --paging=never -p
을 통으로 alias로 설정하여 사용 중이다.
vim 설정
사실 vim 설정을 처음부터 끝까지 다 설명하려면 굉장히 복잡하기 때문에 아래 목표 결과물과 똑같은 환경을 갖추는 방법을 위주로 살펴보자. 설정에 대한 자세한 설명은 추후에 작성하겠다.
목표는 아래 모습의 에디터 vi를 구현하는 것이다.
먼저 터미널을 열고 ls -a 로 .vimrc 파일이 있는지 확인하자.
없다면 touch ~/.vimrc로 파일을 만들자.
이제 vi .vimrc로 파일을 열고 아래 내용을 복사해서 붙여넣자.
주제?별로 네 가지로 나누었다.
- 기능 관련
syntax on "문법 체크
filetype indent plugin on "파일종류에 따른 구문 강조, 탭 조정, plugin on
set title "상단에 파일 이름을 표시
set ruler "하단에 현재 커서의 위치를 표시
set showmatch "괄호 짝을 찾음
set t_Co=256 "256 컬러 사용
set hlsearch "검색된 단어를 highlight
set smartcase "찾을 때 커서를 옮김
set expandtab "tab을 공백(space)으로 자동 전환
set tabstop=4 "tab의 크기
set shiftwidth=4 "indent의크기
set softtabstop=4 "tab을 4개의 space로 전환
set smarttab
set autoindent "indent를 다음 줄에도 유지
set smartindent "문법에 맞게 자동으로 indent
set termguicolors
- 마지막 커서 위치 기억
" Memory Cursor Position
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "norm g`\"" |
\ endif
- 상태바 설정
" status bar colors
au InsertEnter * hi statusline guifg=black guibg=#d7afff ctermfg=black ctermbg=magenta
au InsertLeave * hi statusline guifg=black guibg=#8fbfdc ctermfg=black ctermbg=cyan
hi statusline guifg=black guibg=#8fbfdc ctermfg=black ctermbg=cyan
" Status line
" default: set statusline=%f\ %h%w%m%r\ %=%(%l,%c%V\ %=\ %P%)
" Status Line Custom
let g:currentmode={
\ 'n' : 'Normal',
\ 'no' : 'Normal·Operator Pending',
\ 'v' : 'Visual',
\ 'V' : 'V·Line',
\ '^V' : 'V·Block',
\ 's' : 'Select',
\ 'S' : 'S·Line',
\ '^S' : 'S·Block',
\ 'i' : 'Insert',
\ 'R' : 'Replace',
\ 'Rv' : 'V·Replace',
\ 'c' : 'Command',
\ 'cv' : 'Vim Ex',
\ 'ce' : 'Ex',
\ 'r' : 'Prompt',
\ 'rm' : 'More',
\ 'r?' : 'Confirm',
\ '!' : 'Shell',
\ 't' : 'Terminal'
\}
set laststatus=2
set noshowmode
set statusline=
set statusline+=%0*\ %n\ " Buffer number
set statusline+=%1*\ %<%F%m%r%h%w\ " File path, modified, readonly, helpfile, preview
set statusline+=%3*│ " Separator
set statusline+=%2*\ %Y\ " FileType
set statusline+=%3*│ " Separator
set statusline+=%2*\ %{''.(&fenc!=''?&fenc:&enc).''} " Encoding
set statusline+=\ (%{&ff}) " FileFormat (dos/unix..)
set statusline+=%= " Right Side
set statusline+=%2*\ col:\ %02v\ " Colomn number
set statusline+=%3*│ " Separator
set statusline+=%1*\ ln:\ %02l/%L\ (%3p%%)\ " Line number / total lines, percentage of document
set statusline+=%0*\ %{toupper(g:currentmode[mode()])}\ " The current mode
hi User1 ctermfg=007 ctermbg=239 guibg=#4e4e4e guifg=#adadad
hi User2 ctermfg=007 ctermbg=236 guibg=#303030 guifg=#adadad
hi User3 ctermfg=236 ctermbg=236 guibg=#303030 guifg=#303030
hi User4 ctermfg=239 ctermbg=239 guibg=#4e4e4e guifg=#4e4e4e
- 배경 투명도 설정
" transparent bg
autocmd vimenter * hi Normal guibg=NONE ctermbg=NONE
" For Vim<8, replace EndOfBuffer by NonText
autocmd vimenter * hi EndOfBuffer guibg=NONE ctermbg=NONE
.vimrc
파일 자체에 대한 설명은 추후 작성하도록 하겠다.
오늘은 일단 위의 네 가지 내용을 .vimrc
에 붙여넣고 저장하자. 참고로 내가 사용 중인 세팅을 복사해왔다.
여기까지 하면 일단 모든 세팅은 끝난다.
하지만 이 상태에서 코딩을 하다보면 불그죽죽한 syntax highlighting이 마음에 들지 않을 수 있다.
예쁜 syntax highlighting을 위해 아래 내용에서 테마를 설정해보자.
Syntax highlighting theme 설정
먼저 테마를 다운받아야 한다.
참고로 내가 사용 중인 테마는 jellybeans이다. 파스텔 톤이 예쁜 테마이다.
꼭 이 테마를 받을 필요는 없고 각자 구글링해서 원하는 테마를 찾아보자.
이 파일을 다운 받고 다운 받은 위치를 잘 기억하자.
이제 터미널을 열고 ls -a
로 .vim
폴더가 있는지 확인하자.
없다면 mkdir ~/.vim
으로 폴더를 생성하자.
그 다음 .vim
폴더 안에 colors
폴더를 만들어야한다.
터미널을 열고 아래 스크립트를 입력하자.
목표는 ~/.vim/colors
안에 jellybeans.vim
을 넣는 것이다.
cd .vim
mkdir colors
cd colors
mv [jellybeans.vim을 다운받았던 경로]/jellybeans.vim .
그 다음엔 vi ~/.vimrc
으로 파일을 열어 적당한 곳에 아래 라인을 추가하자. (맨 밑에 넣는게 속 편하다.)
colorscheme jellybeans
이제 다시 vi로 코드를 편집할 때 예쁜 테마를 만날 수 있을 것이다.
이렇게 맥에서 개발환경을 꾸미는 기본적인 과정들을 살펴보았다.
이를 바탕으로 자신의 취향에 따라 설정을 이것저것 바꿔서 나만의 개발 환경을 만들어보자.
'코딩 환경 > Terminal' 카테고리의 다른 글
[Terminal] fzf 설치 및 사용 방법 (0) | 2023.02.25 |
---|---|
[tmux] SSH 세션에서 Broken pipe 해결을 위한 tmux 간단 사용법 (0) | 2023.02.21 |
[Terminal] Powerlevel10k 설치 및 다시 설정하기 / Install powerlevel10k (3) | 2023.02.18 |
[zsh] zsh 플러그인 zsh-autosuggestions, zsh-syntax-highlighting 설치 (2) | 2023.02.18 |
[zsh] zsh 쉘 변경 및 Oh-My-Zsh 설치 / Change zsh shell and install Oh-My-Zsh (0) | 2023.02.18 |