Update all configs: migrate nvim to LazyVim, refresh fish/kitty/tmux

- nvim: AstroNvim → LazyVim with Dracula theme, add python/yaml/docker/json/markdown extras
- kitty: restructure to .config/kitty/, add catppuccin-mocha theme
- fish: add lazy-loading for credentials, gitea config, chrome-debug function
- tmux: update config
- Move dotfiles repo from ~/Projects/config/dotfiles to ~/dotfiles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-02-09 09:34:08 +09:00
parent 386bae48d9
commit 99ad121620
37 changed files with 891 additions and 893 deletions

View File

@@ -0,0 +1,150 @@
# fish completion for wrangler -*- shell-script -*-
# Define shell completion directives
set -l ShellCompDirectiveError 1
set -l ShellCompDirectiveNoSpace 2
set -l ShellCompDirectiveNoFileComp 4
set -l ShellCompDirectiveFilterFileExt 8
set -l ShellCompDirectiveFilterDirs 16
set -l ShellCompDirectiveKeepOrder 32
function __wrangler_debug
set -l file "$BASH_COMP_DEBUG_FILE"
if test -n "$file"
echo "$argv" >> $file
end
end
function __wrangler_perform_completion
__wrangler_debug "Starting __wrangler_perform_completion"
# Extract all args except the completion flag
set -l args (string match -v -- "--completion=" (commandline -opc))
# Extract the current token being completed
set -l current_token (commandline -ct)
# Check if current token starts with a dash
set -l flag_prefix ""
if string match -q -- "-*" $current_token
set flag_prefix "--flag="
end
__wrangler_debug "Current token: $current_token"
__wrangler_debug "All args: $args"
# Call the completion program and get the results
set -l requestComp "wrangler complete -- $args"
__wrangler_debug "Calling $requestComp"
set -l results (eval $requestComp 2> /dev/null)
# Some programs may output extra empty lines after the directive.
# Let's ignore them or else it will break completion.
# Ref: https://github.com/spf13/cobra/issues/1279
for line in $results[-1..1]
if test (string sub -s 1 -l 1 -- $line) = ":"
# The directive
set -l directive (string sub -s 2 -- $line)
set -l directive_num (math $directive)
break
end
end
# No directive specified, use default
if not set -q directive_num
set directive_num 0
end
__wrangler_debug "Directive: $directive_num"
# Process completions based on directive
if test $directive_num -eq $ShellCompDirectiveError
# Error code. No completion.
__wrangler_debug "Received error directive: aborting."
return 1
end
# Filter out the directive (last line)
if test (count $results) -gt 0 -a (string sub -s 1 -l 1 -- $results[-1]) = ":"
set results $results[1..-2]
end
# No completions, let fish handle file completions unless forbidden
if test (count $results) -eq 0
if test $directive_num -ne $ShellCompDirectiveNoFileComp
__wrangler_debug "No completions, performing file completion"
return 1
end
__wrangler_debug "No completions, but file completion forbidden"
return 0
end
# Filter file extensions
if test $directive_num -eq $ShellCompDirectiveFilterFileExt
__wrangler_debug "File extension filtering"
set -l file_extensions
for item in $results
if test -n "$item" -a (string sub -s 1 -l 1 -- $item) != "-"
set -a file_extensions "*$item"
end
end
__wrangler_debug "File extensions: $file_extensions"
# Use the file extensions as completions
set -l completions
for ext in $file_extensions
# Get all files matching the extension
set -a completions (string replace -r '^.*/' '' -- $ext)
end
for item in $completions
echo -e "$item "
end
return 0
end
# Filter directories
if test $directive_num -eq $ShellCompDirectiveFilterDirs
__wrangler_debug "Directory filtering"
set -l dirs
for item in $results
if test -d "$item"
set -a dirs "$item/"
end
end
for item in $dirs
echo -e "$item "
end
return 0
end
# Process remaining completions
for item in $results
if test -n "$item"
# Check if the item has a description
if string match -q "* *" -- "$item"
set -l completion_parts (string split -- "$item")
set -l comp $completion_parts[1]
set -l desc $completion_parts[2]
# Add the completion and description
echo -e "$comp $desc"
else
# Add just the completion
echo -e "$item "
end
end
end
# If directive contains NoSpace, tell fish not to add a space after completion
if test (math "$directive_num & $ShellCompDirectiveNoSpace") -ne 0
return 2
end
return 0
end
# Set up the completion for the wrangler command
complete -c wrangler -f -a "(eval __wrangler_perform_completion)"

View File

@@ -0,0 +1,14 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# the 'fish_key_bindings' variable from its old default scope (universal)
# to its new default scope (global). We recommend you delete this file
# and configure key bindings in ~/.config/fish/config.fish if needed.
# set --global fish_key_bindings fish_default_key_bindings
# Prior to version 4.3, fish shipped an event handler that runs
# `set --universal fish_key_bindings fish_default_key_bindings`
# whenever the fish_key_bindings variable is erased.
# This means that as long as any fish < 4.3 is still running on this system,
# we cannot complete the migration.
# As a workaround, erase the universal variable at every shell startup.
set --erase --universal fish_key_bindings

View File

@@ -0,0 +1,37 @@
# This file was created by fish when upgrading to version 4.3, to migrate
# theme variables from universal to global scope.
# Don't edit this file, as it will be written by the web-config tool (`fish_config`).
# To customize your theme, delete this file and see
# help interactive#syntax-highlighting
# or
# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING
# for appropriate commands to add to ~/.config/fish/config.fish instead.
# See also the release notes for fish 4.3.0 (run `help relnotes`).
set --global fish_color_autosuggestion brblack
set --global fish_color_cancel -r
set --global fish_color_command normal
set --global fish_color_comment red
set --global fish_color_cwd green
set --global fish_color_cwd_root red
set --global fish_color_end green
set --global fish_color_error brred
set --global fish_color_escape brcyan
set --global fish_color_history_current --bold
set --global fish_color_host normal
set --global fish_color_host_remote yellow
set --global fish_color_normal normal
set --global fish_color_operator brcyan
set --global fish_color_param cyan
set --global fish_color_quote yellow
set --global fish_color_redirection cyan --bold
set --global fish_color_search_match white --background=brblack
set --global fish_color_selection white --bold --background=brblack
set --global fish_color_status red
set --global fish_color_user brgreen
set --global fish_color_valid_path --underline
set --global fish_pager_color_completion normal
set --global fish_pager_color_description yellow -i
set --global fish_pager_color_prefix normal --bold --underline
set --global fish_pager_color_progress brwhite --background=cyan
set --global fish_pager_color_selected_background -r

View File

@@ -1,13 +1,18 @@
# Fix fish_complete_path (중복 방지)
if not contains ~/.config/fish/completions $fish_complete_path
set -g fish_complete_path ~/.config/fish/completions $fish_complete_path
end
if status is-interactive
# Commands to run in interactive sessions can go here
# Set default Node.js version
nvm use lts --silent
nvm use 20 --silent
# Add uv to PATH
fish_add_path $HOME/.local/bin
# kitty integration 최적화
if test "$TERM" = xterm-kitty
# kitty shell integration 설정 (kssh 제외)
# kitty shell integration 설정
alias icat="kitty +kitten icat"
alias kdiff="kitty +kitten diff"
@@ -24,7 +29,7 @@ if status is-interactive
alias tml="tmux list-sessions"
alias tmk="tmux kill-session -t"
# kitten 유틸리티 alias들 (kssh 제외)
# kitten 유틸리티 alias들
alias clipboard="kitty +kitten clipboard"
alias img="kitty +kitten icat"
alias unicode="kitty +kitten unicode_input"
@@ -39,11 +44,26 @@ end
set -x VAULT_ADDR "https://vault.anvil.it.com"
set -x VAULT_TOKEN "hvs.o7JrzES15uuXRmvlKAJKEaTv"
# Cloudflare Configuration
set -x CF_API_KEY (vault kv get -field=api_key secret/cloudflare 2>/dev/null || echo "")
set -x CF_EMAIL (vault kv get -field=email secret/cloudflare 2>/dev/null || echo "")
# Gitea Configuration
set -gx GITEA_URL "https://gitea.anvil.it.com"
set -gx GITEA_TOKEN (security find-internet-password -s gitea.anvil.it.com -a kaffa -w 2>/dev/null)
# Cloudflare Configuration - Lazy Loading
function load_cloudflare_credentials
if not set -q CF_API_KEY
set -gx CF_API_KEY (vault kv get -field=api_key secret/cloudflare 2>/dev/null || echo "")
set -gx CF_EMAIL (vault kv get -field=email secret/cloudflare 2>/dev/null || echo "")
echo "✓ Cloudflare credentials loaded"
end
end
# Auto-load when using cf command
if command -v cf >/dev/null
alias cf='load_cloudflare_credentials && command cf'
end
alias vi=nvim
alias ssh=tssh
alias docker "limactl shell docker -- docker"
alias podman "limactl shell podman -- podman"
alias ss='netstat -an'
@@ -51,3 +71,28 @@ alias ss='netstat -an'
# Set default editor for Claude Code /memory command
set -Ux VISUAL nvim
set -Ux EDITOR nvim
# Added by Antigravity
fish_add_path /Users/kaffa/.antigravity/antigravity/bin
# ══════════════════════════════════════════════════════════════════
# Claude Code tmux 단축키
# ══════════════════════════════════════════════════════════════════
# Claude 세션 빠른 시작
alias tc='tmux-claude'
# 현재 디렉토리에서 Claude 세션
alias tcc='tmux-claude (pwd)'
# tmux 패널 내용 복사 (최근 1000줄)
function tcopy
tmux capture-pane -pS -1000 | pbcopy
echo "패널 내용 복사됨 (최근 1000줄)"
end
# Claude 응답 검색 (tmux 히스토리에서)
function csearch
tmux copy-mode
tmux send-keys "?" "$argv" Enter
end

View File

@@ -0,0 +1,53 @@
if status is-interactive
# Commands to run in interactive sessions can go here
# Set default Node.js version
nvm use lts --silent
# Add uv to PATH
fish_add_path $HOME/.local/bin
# kitty integration 최적화
if test "$TERM" = xterm-kitty
# kitty shell integration 설정 (kssh 제외)
alias icat="kitty +kitten icat"
alias kdiff="kitty +kitten diff"
# 빠른 디렉토리 이동 (kitty의 프롬프트 마킹 활용)
bind \cg 'history | fzf | read -l result; and commandline $result'
# 파일 미리보기
alias preview="fzf --preview 'if test -d {}; eza -la {}; else; bat --color=always {}; end'"
# tmux 유틸리티 함수들
alias tm="tmux"
alias tma="tmux attach-session -t"
alias tmn="tmux new-session -s"
alias tml="tmux list-sessions"
alias tmk="tmux kill-session -t"
# kitten 유틸리티 alias들 (kssh 제외)
alias clipboard="kitty +kitten clipboard"
alias img="kitty +kitten icat"
alias unicode="kitty +kitten unicode_input"
alias hgrep="kitty +kitten hyperlinked_grep"
# 이미지 갤러리 함수 (간단한 alias로 변경)
alias imgls="find . -maxdepth 1 -type f \( -name '*.png' -o -name '*.jpg' -o -name '*.jpeg' -o -name '*.gif' -o -name '*.webp' \) | head -5 | xargs -I {} kitty +kitten icat --align center {}"
end
end
# Vault Configuration
set -x VAULT_ADDR "https://vault.anvil.it.com"
set -x VAULT_TOKEN "hvs.o7JrzES15uuXRmvlKAJKEaTv"
# Cloudflare Configuration
set -x CF_API_KEY (vault kv get -field=api_key secret/cloudflare 2>/dev/null || echo "")
set -x CF_EMAIL (vault kv get -field=email secret/cloudflare 2>/dev/null || echo "")
alias vi=nvim
alias docker "limactl shell docker -- docker"
alias podman "limactl shell podman -- podman"
alias ss='netstat -an'
# Set default editor for Claude Code /memory command
set -Ux VISUAL nvim
set -Ux EDITOR nvim

View File

@@ -0,0 +1,30 @@
function chrome-debug --description "Launch Chrome with remote debugging port"
set -l port 9222
set -l profile_dir "$HOME/.chrome-debug-profile"
# Parse port argument
for arg in $argv
if string match -qr '^\d+$' $arg
set port $arg
end
end
# Create persistent debug profile directory
mkdir -p $profile_dir
# Kill existing Chrome
pkill -f "Google Chrome" 2>/dev/null
sleep 2
# Launch Chrome with persistent debug profile
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--remote-debugging-port=$port \
--user-data-dir=$profile_dir &
disown 2>/dev/null
sleep 3
echo "✓ Chrome (디버그 프로필) - port $port"
echo " 프로필: $profile_dir"
echo "→ agent-browser connect $port"
end

View File

@@ -1,315 +0,0 @@
# kitty 터미널 설정 파일
# 작성 일시: 2025-08-17
# ========================================
# 폰트 설정
# ========================================
# 기본 폰트 크기 (17pt로 설정 - 적당한 크기)
font_size 17.0
# 폰트 패밀리 (Fira Code Nerd Font)
font_family FiraCode Nerd Font Light
bold_font FiraCode Nerd Font Regular
italic_font FiraCode Nerd Font Light Italic
bold_italic_font FiraCode Nerd Font Italic
# Nerd Font 아이콘 최적화
narrow_symbols U+E0A0-U+E0A2,U+E0B0-U+E0B3
symbol_map U+23FB-U+23FE,U+2665,U+26A1,U+2B58,U+E000-U+E00A,U+E0A0-U+E0A3,U+E0B0-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+E200-U+E2A9,U+E300-U+E3E3,U+E5FA-U+E62F,U+E700-U+E7C5,U+F000-U+F2E0,U+F300-U+F31C,U+F400-U+F4A9,U+F500-U+F8FF,U+F0001-U+F1AF0 FiraCode Nerd Font
# 한글 폰트 최적화 설정
# 한글도 Fira Code로 통일 (영문과 일관성)
# symbol_map U+AC00-U+D7A3,U+1100-U+11FF,U+3130-U+318F,U+A960-U+A97F,U+D7B0-U+D7FF,U+302E-U+302F D2Coding
# 폰트 렌더링 최적화
text_composition_strategy platform
font_features FiraCode-Nerd-Font +liga +calt
# 글자 간격 및 라인 높이 최적화
adjust_line_height 110%
adjust_column_width 0
modify_font underline_position 2
modify_font underline_thickness 150%
# 안티앨리어싱 및 힌팅 최적화 (macOS)
macos_thicken_font 0
text_fg_override_threshold 0
disable_ligatures cursor
# ========================================
# 색상 및 테마 설정 - Dracula Theme
# ========================================
# Dracula 테마 적용
include dracula.conf
# # 이전 색상 테마 (어두운 배경에 밝은 글씨) - 백업용 주석
# background #1e1e1e
# foreground #d4d4d4
# cursor #ffffff
#
# # 선택 영역 색상
# selection_background #264f78
# selection_foreground #ffffff
#
# # URL 링크 색상
# url_color #569cd6
#
# # 터미널 색상 팔레트
# color0 #1e1e1e
# color1 #f44747
# color2 #608b4e
# color3 #dcdcaa
# color4 #569cd6
# color5 #c678dd
# color6 #56b6c2
# color7 #d4d4d4
# color8 #808080
# color9 #f44747
# color10 #608b4e
# color11 #dcdcaa
# color12 #569cd6
# color13 #c678dd
# color14 #56b6c2
# color15 #ffffff
# ========================================
# 창 및 레이아웃 설정
# ========================================
# 창 여백 설정
window_padding_width 8
# 창 테두리 제거
draw_minimal_borders yes
window_border_width 0.5pt
active_border_color #569cd6
inactive_border_color #808080
# 창 크기 기억
remember_window_size yes
initial_window_width 100c
initial_window_height 30c
# 탭바 설정
tab_bar_edge top
tab_bar_style powerline
tab_powerline_style slanted
tab_bar_margin_width 0.0
tab_bar_margin_height 5.0 0.0
tab_bar_min_tabs 2
tab_switch_strategy previous
# 활성/비활성 탭 색상 (Dracula에서 자동 적용)
# active_tab_foreground #000
# active_tab_background #eee
# inactive_tab_foreground #444
# inactive_tab_background #999
# 새 창/탭에서 현재 디렉토리 유지
map cmd+t new_tab_with_cwd
map cmd+enter new_window_with_cwd
# ========================================
# 키보드 단축키 설정
# ========================================
# 폰트 크기 조절
map cmd+equal change_font_size all +1.0
map cmd+plus change_font_size all +1.0
map cmd+minus change_font_size all -1.0
map cmd+0 change_font_size all 0
# 투명도 조절
map cmd+shift+equal set_background_opacity +0.1
map cmd+shift+minus set_background_opacity -0.1
map cmd+shift+0 set_background_opacity 0.85
# 창 분할
map cmd+d new_window_with_cwd
map cmd+shift+d split_window_right
map cmd+shift+v split_window_down
# 창 간 이동
map cmd+left previous_window
map cmd+right next_window
# 탭 관리
map cmd+1 goto_tab 1
map cmd+2 goto_tab 2
map cmd+3 goto_tab 3
map cmd+4 goto_tab 4
map cmd+5 goto_tab 5
# 복사/붙여넣기
map cmd+c copy_to_clipboard
map cmd+v paste_from_clipboard
map cmd+shift+s paste_from_selection
# 빠른 검색
map cmd+f show_scrollback
map cmd+g scroll_to_prompt 1
map cmd+shift+g scroll_to_prompt -1
# 창 관리 개선
map cmd+w close_window
map cmd+shift+w close_tab
map cmd+shift+t new_tab
map cmd+option+left previous_tab
map cmd+option+right next_tab
# 전체화면
map cmd+shift+f toggle_fullscreen
# 줌 인/아웃
map cmd+shift+equal increase_font_size
map cmd+shift+minus decrease_font_size
map cmd+shift+backspace restore_font_size
# 빠른 설정 다시로드
map cmd+shift+r load_config_file
# Fish shell 단축키 추가
map cmd+shift+z scroll_to_prompt -1
map cmd+shift+x scroll_to_prompt 1
map cmd+shift+o show_last_command_output
# Fish shell 명령어 실행 결과 보기
map cmd+ctrl+g show_scrollback
# ========================================
# tmux 통합 키 매핑
# ========================================
# tmux 세션 관리
map cmd+shift+n launch --type=tab --title="New Session" fish -c "tmux new-session"
map cmd+shift+a launch --type=tab --title="Attach Session" fish -c "tmux attach || tmux new-session"
# tmux 창/패널 이동 (kitty + tmux 협력)
map cmd+shift+left send_text all \x01h
map cmd+shift+right send_text all \x01l
map cmd+shift+up send_text all \x01k
map cmd+shift+down send_text all \x01j
# tmux 세션 선택
map cmd+shift+s launch --type=overlay fish -c "tmux choose-session"
# 클립보드 히스토리 관리 (kitten 사용)
map cmd+shift+h launch --type=overlay --title="Clipboard History" kitty +kitten clipboard
# 이미지 뷰어 (icat kitten)
map cmd+shift+i launch --type=overlay --title="Image Viewer" fish -c "ls *.{png,jpg,jpeg,gif,webp} 2>/dev/null | head -10 | xargs -I {} kitty +kitten icat --align center {}"
# 파일 diff 뷰어 (kitten diff)
map cmd+shift+d launch --type=overlay --title="File Diff" fish -c "read -P 'File 1: ' file1; read -P 'File 2: ' file2; kitty +kitten diff $file1 $file2"
# 유니코드 입력기
map cmd+shift+u launch --type=overlay --title="Unicode Input" kitty +kitten unicode_input
# ========================================
# Shell Integration 설정
# ========================================
# Shell integration 활성화 (fish, zsh, bash 지원)
shell_integration enabled
# 기본 셸을 fish로 설정
shell /opt/homebrew/bin/fish
# 프롬프트 마킹 활성화 (명령어 구분)
shell_integration_path /opt/homebrew/bin/fish
# ========================================
# 성능 및 기타 설정
# ========================================
# 스크롤백 라인 수
scrollback_lines 10000
# 마우스 지원 강화
mouse_hide_wait 3.0
copy_on_select yes
strip_trailing_spaces smart
select_by_word_characters @-./_~?&=%+#
# 터미널 벨 비활성화
enable_audio_bell no
visual_bell_duration 0.0
# URL 및 파일 경로 인식
detect_urls yes
url_style curly
open_url_with default
# 스크롤 최적화
wheel_scroll_multiplier 5.0
touch_scroll_multiplier 1.0
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
# 자동 업데이트 확인
update_check_interval 24
# 시작시 최적화
startup_session none
allow_hyperlinks yes
# 이모지 및 리가처 지원
disable_ligatures never
# 유니코드 입력 지원 강화
# 원격 제어는 보안상 비활성화 (필요시에만 활성화)
# allow_remote_control yes
# listen_on unix:/tmp/kitty
# 폰트 렌더링 품질 향상
repaint_delay 10
input_delay 3
# 배경 투명도 설정 (0.0 = 완전 투명, 1.0 = 완전 불투명)
background_opacity 0.8
# 동적 투명도 조절 활성화
dynamic_background_opacity yes
# GPU 가속 사용
sync_to_monitor yes
# ========================================
# 한국어 입력 최적화
# ========================================
# IME 지원 향상
macos_option_as_alt yes
macos_quit_when_last_window_closed yes
macos_colorspace srgb
macos_hide_from_tasks no
# 한글 입력시 커서 깜빡임 최적화
cursor_blink_interval 0.5
cursor_stop_blinking_after 15.0
# 한글 입력 지연 최소화
macos_traditional_fullscreen no
hide_window_decorations titlebar-only
# 한글 조합 문자 처리 개선
combine_glyphs yes
force_ltr no
# ========================================
# 추가 macOS 최적화
# ========================================
# 창 제목 표시 최적화
macos_show_window_title_in menubar
macos_menubar_title_max_length 0
# 커서 최적화
macos_custom_beam_cursor yes
# 창 닫기 확인 비활성화
confirm_os_window_close 0
# 성능 최적화
single_window_margin_width -1

View File

@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Mocha
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #cdd6f4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #f5e0dc
# Cursor colors
cursor #f5e0dc
cursor_text_color #1e1e2e
# URL underline color when hovering with mouse
url_color #f5e0dc
# Kitty window border colors
active_border_color #b4befe
inactive_border_color #6c7086
bell_border_color #f9e2af
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #11111b
active_tab_background #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background #11111b
# Colors for marks (marked text in the terminal)
mark1_foreground #1e1e2e
mark1_background #b4befe
mark2_foreground #1e1e2e
mark2_background #cba6f7
mark3_foreground #1e1e2e
mark3_background #74c7ec
# The 16 terminal colors
# black
color0 #45475a
color8 #585b70
# red
color1 #f38ba8
color9 #f38ba8
# green
color2 #a6e3a1
color10 #a6e3a1
# yellow
color3 #f9e2af
color11 #f9e2af
# blue
color4 #89b4fa
color12 #89b4fa
# magenta
color5 #f5c2e7
color13 #f5c2e7
# cyan
color6 #94e2d5
color14 #94e2d5
# white
color7 #bac2de
color15 #a6adc8

View File

@@ -1,13 +1,4 @@
# https://draculatheme.com/kitty
#
# Installation instructions:
#
# cp dracula.conf ~/.config/kitty/
# echo "include dracula.conf" >> ~/.config/kitty/kitty.conf
#
# Then reload kitty for the config to take affect.
# Alternatively copy paste below directly into kitty.conf
# Dracula Theme for Kitty
foreground #f8f8f2
background #282a36
selection_foreground #ffffff
@@ -49,18 +40,14 @@ color15 #ffffff
# Cursor colors
cursor #f8f8f2
cursor_text_color background
cursor_text_color #282a36
# Tab bar colors
active_tab_foreground #282a36
active_tab_background #f8f8f2
inactive_tab_foreground #282a36
inactive_tab_background #6272a4
inactive_tab_foreground #f8f8f2
inactive_tab_background #282a36
# Marks
mark1_foreground #282a36
mark1_background #ff5555
# Splits/Windows
active_border_color #f8f8f2
inactive_border_color #6272a4

View File

@@ -0,0 +1,24 @@
# Catppuccin Mocha Theme
include dracula.conf
# Font Configuration
font_family Fira Code Nerd Font
font_size 16.0
# Window
background_opacity 0.90
window_padding_width 8
# Cursor
cursor_shape beam
cursor_blink_interval 0.5
# URL
url_style curly
# Bell
enable_audio_bell no
# Tab bar
tab_bar_style powerline
tab_powerline_style slanted

8
nvim/.config/nvim/.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
tt.*
.tests
doc/tags
debug
.repro
foo.*
*.log
data

View File

@@ -0,0 +1,15 @@
{
"neodev": {
"library": {
"enabled": true,
"plugins": true
}
},
"neoconf": {
"plugins": {
"lua_ls": {
"enabled": true
}
}
}
}

201
nvim/.config/nvim/LICENSE Normal file
View File

@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,34 +1,4 @@
# AstroNvim Template
# 💤 LazyVim
**NOTE:** This is for AstroNvim v5+
A template for getting started with [AstroNvim](https://github.com/AstroNvim/AstroNvim)
## 🛠️ Installation
#### Make a backup of your current nvim and shared folder
```shell
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
```
#### Create a new user repository from this template
Press the "Use this template" button above to create a new repository to store your user configuration.
You can also just clone this repository directly if you do not want to track your user configuration in GitHub.
#### Clone the repository
```shell
git clone https://github.com/<your_user>/<your_repository> ~/.config/nvim
```
#### Start Neovim
```shell
nvim
```
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.

View File

@@ -1,27 +1,2 @@
-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
-- stylua: ignore
local result = vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
if vim.v.shell_error ~= 0 then
-- stylua: ignore
vim.api.nvim_echo({ { ("Error cloning lazy.nvim:\n%s\n"):format(result), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
vim.fn.getchar()
vim.cmd.quit()
end
end
vim.opt.rtp:prepend(lazypath)
-- validate that lazy is available
if not pcall(require, "lazy") then
-- stylua: ignore
vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
vim.fn.getchar()
vim.cmd.quit()
end
require "lazy_setup"
require "polish"
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")

View File

@@ -1,47 +1,35 @@
{
"AstroNvim": { "branch": "main", "commit": "8379e70578bb2f4b2227d55ccc1ae4fd2ab8bb51" },
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"aerial.nvim": { "branch": "master", "commit": "6ab1a0ce4874d21610fc5a67a6c82c7b943c635b" },
"astrocore": { "branch": "main", "commit": "c797dd5a592e2bd154f2503e231b8a4083659534" },
"astrolsp": { "branch": "main", "commit": "414775e4b49a46bd7105cc5498ea7bb312359bf2" },
"astrotheme": { "branch": "main", "commit": "4a2af93815e4e6adfe69c836e46047a9451de858" },
"astroui": { "branch": "main", "commit": "4943abbd42674b43249313afe83b91065a40e4be" },
"better-escape.nvim": { "branch": "master", "commit": "199dcc2643dec5d8dbdab4ec672cf405224dcb3b" },
"blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" },
"blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" },
"cmp-dap": { "branch": "master", "commit": "ea92773e84c0ad3288c3bc5e452ac91559669087" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "7010000889bfb6c26065e0b0f7f1e6aa9163edd9" },
"guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" },
"heirline.nvim": { "branch": "master", "commit": "fae936abb5e0345b85c3a03ecf38525b0828b992" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
"mason-null-ls.nvim": { "branch": "main", "commit": "2b8433f76598397fcc97318d410e0c4f7a4bea6a" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" },
"mason.nvim": { "branch": "main", "commit": "197f6352c276bbc2d25541dfce00ec50d1a4e88f" },
"mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
"neo-tree.nvim": { "branch": "main", "commit": "f1deac7ecec88c28a250d890ba7bb35843e69cbd" },
"neoconf.nvim": { "branch": "main", "commit": "630a6f1ab2ae5b1add5425ba6e780e3f7f900bd8" },
"none-ls.nvim": { "branch": "main", "commit": "f0b3dc073153a08fd1e32869ed30b87a3bb4230f" },
"nui.nvim": { "branch": "main", "commit": "f535005e6ad1016383f24e39559833759453564e" },
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
"nvim-dap": { "branch": "master", "commit": "7523676a4be17644587aa47e4d42f6f7646d4727" },
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
"nvim-highlight-colors": { "branch": "main", "commit": "e0c4a58ec8c3ca7c92d3ee4eb3bc1dd0f7be317e" },
"nvim-lspconfig": { "branch": "master", "commit": "fa2662510d30b06168b6e2e6915518decde6bbac" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
"nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" },
"LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" },
"blink.cmp": { "branch": "main", "commit": "4b18c32adef2898f95cdef6192cbd5796c1a332d" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" },
"conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
"dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" },
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"gitsigns.nvim": { "branch": "main", "commit": "1ce96a464fdbc24208e24c117e2021794259005d" },
"grug-far.nvim": { "branch": "main", "commit": "275dbedc96e61a6b8d1dfb28ba51586ddd233dcf" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "ae609525ddf01c153c39305730b1791800ffe4fe" },
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
"mini.ai": { "branch": "main", "commit": "9eae720f2b20f6ad28cbfa0ddc524e10dc2c3201" },
"mini.icons": { "branch": "main", "commit": "efc85e42262cd0c9e1fdbf806c25cb0be6de115c" },
"mini.pairs": { "branch": "main", "commit": "4089aa6ea6423e02e1a8326a7a7a00159f6f5e04" },
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-lint": { "branch": "master", "commit": "bcd1a44edbea8cd473af7e7582d3f7ffc60d8e81" },
"nvim-lspconfig": { "branch": "master", "commit": "66fd02ad1c7ea31616d3ca678fa04e6d0b360824" },
"nvim-treesitter": { "branch": "main", "commit": "45a07f869b0cffba342276f2c77ba7c116d35db8" },
"nvim-treesitter-textobjects": { "branch": "main", "commit": "a0e182ae21fda68c59d1f36c9ed45600aef50311" },
"nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" },
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"resession.nvim": { "branch": "master", "commit": "cc819b0489938d03e4f3532a583354f0287c015b" },
"smart-splits.nvim": { "branch": "master", "commit": "ddb23c1a1cf1507bda487cda7f6e4690965ef9f5" },
"snacks.nvim": { "branch": "main", "commit": "da230e3ca8146da4b73752daaf0a1d07d343c12d" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" },
"which-key.nvim": { "branch": "main", "commit": "fcbf4eea17cb299c02557d576f0d568878e354a4" }
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
"tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
}

View File

@@ -0,0 +1,14 @@
{
"extras": [
"lazyvim.plugins.extras.lang.python",
"lazyvim.plugins.extras.lang.yaml",
"lazyvim.plugins.extras.lang.docker",
"lazyvim.plugins.extras.lang.json",
"lazyvim.plugins.extras.lang.markdown"
],
"install_version": 8,
"news": {
"NEWS.md": "11866"
},
"version": 8
}

View File

@@ -1,12 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroCommunity: import any community modules here
-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
-- This guarantees that the specs are processed before any user plugins.
---@type LazySpec
return {
"AstroNvim/astrocommunity",
{ import = "astrocommunity.pack.lua" },
-- import/override with your plugins folder
}

View File

@@ -0,0 +1,8 @@
-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
--
-- Add any additional autocmds here
-- with `vim.api.nvim_create_autocmd`
--
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")

View File

@@ -0,0 +1,3 @@
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here

View File

@@ -0,0 +1,53 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
spec = {
-- add LazyVim and import its plugins
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
-- import/override with your plugins
{ import = "plugins" },
},
defaults = {
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
lazy = false,
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
-- have outdated releases, which may break your Neovim install.
version = false, -- always use the latest git commit
-- version = "*", -- try installing the latest stable version for plugins that support semver
},
install = { colorscheme = { "dracula", "habamax" } },
checker = {
enabled = true, -- check for plugin updates periodically
notify = false, -- notify on update
}, -- automatically check for plugin updates
performance = {
rtp = {
-- disable some rtp plugins
disabled_plugins = {
"gzip",
-- "matchit",
-- "matchparen",
-- "netrwPlugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})

View File

@@ -0,0 +1,3 @@
-- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here

View File

@@ -1,32 +0,0 @@
require("lazy").setup({
{
"AstroNvim/AstroNvim",
version = "^5", -- Remove version tracking to elect for nightly AstroNvim
import = "astronvim.plugins",
opts = { -- AstroNvim options must be set here with the `import` key
mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins
},
},
{ import = "community" },
{ import = "plugins" },
} --[[@as LazySpec]], {
-- Configure any other `lazy.nvim` configuration options here
install = { colorscheme = { "astrotheme", "habamax" } },
ui = { backdrop = 100 },
performance = {
rtp = {
-- disable some rtp plugins, add more to your liking
disabled_plugins = {
"gzip",
"netrwPlugin",
"tarPlugin",
"tohtml",
"zipPlugin",
},
},
},
} --[[@as LazyConfig]])

View File

@@ -1,85 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
-- Configuration documentation can be found with `:h astrocore`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astrocore",
---@type AstroCoreOpts
opts = {
-- Configure core features of AstroNvim
features = {
large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
autopairs = true, -- enable autopairs at start
cmp = true, -- enable completion at start
diagnostics = { virtual_text = true, virtual_lines = false }, -- diagnostic settings on startup
highlighturl = true, -- highlight URLs at start
notifications = true, -- enable notifications at start
},
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
diagnostics = {
virtual_text = true,
underline = true,
},
-- passed to `vim.filetype.add`
filetypes = {
-- see `:h vim.filetype.add` for usage
extension = {
foo = "fooscript",
},
filename = {
[".foorc"] = "fooscript",
},
pattern = {
[".*/etc/foo/.*"] = "fooscript",
},
},
-- vim options can be configured here
options = {
opt = { -- vim.opt.<key>
relativenumber = true, -- sets vim.opt.relativenumber
number = true, -- sets vim.opt.number
spell = false, -- sets vim.opt.spell
signcolumn = "yes", -- sets vim.opt.signcolumn to yes
wrap = false, -- sets vim.opt.wrap
},
g = { -- vim.g.<key>
-- configure global vim variables (vim.g)
-- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
-- This can be found in the `lua/lazy_setup.lua` file
},
},
-- Mappings can be configured through AstroCore as well.
-- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
mappings = {
-- first key is the mode
n = {
-- second key is the lefthand side of the map
-- navigate buffer tabs
["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" },
["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" },
-- mappings seen under group name "Buffer"
["<Leader>bd"] = {
function()
require("astroui.status.heirline").buffer_picker(
function(bufnr) require("astrocore.buffer").close(bufnr) end
)
end,
desc = "Close buffer from tabline",
},
-- tables with just a `desc` key will be registered with which-key if it's installed
-- this is useful for naming menus
-- ["<Leader>b"] = { desc = "Buffers" },
-- setting a mapping to false will disable it
-- ["<C-S>"] = false,
},
},
},
}

View File

@@ -1,105 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
-- Configuration documentation can be found with `:h astrolsp`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astrolsp",
---@type AstroLSPOpts
opts = {
-- Configuration table of features provided by AstroLSP
features = {
codelens = true, -- enable/disable codelens refresh on start
inlay_hints = false, -- enable/disable inlay hints on start
semantic_tokens = true, -- enable/disable semantic token highlighting
},
-- customize lsp formatting options
formatting = {
-- control auto formatting on save
format_on_save = {
enabled = true, -- enable or disable format on save globally
allow_filetypes = { -- enable format on save for specified filetypes only
-- "go",
},
ignore_filetypes = { -- disable format on save for specified filetypes
-- "python",
},
},
disabled = { -- disable formatting capabilities for the listed language servers
-- disable lua_ls formatting capability if you want to use StyLua to format your lua code
-- "lua_ls",
},
timeout_ms = 1000, -- default format timeout
-- filter = function(client) -- fully override the default formatting function
-- return true
-- end
},
-- enable servers that you already have installed without mason
servers = {
-- "pyright"
},
-- customize language server configuration options passed to `lspconfig`
---@diagnostic disable: missing-fields
config = {
-- clangd = { capabilities = { offsetEncoding = "utf-8" } },
},
-- customize how language servers are attached
handlers = {
-- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server
-- function(server, opts) require("lspconfig")[server].setup(opts) end
-- the key is the server that is being setup with `lspconfig`
-- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
-- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed
},
-- Configure buffer local auto commands to add when attaching a language server
autocmds = {
-- first key is the `augroup` to add the auto commands to (:h augroup)
lsp_codelens_refresh = {
-- Optional condition to create/delete auto command group
-- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
-- condition will be resolved for each client on each execution and if it ever fails for all clients,
-- the auto commands will be deleted for that buffer
cond = "textDocument/codeLens",
-- cond = function(client, bufnr) return client.name == "lua_ls" end,
-- list of auto commands to set
{
-- events to trigger
event = { "InsertLeave", "BufEnter" },
-- the rest of the autocmd options (:h nvim_create_autocmd)
desc = "Refresh codelens (buffer)",
callback = function(args)
if require("astrolsp").config.features.codelens then vim.lsp.codelens.refresh { bufnr = args.buf } end
end,
},
},
},
-- mappings to be set up on attaching of a language server
mappings = {
n = {
-- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
gD = {
function() vim.lsp.buf.declaration() end,
desc = "Declaration of current symbol",
cond = "textDocument/declaration",
},
["<Leader>uY"] = {
function() require("astrolsp.toggles").buffer_semantic_tokens() end,
desc = "Toggle LSP semantic highlight (buffer)",
cond = function(client)
return client.supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil
end,
},
},
},
-- A custom `on_attach` function to be run after the default `on_attach` function
-- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`)
on_attach = function(client, bufnr)
-- this would disable semanticTokensProvider for all clients
-- client.server_capabilities.semanticTokensProvider = nil
end,
},
}

View File

@@ -1,39 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- AstroUI provides the basis for configuring the AstroNvim User Interface
-- Configuration documentation can be found with `:h astroui`
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing
---@type LazySpec
return {
"AstroNvim/astroui",
---@type AstroUIOpts
opts = {
-- change colorscheme
colorscheme = "astrodark",
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
highlights = {
init = { -- this table overrides highlights in all themes
-- Normal = { bg = "#000000" },
},
astrodark = { -- a table of overrides/changes when applying the astrotheme theme
-- Normal = { bg = "#000000" },
},
},
-- Icons can be configured throughout the interface
icons = {
-- configure the loading of the lsp in the status line
LSPLoading1 = "",
LSPLoading2 = "",
LSPLoading3 = "",
LSPLoading4 = "",
LSPLoading5 = "",
LSPLoading6 = "",
LSPLoading7 = "",
LSPLoading8 = "",
LSPLoading9 = "",
LSPLoading10 = "",
},
},
}

View File

@@ -0,0 +1,9 @@
return {
{ "Mofiqul/dracula.nvim" },
{
"LazyVim/LazyVim",
opts = {
colorscheme = "dracula",
},
},
}

View File

@@ -1,28 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize Mason
---@type LazySpec
return {
-- use mason-tool-installer for automatically installing Mason packages
{
"WhoIsSethDaniel/mason-tool-installer.nvim",
-- overrides `require("mason-tool-installer").setup(...)`
opts = {
-- Make sure to use the names found in `:Mason`
ensure_installed = {
-- install language servers
"lua-language-server",
-- install formatters
"stylua",
-- install debuggers
"debugpy",
-- install any other package
"tree-sitter-cli",
},
},
},
}

View File

@@ -1,24 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize None-ls sources
---@type LazySpec
return {
"nvimtools/none-ls.nvim",
opts = function(_, opts)
-- opts variable is the default configuration table for the setup function call
-- local null_ls = require "null-ls"
-- Check supported formatters and linters
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
-- Only insert new sources, do not replace the existing ones
-- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function)
opts.sources = require("astrocore").list_insert_unique(opts.sources, {
-- Set a formatter
-- null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.prettier,
})
end,
}

View File

@@ -0,0 +1,18 @@
return {
{
"snacks.nvim",
opts = {
terminal = {
win = {
style = "float",
width = 0.85,
height = 0.8,
border = "rounded",
wo = {
winblend = 15,
},
},
},
},
},
}

View File

@@ -1,15 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- Customize Treesitter
---@type LazySpec
return {
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"lua",
"vim",
-- add more arguments for adding more treesitter parsers
},
},
}

View File

@@ -1,88 +0,0 @@
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- You can also add or configure plugins by creating files in this `plugins/` folder
-- PLEASE REMOVE THE EXAMPLES YOU HAVE NO INTEREST IN BEFORE ENABLING THIS FILE
-- Here are some examples:
---@type LazySpec
return {
-- == Examples of Adding Plugins ==
"andweeb/presence.nvim",
{
"ray-x/lsp_signature.nvim",
event = "BufRead",
config = function() require("lsp_signature").setup() end,
},
-- == Examples of Overriding Plugins ==
-- customize dashboard options
{
"folke/snacks.nvim",
opts = {
dashboard = {
preset = {
header = table.concat({
" █████ ███████ ████████ ██████ ██████ ",
"██ ██ ██ ██ ██ ██ ██ ██",
"███████ ███████ ██ ██████ ██ ██",
"██ ██ ██ ██ ██ ██ ██ ██",
"██ ██ ███████ ██ ██ ██ ██████ ",
"",
"███  ██ ██  ██ ██ ███  ███",
"████  ██ ██  ██ ██ ████  ████",
"██ ██  ██ ██  ██ ██ ██ ████ ██",
"██  ██ ██  ██  ██  ██ ██  ██  ██",
"██   ████   ████   ██ ██  ██",
}, "\n"),
},
},
},
},
-- You can disable default plugins as follows:
{ "max397574/better-escape.nvim", enabled = false },
-- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
{
"L3MON4D3/LuaSnip",
config = function(plugin, opts)
require "astronvim.plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call
-- add more custom luasnip configuration such as filetype extend or custom snippets
local luasnip = require "luasnip"
luasnip.filetype_extend("javascript", { "javascriptreact" })
end,
},
{
"windwp/nvim-autopairs",
config = function(plugin, opts)
require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call
-- add more custom autopairs configuration such as custom rules
local npairs = require "nvim-autopairs"
local Rule = require "nvim-autopairs.rule"
local cond = require "nvim-autopairs.conds"
npairs.add_rules(
{
Rule("$", "$", { "tex", "latex" })
-- don't add a pair if the next character is %
:with_pair(cond.not_after_regex "%%")
-- don't add a pair if the previous character is xxx
:with_pair(
cond.not_before_regex("xxx", 3)
)
-- don't move right when repeat character
:with_move(cond.none())
-- don't delete if the next character is xx
:with_del(cond.not_after_regex "xx")
-- disable adding a newline when you press <cr>
:with_cr(cond.none()),
},
-- disable for .vim files, but it work for another filetypes
Rule("a", "a", "-vim")
)
end,
},
}

View File

@@ -1,5 +0,0 @@
if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
-- This will run last in the setup process.
-- This is just pure lua so anything that doesn't
-- fit in the normal config locations above can go here

View File

@@ -1,6 +0,0 @@
---
base: lua51
globals:
vim:
any: true

View File

@@ -1,8 +0,0 @@
std = "neovim"
[rules]
global_usage = "allow"
if_same_then_else = "allow"
incorrect_standard_library_use = "allow"
mixed_table = "allow"
multiple_statements = "allow"

View File

@@ -0,0 +1,3 @@
indent_type = "Spaces"
indent_width = 2
column_width = 120

View File

@@ -77,9 +77,9 @@ 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'
# 패널 경계선 (Dracula, bg=default로 kitty 투명도 유지)
set -g pane-border-style 'fg=#6272a4 bg=default'
set -g pane-active-border-style 'fg=#bd93f9 bg=default'
# Neovim 통합 설정
# Smart pane switching with awareness of Vim splits
@@ -100,7 +100,79 @@ 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'
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'pbcopy'
}
# Fish shell이 기본 셸인 경우
set -g default-shell /opt/homebrew/bin/fish
set -g default-shell /opt/homebrew/bin/fish
# ══════════════════════════════════════════════════════════════════
# Claude Code 최적화 설정
# ══════════════════════════════════════════════════════════════════
# 히스토리 대폭 증가 (Claude 출력량 많음)
set -g history-limit 50000
# 빠른 ESC 응답 (Claude Code 입력 반응성)
set -sg escape-time 10
# 포커스 이벤트 전달 (에디터 통합)
set -g focus-events on
# 256색 + True Color 강제
set -sa terminal-overrides ",*:Tc"
# 스크롤 속도 개선 (Claude 긴 응답 탐색)
bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 3 scroll-up
bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 3 scroll-down
# 빠른 복사 모드 진입 (Prefix + v)
bind v copy-mode
# 클립보드 자동 동기화 (macOS)
set -g set-clipboard on
# 패널 동기화 토글 (여러 서버 동시 작업)
bind S setw synchronize-panes \; display-message "Pane sync: #{?pane_synchronized,ON,OFF}"
# Claude Code 전용 레이아웃
# Prefix + C: Claude 작업 레이아웃 (메인 70% + 사이드 30%)
bind C split-window -h -p 30 -c "#{pane_current_path}" \; select-pane -L
# Prefix + M: 모니터링 레이아웃 (상단 80% Claude + 하단 20% 로그)
bind M split-window -v -p 20 -c "#{pane_current_path}" \; select-pane -U
# 빠른 패널 최대화 토글 (Prefix + z 기본 + Prefix + f 추가)
bind f resize-pane -Z
# 현재 패널을 새 창으로 분리
bind b break-pane -d
# 패널 회전 (작업 공간 빠른 전환)
bind -r o rotate-window
# 마지막 창으로 빠른 이동 (Prefix + Tab)
bind Tab last-window
# 마지막 패널로 빠른 이동 (Prefix + `)
bind ` last-pane
# 빠른 세션 전환
bind ( switch-client -p
bind ) switch-client -n
# 세션 저장/복원 (tmux-resurrect 플러그인 없이)
# 현재 레이아웃 저장
bind W command-prompt -p "Save layout as:" "run-shell 'tmux list-windows -F \"##{window_layout}\" > ~/.tmux-layout-%%'"
# Claude 출력 빠른 검색 (Prefix + /)
bind / copy-mode \; send-keys ?
# 현재 패널 내용을 파일로 저장
bind P command-prompt -p "Save pane to:" "capture-pane -S -50000 ; save-buffer '%%'"
# 활성 패널 강조 (default로 설정해야 kitty 투명도 유지)
set -g window-style 'bg=default'
set -g window-active-style 'bg=default'
# 클립보드 히스토리 증가
set -g buffer-limit 20