์ด ๊ธ(๊ทธ๋ฆฌ๊ณ ํ์์์ด ๋ ๊ธ๋ค)์, ๋ด ๊ฐ๋ฐํ๊ฒฝ์์ ์์ฃผ ์ฌ์ฉํ๊ณ ์๊ณ ์ค์ ๋ก๋ ์ ์ ํ๊ณ ์๋ ๋๊ตฌ์ ๋ํด์ ์๊ฐํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ๋ด๊ฐ ์ด๋ค ํ๊ฒฝ์์ ๊ฐ๋ฐํ๊ณ ์๋์ง ๊ถ๊ธํ ๋ถ๋ค์ ๋ด dotfiles ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํด๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๋จผ์ , dotfiles๋ ๋ฌด์์ธ๊ฐ?
dotfiles๋ผ๋ ์ด๋ฆ ์์ฒด๋ง ๋ณด๋ฉด ๋ญ๊ฐ ๋๋จํด๋ณด์ผ ๊ฒ ๊ฐ์ง๋ง, dotfiles๋ผ๋ ์ด๋ฆ ์์ฒด๋ ๊ทธ๋ฅ ๋จ์ํ๋ค.
- ์ด๋๊ฐ์ ๊ฐ์ด๋๋ผ์ธ์์ ์ง์ํ๋๋๋ก ๊ฐ๋ฐํ๊ฒฝ์ ์ธํ
ํ๋ค๋ณด๋ฉด,
.zshrc
/.bashrc
๊ฐ์ ๊ฒ๋ค์ ๋ง์ฃผํ๊ฒ ๋ ๊ฒ์ด๋ค.
- git์ ์ฌ์ฉํ๊ณ ์๋ ์ฌ๋์ด๋ผ๋ฉด, ์ด๋ค diff ๋๊ตฌ(delta, difft)๋ฅผ ์ฌ์ฉํ ์ง, ์ด๋ค alias ๋ช
๋ น์ด๋ฅผ ๋ฑ๋กํ ์ง ๊ฐ์ ๊ฒ๋ค์ ๋ช
์ํ๊ธฐ ์ํด์
.gitconfig
๊ฐ์ ํ์ผ์ ์์ ํ๊ฒ ๋ ๋๊ฐ ์๋ค.
- ๋ฌผ๋ก , ์ด๋ฐ๊ฒ๋ณด๋ค๋
git config pull.rebase true
๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง์ ์ ์๋ค. ํ์ง๋ง, ์ด๋ฐ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด .gitconfig์๋ ๊ทธ๋๋ก ๊ธฐ๋ก์ด ๋๋ค.
์์์ ์ธ๊ธํ ์์๋ฅผ ๋ณด๋ฉด ์ ์ ์๊ฒ ๋ฏ์ด, ์์ dot(.)์ด ๋ถ์ด์๋ ์ค์ ํ์ผ์ด๋ผ๋ฉด dotfiles๋ผ๊ณ ํ ์ ์๊ฒ ๋ค. dotfiles ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ๊ด๋ฆฌ๋ฅผ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ? ๊ทธ๊ฒ์ ๋ฐ๋ก ์ด๋ค ํ๊ฒฝ์์๋ .zshrc/.gitignore ํ์ผ ๊ฐ์ ๊ฒ๋ค์ ๋์ผํ๊ฒ ์ฌ์ฉํ์ฌ ์์
์ ํ๋ฆ์ ์จ์ ํ ์ ์งํ ์ ์๋ค๋ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. dotfiles๋ฅผ git๊ณผ ๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ๋ก ๊ด๋ฆฌํ ์ ์๊ณ , github ๊ฐ์ ์ ์ฅ์์ ์ฌ๋ ค๋์ ์ ์๋ค๋ฉด.... ์ด๋ค ๊ฐ๋ฐํ๊ฒฝ์ผ๋ก ๊ฐ์ํ๋๋ผ๋ github์์ ๋ฐ๋ก ๋ด๋ ค๋ฐ๊ณ , ๊ฐ ์ค์ ํ์ผ๋ค์ ์ฎ๊ธฐ๋ฉด ๊ทธ๋ง์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐํ๊ฒฝ ์ค์ ํ๋๋ฐ ๋๋ ์๊ฐ์ ๋น์ฉ์ ๊ต์ฅํ ์๋ ์ ์๋ค.
dotfiles๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๋ค์ ์ฌ๋ฌ๊ฐ์ง ์๊ฒ ์ง๋ง(symbolic link๋ฅผ ์ด์ฉํ๋ค๋๊ฐ ๋ฑ๋ฑ), ๊ฐ์ธ์ ์ผ๋ก๋ chezmoi๋ฅผ ๊ถ์ฅํ๋ ๋ฐ์ด๋ค. chezmoi๋ dotfiles๋ค์ ๋ฒ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํธ์์ฑ์ ์ ๊ณตํด์ฃผ๋ CLI ๋๊ตฌ์ด๋ค.
- ๋๋ chezmoi๋ฅผ ์์ฒญ ์ ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ด dotfiles๋ฅผ ์ค์ ๋ก ์ฌ์ฉํด๋ณด๊ณ ์ถ๋ค๋ฉด,
chezmoi init https://github.com/malkoG/dotfiles.git
๋ช
๋ น์ ์คํํด๋ณด๋ฉด ๋๋ค.
๋ค์, ๋ณธ๋ก ์ผ๋ก Wezterm์ ๋ํด์ ์์๋ณด์.
Wezterm์ Konsole/iTerm2/Gnome Terminal/Alacritty๊ณผ ๊ฐ์ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์ด๋ฉฐ, Rust ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ์ด ๋์ด ์๊ณ , GPU ๊ฐ์์ ์ง์ํ๋ค. ๋ฐ๋ผ์, ๋ ๋๋ง ์์ฒด๋ ์ด๋ ์ ๋๋ ๋น ๋ฅธ ํธ์ด๋ค.
์ฃผ๋ณ ์ฌ๋๋ค์๊ฒ ํ๋ฒ ์จ๋ณด๋๋ก ๊ถ์ฅํ๋ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ธ ๊ฐ์ง ์ ๋ ์๋๋ฐ, Alacritty/Kitty ๊ทธ๋ฆฌ๊ณ ์ด ๊ธ์์ ์๊ฐํ๋ Wezterm ์ ๋ ๋๋ค. ์์ฆ์ Zig ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง Ghostty๋ ์ถ์ฒํ ๋ง ํ ๊ฒ ๊ฐ๋ค. ํ์ง๋ง, ์ด ๊ธ์์๋ Wezterm์ ์๊ฐํ๊ธฐ๋ก ํ๊ธฐ ๋๋ฌธ์, Wezterm ์ค์ฌ์ผ๋ก ์๊ฐํ๋๋ก ํ๊ฒ ๋ค.
Wezterm์ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๋ค.
- Linux, MacOS, ์๋์ฐ์ฆ, FreeBSD ๋ค์ํ ํ๊ฒฝ์์ ๋์๊ฐ๋ค.
- ํ ์๋์ฐ๋ฅผ ์ฌ๋ฌ๊ฐ์ pane์ผ๋ก ์ชผ๊ฐ์ ๋ถํ ํ์ฌ ๋ฉํฐํ๋ ์ฑ์ ์ง์ํ๋ค.(๋ฌผ๋ก , ๋๋ ZelliJ/Tmux๋ฅผ ์ฐ๊ธฐ๋๋ฌธ์ ์ ์ด์ฉํ์ง๋ ์๋ ๊ธฐ๋ฅ์ด๋ค.
- ๋ง์ฐ์ค ์ง์์ด ์ ๋๋ค
- ํฐ๋ฏธ๋์ ํ์๋๋ ๊ธ์๋ฅผ ์บก์ณํด์ ํ์ดํผ๋งํฌ๋ก ์นํ์ด ๊ฐ๋ฅํ๋ค.
- ์ด๊ฑด ๋๋ ์ ์ด์ฉํ์ง๋ ์๋ ๊ธฐ๋ฅ์ด์ง๋ง.. T0010 ๊ฐ์ ์ฝ๋๊ฐ ํ๋ฉด ์์ ๋ณด์ฌ์ง๋ค๋ฉด, ํน์ ๋ฆฐํฐ ํ์ด์ง์ ์ค๋ช
ํ๋ฉด์ผ๋ก ์ด๋ํ๋ ๋งํฌ๋ฅผ ์ฌ์ ์ ์๋ค. kiyoon๋์ dotfiles ์ฐธ๊ณ
- lua๋ก ์คํฌ๋ฆฝํ
์ด ๊ฐ๋ฅํ๋ฐ, ํ์ฉํ ์ ์๋ ๋ฐฉํฅ์ด ๊ต์ฅํ ๋ค์ํ๋ค.
- ์ฌ๊ธฐ์์ ์ค๋ช
ํ ๊ธฐ๋ฅ๋ค์ ์ต๋ํ ํ์ฉํ์ฌ ์คํฌ๋ฆฝํ
์ด ๊ฐ๋ฅํ๋ค.
- API ๋ฌธ์๋ฅผ ์ฅ ํ์ด๋ณด์์๋, "์ด? ์ค๋ง ์ด๊ฒ ๋๋?" ์ถ์ ์๊ฐ์ด ๋ ๋ค๋ฉด, ์ฌ๋ฌ๋ถ์ด ์๊ฐํ๋ ๊ฒ๋ ์๋ง ๊ฐ๋ฅํ ์ง๋ ๋ชจ๋ฅธ๋ค.
Wezterm, ์จ๋ณด์.
Wezterm์ ์ค์นํ๋ค๋ฉด ์ค์น ์๋ด ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด์ ์ค์นํ๋ฉด ๋๋๋ฐ, ์ฌ๋ฌ๋ถ์ด Wezterm์ ์ค์นํ๋ค๋ฉด ๋น์ฅ์ ๊ฒ์ ํ๋ฉด๋ง ๋ฐ์ง๋ ๋ชจ๋ฅธ๋ค.
Wezterm์ ์ค์นํ๊ณ ๋์, .config/wezterm/wezterm.lua
ํ์ผ์ ์์ ํด์ผ ํ๋๋ฐ, ๋น์ฅ์ ์๋์ฒ๋ผ ๋น์ด์์ ๊ฒ์ด๋ค. ํ์ผ์ด ์๋ค๋ฉด ๋ง๋ค์ด๋๋ ๊ฒ์ด ์ข๋ค.
return {}
์์ ์ฝ๋์์ {}
๋ lua์์๋ ํ
์ด๋ธ(๋ค๋ฅธ ์ธ์ด๋ก ์น๋ฉด, ๋์
๋๋ฆฌ/์ค๋ธ์ ํธ ๊ฐ์ ๊ฒ)์ด์ง๋ง, wezterm ํฐ๋ฏธ๋์ configuration์ ๋ํ๋ด๋ ํ
์ด๋ธ์ด๋ค. ์ฌ๊ธฐ์ ๋ช๊ฐ์ง ์ถ๊ฐ์ฌํญ์ ๋ฃ์ด๋ณด๊ฒ ๋ค.
ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ค์นํ๋๋ฐ, ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ค์นํ์ผ๋ฉด ๊ฐ์ฅ ์ฒ์๋ถํฐ ํ๋๊ฒ ๋ฌด์์ด๊ฒ ๋๊ฐ? ๋ฐ๋ก, ํฐํธ๋ฅผ ์ธํ
ํ๋ ๊ฒ์ด๋ค. ํฐ๋ฏธ๋ ํ๊ฒฝ์์ ์์
ํ ๋ ํฐํธ๋งํผ ์ค์ํ๊ฒ ๋ ์๋ค.
local wezterm = require("wezterm")
return {
font = wezterm.font_with_fallback({'Cascadia Code NF', 'NanumBarunGothic'}),
font_size = 12.0,
line_height = 1.2,
}
ํฐํธ๋ฅผ ๊ฐ์ ธ๋ค ์ธ๋๋ ์์ ์์์ ๊ฐ์ด font_with_fallback
ํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ ธ๋ค ์ธ ์ ์๊ณ , ๊ทธ ์ธ์๋ ํฐํธ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๊ฑฐ๋ ํ๊ฐ์ ์ง์ ํ ์๋ ์๋ค. ๊ณต์ํ์ด์ง์์ ๋ณด์๋ฏ์ด, ์ฌ๋ฌ๋ถ์ ์ทจํฅ์ ๋ฐ๋ผ ๋ฐฐ๊ฒฝ์ ํน์ ๋ฐฐ๊ฒฝ์ด๋ฏธ์ง๋ ์ง์ ํ ์ ์๋๋ฐ ์ฌ๋ฌ๋ถ ๋๋ฆ๋๋ก์ ๊ธฐ์ค์ด ์๊ณ ์์ฌ์ด ๋๋ค๋ฉด ํ๋ฒ ๋์ ํด๋ณด๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ ๊ฐ๋ค.
์์ ์ฝ๋๋ฅผ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ณ ํธ์งํ๋ค๋ณด๋ฉด ๋๋ ์ ์๊ฒ ์ง๋ง, wezterm์ ์ค์ ํ์ผ์ ํธ์งํ ๋ Hot Reloading์ ์ง์ํ๋ค. ์ด ๋ํ, ๋ด๊ฐ ๊ฐ์ฅ ์ ์ ํ๋ ๊ธฐ๋ฅ ์ค ํ๋์ด๋ค. ํน์ฌ๋ wezterm ์ค์ ํ์ผ์ ์์ ํ์๋, ๋ฌธ๋ฒ์ ์ค๋ฅ๊ฐ ์๊ฑฐ๋ ์ค์ ๊ฐ์ ์๋ชป ์ง์ ํ์ ๋, ์ ์ฐฝ์ผ๋ก ์ด๋ค ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ์๋์ง ์น์ ํ๊ฒ Alert๋ ๋์์ค๋ค.
API ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด๊ธฐ๋ง ํด๋ ์คํฌ๋ฆฝํ
์ผ๋ก ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด์ผ ๋น์ฐํ ๋ง๊ธด ํ๊ฒ ์ง๋ง, ์ฒ์ ์ ํ๋ ์
์ฅ์์๋ ์ด๋ป๊ฒ ์ปค์คํฐ๋ง์ด์งํ ์ง ํ์
ํ๊ธฐ ๋ํดํ ์ ์๋ค.
์๋์์๋ ๋ด๊ฐ ์ด๋ป๊ฒ Wezterm์ ์ปค์คํฐ๋ง์ด์ง์ ํ๊ณ ์๋์ง ์์๋ฅผ ๋์ดํ๋ ๊ฒ์ผ๋ก ๊ธ์ ๋๋ด๊ฒ ๋ค. Wezterm, ๋ฏฟ๊ณ ์จ๋ณด์๋ผ.
๋ด๊ฐ Wezterm์ ์์ฉํ๋ ๋ฐฉ๋ฒ
1. ๋ฐํฌ๋ช
๋ ์กฐ์ ํ๊ธฐ
Wezterm์์ ํฐ๋ฏธ๋ ์์์ ์ค์ ํ ๋, ๋ฐฐ๊ฒฝ์์์ ๋ฐํฌ๋ช
๋๋ฅผ ์ง์ ํ ์ ์๋ ์ต์
์ด ์๋ค. ๋๋ ์ฌ๊ธฐ์ ๋จ์ถํค๋ฅผ ์
๋ ฅํ์๋ ๋ฐํฌ๋ช
๋๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๊ณ ์ถ์๋ค.
๋ฐํฌ๋ช
๋๋ฅผ ์์๋ก ๋ ์๋ ์์ง๋ง, ๋ชจ๋ํฐ ํ๋ ์ง๋ฆฌ์ ํ๊ฒฝ์์ ์์
ํ๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ค์ชฝ์ ๋๊ณ ํฐ๋ฏธ๋ ์ฑ์ ์์ ๋๋ ์์ผ๋ก ์์
์ ๋ง์ด ํ๊ฒ ๋๋ค. HMR(Hot Module Reloading)์ด ๋๋ ๊ฐ๋ฐํ๊ฒฝ์ด๋ผ๋ฉด, ์์ค์ฝ๋๋ฅผ ํธ์งํ๊ณ ํ๋ฉด์ ์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์์ด ๋๋๊ฑธ ๊ธฐ๋ํ ํ
๋ฐ ์ด๊ฑธ ํญ ์ค์์นญํ๋ฉด์ ํ์ธํ๊ธฐ๋ ๊ต์ฅํ ๋ฒ๊ฑฐ๋กญ๋ค. ์จ์ ํ ์์
์ ์ ์งํ๋ค๊ฐ ์ ๊น ํ์ธํ๊ณ ์ถ์๋ ๋ฐํฌ๋ช
๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋๋๋ฐ๋ ๋ง์ด๋ค.
Wezterm์์๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ํ ์ ์๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ํน์ ์ด๋ฒคํธ๋ฅผ ์์ ํ์๋ ์ด๋ค ๋์์ ํ ๊ฒ์ธ์ง๋ฅผ ์ ์ํ ์ ์๋ค. Wezterm ํฐ๋ฏธ๋ ์ต์
์ ์์ ํ๋๊ฒ๋ ์ฌ๊ธฐ์ ํฌํจ๋ ์ ์๋ค. ํน์ ๋จ์ถํค๋ฅผ ์
๋ ฅํ๋ฉด, ์ด๋ค ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํฌ ์ ์๊ณ , ๊ทธ ์ด๋ฒคํธ๋ก ์ธํด์ ํ๋ฉด์ ๋ฐํฌ๋ช
๋๋ฅผ ์กฐ์ ํ ์ ์๊ฒ ํ๋ค.
local default_opacity = 0.9
local keymaps = {}
-- SHIFT + CTRL + Z ํค๋ฅผ ๋๋ฅด๋ฉด ๋ฐํฌ๋ช
๋๋ฅผ ๊ฐ์์ํค๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
table.insert(
keymaps,
{
key = "Z",
mods = 'SHIFT|CTRL',
action = wezterm.action.EmitEvent 'decrease-opacity',
}
)
-- SHIFT + CTRL + X ํค๋ฅผ ๋๋ฅด๋ฉด ๋ฐํฌ๋ช
๋๋ฅผ ์ฆ๊ฐ์ํค๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
table.insert(
keymaps,
{
key = 'X',
mods = 'SHIFT|CTRL',
action = wezterm.action.EmitEvent 'increase-opacity',
}
)
-- "increase-opacity" ์ด๋ฒคํธ๋ฅผ ์์ ํ์๋, ๋ฐํฌ๋ช
๋๋ฅผ ์ฆ๊ฐ์ํค๋ ๋์์ ํ๋๋ก ์ ์ํ๋ค.
wezterm.on('increase-opacity', function(window, pane)
local overrides = window:get_config_overrides() or {}
local opacity = overrides.window_background_opacity
if opacity == nil then
opacity = default_opacity
end
opacity = opacity + 0.1
if opacity > 1.0 then
opacity = 1.0
end
overrides.window_background_opacity = opacity
window:set_config_overrides(overrides)
end)
-- "increase-opacity" ์ด๋ฒคํธ๋ฅผ ์์ ํ์๋, ๋ฐํฌ๋ช
๋๋ฅผ ์ฆ๊ฐ์ํค๋ ๋์์ ํ๋๋ก ์ ์ํ๋ค.
wezterm.on('decrease-opacity', function(window, pane)
local overrides = window:get_config_overrides() or {}
local opacity = overrides.window_background_opacity
if opacity == nil then
opacity = default_opacity
end
opacity = opacity - 0.1
if opacity < 0.3 then
opacity = 0.3
end
overrides.window_background_opacity = opacity
window:set_config_overrides(overrides)
end)
return {
keys = keymaps
}
2. ํญ ์ด๋ฆ ๋ณ๊ฒฝํ๊ธฐ
๋๋ถ๋ถ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ์์ ํญ ์ด๋ฆ์ ํ์ํ ๋, ํ์ฌ ํญ์์ ๋๊ณ ์๋ ํ๋ก์ธ์ค์ ์ด๋ฆ์ ๋ช
์ํ ๋๊ฐ ๋ง๋ค. ๊ทธ๋ฐ๋ฐ, ํญ์ ๋ช
์๋์ด ์๋ ํ์ดํ๋ง ๊ฐ์ง๊ณ ๋ ๊ฐ๊ฐ์ ํญ์ด ์ด๋ค ์ญํ ์ ํ๋ ๊ฒ์ธ์ง ํ์
ํ๊ธฐ ์ด๋ ต๋ค. ์ด๋ ์ชฝ์ด ์๋ฒ๋ฅผ ๋์ฐ๊ณ ์๋๊ฑด์ง, ์ด๋ ์ชฝ์ด ์๋ํฐ ํธ์ง ํ๋ฉด์ธ์ง, ์ด๋ ์ชฝ์ด LLM Agent๋ฅผ ๋๋ฆฌ๊ณ ์๋์ง ๋ํดํ๋ค.
ํ์ง๋ง, ์๋์ฒ๋ผ wezterm.action.PromptInputLine
API๋ฅผ ์ฌ์ฉํด์ ํ๋กฌํํธ ์
๋ ฅ์ ๋ฐ์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก, ํ์ฌ ํ์ฑํ๋ ํญ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ์์ผ๋ก ์ธ์ง๋ถํ๋ฅผ ์ค์ผ ์ ์๋ค.
local wezterm = require('wezterm')
local keymaps = {}
table.insert(
keymaps,
{
key = '`',
mods = 'CTRL',
action = wezterm.action.PromptInputLine {
description = "Enter new name for tab",
action = wezterm.action_callback(function(window, _, line)
if line then
window:active_tab():set_title(line)
end
end)
}
}
)
return {
keys = keymaps
}
3. BEEP์ ๋์ ํ๋ฉด์ด ๋ฒ์ฉ์ด๊ฒ ํ๊ธฐ
Aider๋ Claude Code ๊ฐ์ LLM ์์ด์ ํธ๊ฐ ์์
์ ์ํ ํ ์์ ์์
์ด ๋๋ฌ๊ฑฐ๋, ํน์ ์์
์ ๋ํ ์น์ธ์ ์๊ตฌํ ๋๊ฐ ๊ฐํน ์๋ค. LLM ์์ด์ ํธ๊ฐ ์์
์ ์ํํ๋๊ฑธ ๊ฐ๋งํ ๋ณด๊ณ ๋ง ์์ ์ ์์ ๊ฒ์ด๋ค.
Claude Code/Aider๋ ๋คํํ๋ ์๋ต์ ํ๊ณ ๋์ ์ถ๊ฐ์ ์ธ ๋ช
๋ น์ ์คํํ ์ ์๋ ์ต์
์ ์ ๊ณตํด์ฃผ๋๋ฐ, ๊ฑฐ๊ธฐ์ ๊ฐ๋จํ๊ฒ echo -ne '\007'
๋ช
๋ น์ด๋ฅผ ๋๊ฒจ์ค ์ ์๋ค. ์ด ๋ช
๋ น์ด๋ ์์ฒญ ์ด๋ ต์ง๋ ์๋ค. ํฐ๋ฏธ๋ ์ฑ์ ๋ด์ฅ๋ ์์คํ
๋ฒจ ์๋ฆฌ๋ฅผ ์ฌ์ํ๋ ๋ช
๋ น์ด๋ค.
์์
ํ๊ฒฝ์ด ์ด๋๋์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๊ฒ ์ง๋ง, ์์
์๋ฃ ์ฌ๋ถ๋ฅผ ์์ฑ์ผ๋ก ๋ฐ๊ธฐ์๋ ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฝ์ด ์์ ์ ์๋ค. ์์ ์๋ฆผ ์ผํฐ๋ฅผ ์ด์ฉํ๋ค๊ณ ์น์. ์
๋ฌด ์๊ฐ๋์ ๋ฐฉํด๊ธ์ง ๋ชจ๋๋ฅผ ์ค์ ํ๋ค๋ฉด ์๋ฆผ์ด ์ธ๋ฆฌ๊ฒ ์ค์ ์ด ํ๋๋ผ๋ ์์คํ
์ ์ฝ์ ๋ฌปํ ๊ฐ๋ฅ์ฑ๋ ์๋ค.
visual_bell
์ต์
์ ํ์ฉํ๋ฉด, ํฐ๋ฏธ๋์ ๋ด์ฅ๋ ์์คํ
๋ฒจ ์๋ฆฌ๋ฅผ ์ธ๋ฆฌ๋ ๋์ ํ๋ฉด์ด ๋ฐ์ง์ด๊ฒ ํด์ ๋ค๋ฅธ ์์ด์ ํธ๊ฐ ์๋ต์ ์๋ฃํ๋ค๊ณ ๋ช
์์ ์ผ๋ก ์๋ฆผ์ ๋ฐ์ ์ ์๋ค. LLM ์์ด์ ํธ๊ฐ ํ๋ ์ผ์ ์ผ์ผ์ด ๋ชจ๋ํฐ๋งํ์ง ์๋๋ผ๋, ๋ค๋ฅธ ์์
์ ์ํํ๋ ์ค์ ํ๋ฉด์ด ๋ฐ์ง์ด๋ฉด ๊ทธ๋ ํ์ธํ๊ธฐ๋ง ํ๋ฉด ๊ทธ๋ง์ด๋ค.
return {
colors = {
visual_bell = '#003355',
},
visual_bell = {
fade_in_duration_ms = 75,
fade_out_duration_ms = 75,
target = 'BackgroundColor', -- ๋๋ 'CursorColor'
}
}