From cd86498e131e701d8fb706425ccf177db21e4859 Mon Sep 17 00:00:00 2001
From: syui <syui@syui.ai>
Date: Wed, 11 Jun 2025 06:59:18 +0900
Subject: [PATCH] zsh tmux

---
 .tmux.conf | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 .zshrc     | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 install.sh | 56 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 202 insertions(+)
 create mode 100644 .tmux.conf
 create mode 100644 .zshrc
 create mode 100755 install.sh

diff --git a/.tmux.conf b/.tmux.conf
new file mode 100644
index 0000000..261b422
--- /dev/null
+++ b/.tmux.conf
@@ -0,0 +1,73 @@
+# ================================
+# tmux configuration
+# ================================
+
+# General
+set -g default-terminal "screen-256color"
+set -g escape-time 0
+set -g history-limit 10000
+set -g mouse on
+
+# Prefix key
+unbind C-b
+set -g prefix C-a
+bind C-a send-prefix
+
+# Reload config
+bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
+
+# Window navigation
+bind -n C-h select-pane -L
+bind -n C-j select-pane -D
+bind -n C-k select-pane -U
+bind -n C-l select-pane -R
+
+# Pane splitting
+bind | split-window -h -c "#{pane_current_path}"
+bind - split-window -v -c "#{pane_current_path}"
+unbind '"'
+unbind %
+
+# Pane resizing
+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
+
+# Window creation
+bind c new-window -c "#{pane_current_path}"
+
+# Copy mode
+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-pipe-and-cancel "pbcopy"
+bind -T copy-mode-vi r send-keys -X rectangle-toggle
+
+# Status bar
+set -g status-position bottom
+set -g status-bg black
+set -g status-fg white
+set -g status-left-length 40
+set -g status-right-length 50
+
+set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
+set -g status-right "#[fg=cyan]%d %b %R"
+
+# Window status
+setw -g window-status-current-style fg=black,bg=green
+setw -g window-status-style fg=white,bg=black
+
+# Pane borders
+set -g pane-border-style fg=black
+set -g pane-active-border-style fg=green
+
+# Activity monitoring
+setw -g monitor-activity on
+set -g visual-activity on
+
+# Start windows and panes at 1
+set -g base-index 1
+setw -g pane-base-index 1
+
+# Renumber windows when a window is closed
+set -g renumber-windows on
\ No newline at end of file
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 0000000..2e385d9
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,73 @@
+# ================================
+# zsh configuration
+# ================================
+
+# History
+HISTFILE=~/.zsh_history
+HISTSIZE=10000
+SAVEHIST=10000
+setopt HIST_IGNORE_DUPS
+setopt HIST_IGNORE_ALL_DUPS
+setopt HIST_IGNORE_SPACE
+setopt HIST_FIND_NO_DUPS
+setopt HIST_REDUCE_BLANKS
+setopt SHARE_HISTORY
+
+# Directory navigation
+setopt AUTO_CD
+setopt AUTO_PUSHD
+setopt PUSHD_IGNORE_DUPS
+
+# Completion
+autoload -Uz compinit
+compinit
+setopt AUTO_MENU
+setopt COMPLETE_ALIASES
+
+# Key bindings
+bindkey -e
+bindkey '^R' history-incremental-search-backward
+
+# Prompt
+autoload -U colors && colors
+PROMPT='%{$fg[cyan]%}%n@%m%{$reset_color%}:%{$fg[yellow]%}%~%{$reset_color%}$ '
+
+# Aliases
+alias ll='ls -la'
+alias la='ls -a'
+alias l='ls -CF'
+alias grep='grep --color=auto'
+alias ..='cd ..'
+alias ...='cd ../..'
+
+# Git aliases
+alias g='git'
+alias gs='git status'
+alias ga='git add'
+alias gc='git commit'
+alias gp='git push'
+alias gl='git log --oneline'
+alias gd='git diff'
+
+# Tmux aliases
+alias t='tmux'
+alias ta='tmux attach'
+alias tl='tmux list-sessions'
+
+# Functions
+mkcd() {
+    mkdir -p "$1" && cd "$1"
+}
+
+# Load local zshrc if exists
+[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
+
+# Environment variables
+export EDITOR=nvim
+export VISUAL=nvim
+export PAGER=less
+export LESS='-R'
+
+# Path additions
+export PATH="$PATH:$HOME/.local/bin"
+export PATH="$PATH:$HOME/bin"
\ No newline at end of file
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..daf8466
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+# ================================
+# Dotfiles installation script
+# ================================
+
+DOTFILES_DIR="$HOME/git/dotfiles"
+
+echo "Setting up dotfiles..."
+
+# Function to create symlink
+create_symlink() {
+    local source="$1"
+    local target="$2"
+    
+    if [ -L "$target" ]; then
+        echo "Removing existing symlink: $target"
+        rm "$target"
+    elif [ -f "$target" ]; then
+        echo "Backing up existing file: $target -> $target.backup"
+        mv "$target" "$target.backup"
+    fi
+    
+    echo "Creating symlink: $source -> $target"
+    ln -s "$source" "$target"
+}
+
+# Zsh configuration
+if [ -f "$DOTFILES_DIR/.zshrc" ]; then
+    create_symlink "$DOTFILES_DIR/.zshrc" "$HOME/.zshrc"
+fi
+
+# Tmux configuration
+if [ -f "$DOTFILES_DIR/.tmux.conf" ]; then
+    create_symlink "$DOTFILES_DIR/.tmux.conf" "$HOME/.tmux.conf"
+fi
+
+# Neovim configuration
+if [ -d "$DOTFILES_DIR/nvim" ]; then
+    mkdir -p "$HOME/.config"
+    if [ -L "$HOME/.config/nvim" ]; then
+        echo "Removing existing symlink: $HOME/.config/nvim"
+        rm "$HOME/.config/nvim"
+    elif [ -d "$HOME/.config/nvim" ]; then
+        echo "Backing up existing directory: $HOME/.config/nvim -> $HOME/.config/nvim.backup"
+        mv "$HOME/.config/nvim" "$HOME/.config/nvim.backup"
+    fi
+    create_symlink "$DOTFILES_DIR/nvim" "$HOME/.config/nvim"
+fi
+
+echo "Dotfiles setup complete!"
+echo ""
+echo "To apply changes:"
+echo "  - For zsh: source ~/.zshrc or restart your terminal"
+echo "  - For tmux: tmux source-file ~/.tmux.conf (if running) or restart tmux"
+echo "  - For nvim: restart nvim"
\ No newline at end of file