tmux: перенос конфига (бинды, мышь, темы, автосохранение) + README

This commit is contained in:
Marat Kharitonov
2026-08-06 23:26:42 +03:00
commit 3cf28aa7a4
3 changed files with 212 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
# dotenv
Персональный конфиг терминального воркспейса: tmux + (опционально) VS Code.
Содержимое:
- `tmux.conf` — конфиг tmux: бинды, мышь, тема, сохранитель сессий.
- `vscode-keybindings.json` — переопределение клавиш VS Code, чтобы `Alt+стрелки`
уходили в tmux как навигация по панелям (нужно только если используешь VS Code).
## Установка tmux
### 1. Скопировать конфиг
```bash
mkdir -p ~/.config/tmux/plugins
cp tmux.conf ~/.config/tmux/tmux.conf
```
### 2. Поставить TPM (менеджер плагинов — единственное ставится вручную)
```bash
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
```
### 3. Запустить tmux и доустановить плагины
```bash
tmux new -s main
```
Внутри tmux нажми:
```
Ctrl+b , затем I
```
TPM прочитает строки `@plugin '...'` из `tmux.conf` и поставит:
- `egel/tmux-gruvbox` — тема оформления;
- `tmux-plugins/tmux-resurrect` — сохранение/восстановление сессии (`Ctrl+b Ctrl+s` / `Ctrl+b Ctrl+r`);
- `tmux-plugins/tmux-continuum` — автосохранение каждые 15 сек и автовосстановление при старте.
Если что-то не подхватилось — перезапусти tmux (или `Ctrl+b I` ещё раз).
## Горячие клавиши tmux (из tmux.conf)
| Комбинация | Действие |
|---|---|
| `Alt+h` / `Alt+v` | сплит панели (вертикаль / горизонталь) |
| `Alt+←↑→↓` | переключение панели |
| `Alt+Shift+←↑→↓` | resize панели |
| `Alt+1..9` | выбор окна |
| `Alt+n` | новое окно |
| `Alt+c` / `Alt+q` | убить панель / окно |
| `Alt+d` | detach |
| `Alt+x` | перезагрузить конфиг |
| в copy-mode: `v` выделить, `y` скопировать | копирование в буфер |
> `Alt+r` (старый reload) и `Alt+Enter` (новое окно) **не используются** — их ест
> терминал/ОС (полноэкранный режим Windows). Поэтому reload = `Alt+x`, окно = `Alt+n`.
Мышь включена (`set -g mouse on`): клик по панели, скролл колесом, resize границей.
## Проблема с копированием в буфер
Копирование идёт через команду:
```
clip.exe || wl-copy || xclip -in -selection clipboard
```
- на **WSL** (Windows) работает `clip.exe` — текст попадает в Windows-буфер;
- на чистом **Linux** понадобится `wl-clipboard` (`wl-copy`) или `xclip`:
```bash
sudo apt install xclip # или: sudo apt install wl-clipboard
```
## (Опционально) VS Code — чтобы работали `Alt+стрелки`
Без этого в терминале VS Code голые `Alt+←→` перехватываются как word-jump и не
доходят до tmux. Решение — скопировать `vscode-keybindings.json` в конфиг VS Code:
**Windows:** `%APPDATA%\Code\User\keybindings.json`
**Linux:** `~/.config/Code/User/keybindings.json`
```bash
cp vscode-keybindings.json "$APPDATA/Code/User/keybindings.json" # Windows
# или на Linux:
cp vscode-keybindings.json ~/.config/Code/User/keybindings.json
```
Затем в VS Code: `Ctrl+Shift+P` → **Reload Window**.
> Файл дополняет, а не заменяет: если в ключбиндингах уже что-то есть — слей вручную,
> а не перезаписывай вслепую.
## Обновление/правки
Держи `tmux.conf` в репе и правишь его как код. Перенос на другую машину = `git clone`
этого репо + шаги 1–3 выше.
Сам `tmux.conf` в репе — актуальный «живой» конфиг с этого компа.
+60
View File
@@ -0,0 +1,60 @@
set -g pane-border-lines "double"
set -g default-terminal "xterm-256color"
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
#setw -g mode-keys nano
set -g mouse on
set -s escape-time 0
set -g history-limit 2000
bind -n M-r source-file ~/.config/tmux/tmux.conf \; display "Config reloaded!"
bind -n M-x source-file ~/.config/tmux/tmux.conf \; display "Config reloaded!"
bind -n M-s choose-tree -s
bind -n M-1 select-window -t 1
bind -n M-2 select-window -t 2
bind -n M-3 select-window -t 3
bind -n M-4 select-window -t 4
bind -n M-5 select-window -t 5
bind -n M-6 select-window -t 6
bind -n M-7 select-window -t 7
bind -n M-8 select-window -t 8
bind -n M-9 select-window -t 9
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 -n M-S-Left resize-pane -L 5
bind -n M-S-Right resize-pane -R 5
bind -n M-S-Up resize-pane -U 3
bind -n M-S-Down resize-pane -D 3
bind -n M-h split-window -v
bind -n M-v split-window -h
bind -n M-n new-window
bind -n M-c kill-pane
bind -n M-q kill-window
bind -n M-d detach
bind -n M-Q confirm-before -p "Kill entire session? (y/n)" kill-session
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "clip.exe || wl-copy || xclip -in -selection clipboard"
bind -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "clip.exe || wl-copy || xclip -in -selection clipboard"
bind -n M-/ copy-mode \; command-prompt -p "(search down)" "send -X search-forward '%%%'"
bind -n M-? copy-mode \; command-prompt -p "(search up)" "send -X search-backward '%%%'"
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'egel/tmux-gruvbox'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
run '~/.config/tmux/plugins/tpm/tpm'
+49
View File
@@ -0,0 +1,49 @@
// Поместите настраиваемые сочетания клавиш в этот файл, чтобы переопределить сочетания клавиш по умолчанию.
[
{
"key": "ctrl+shift+p",
"command": "-workbench.action.showCommands"
},
{
"key": "ctrl+p",
"command": "-workbench.action.quickOpen"
},
{
"key": "ctrl+p",
"command": "-workbench.action.quickOpenNavigateNextInFilePicker",
"when": "inFilesPicker && inQuickOpen"
},
{
"key": "ctrl+shift+p",
"command": "-workbench.action.quickOpenNavigatePreviousInFilePicker",
"when": "inFilesPicker && inQuickOpen"
},
{
"key": "ctrl+m",
"command": "-editor.action.toggleTabFocusMode"
},
{
"key": "alt+left",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;3D" },
"when": "terminalFocus"
},
{
"key": "alt+right",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;3C" },
"when": "terminalFocus"
},
{
"key": "alt+up",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;3A" },
"when": "terminalFocus"
},
{
"key": "alt+down",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;3B" },
"when": "terminalFocus"
}
]