Initial commit: tmux, kitty, nvim, fish configs managed by GNU Stow

This commit is contained in:
kappa
2025-09-22 18:41:53 +09:00
commit f8564fbf20
63 changed files with 6630 additions and 0 deletions

106
tmux/.tmux.conf Normal file
View File

@@ -0,0 +1,106 @@
# 기본 설정 - kitty 최적화
set -g default-terminal "xterm-kitty"
set -g terminal-overrides "xterm-kitty:Tc"
set -g history-limit 10000
# kitty 키보드 프로토콜 지원
set -s extended-keys on
set -as terminal-features 'xterm-kitty:extkeys'
# 마우스 지원 활성화
set -g mouse on
# Prefix 키를 Ctrl+a로 변경 (더 편한 위치)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 설정 파일 다시 로드
bind r source-file ~/.tmux.conf \; display-message "설정을 다시 로드했습니다!"
# 창 분할을 더 직관적으로
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# 패널 이동을 Vim 스타일로
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Alt + 화살표로 패널 이동
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# 패널 크기 조절
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# 창 이동
bind -n S-Left previous-window
bind -n S-Right next-window
# 창 번호 1번부터 시작
set -g base-index 1
setw -g pane-base-index 1
# 창 이름 자동 변경 비활성화
set-option -g allow-rename off
# Dracula 테마 상태바 설정
set -g status-position bottom
set -g status-style 'bg=#282a36 fg=#f8f8f2'
set -g status-left '#[fg=#282a36,bg=#bd93f9,bold] #S #[fg=#bd93f9,bg=#282a36] '
set -g status-right '#[fg=#50fa7b,bg=#282a36] %Y-%m-%d #[fg=#8be9fd,bg=#282a36] %H:%M #[fg=#282a36,bg=#ff79c6,bold] #h '
set -g status-right-length 50
set -g status-left-length 20
# 현재 창 스타일 (Dracula)
setw -g window-status-current-style 'fg=#282a36 bg=#f8f8f2 bold'
setw -g window-status-current-format ' #I:#W#F '
# 일반 창 스타일 (Dracula)
setw -g window-status-style 'fg=#6272a4 bg=#282a36'
setw -g window-status-format ' #I:#W#F '
# 메시지 스타일 (Dracula)
set -g message-style 'fg=#282a36 bg=#ffb86c bold'
# 복사 모드를 vi 스타일로
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# 패널 경계선 (Dracula)
set -g pane-border-style 'fg=#6272a4 bg=#282a36'
set -g pane-active-border-style 'fg=#bd93f9 bg=#282a36'
# Neovim 통합 설정
# Smart pane switching with awareness of Vim splits
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L'
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D'
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R'
# tmux-navigator 호환성
bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
bind-key -T copy-mode-vi 'C-\' select-pane -l
# Neovim 서버와 클립보드 동기화
if-shell 'command -v pbcopy' {
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'pbcopy'
}
# Fish shell이 기본 셸인 경우
set -g default-shell /opt/homebrew/bin/fish