Добавлены конфиги tmux и zsh
This commit is contained in:
11
tmux/plugins/tmux-ressurect/docs/custom_key_bindings.md
Normal file
11
tmux/plugins/tmux-ressurect/docs/custom_key_bindings.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Custom key bindings
|
||||
|
||||
The default key bindings are:
|
||||
|
||||
- `prefix + Ctrl-s` - save
|
||||
- `prefix + Ctrl-r` - restore
|
||||
|
||||
To change these, add to `.tmux.conf`:
|
||||
|
||||
set -g @resurrect-save 'S'
|
||||
set -g @resurrect-restore 'R'
|
||||
39
tmux/plugins/tmux-ressurect/docs/hooks.md
Normal file
39
tmux/plugins/tmux-ressurect/docs/hooks.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Save & Restore Hooks
|
||||
|
||||
Hooks allow to set custom commands that will be executed during session save
|
||||
and restore. Most hooks are called with zero arguments, unless explicitly
|
||||
stated otherwise.
|
||||
|
||||
Currently the following hooks are supported:
|
||||
|
||||
- `@resurrect-hook-post-save-layout`
|
||||
|
||||
Called after all sessions, panes and windows have been saved.
|
||||
|
||||
Passed single argument of the state file.
|
||||
|
||||
- `@resurrect-hook-post-save-all`
|
||||
|
||||
Called at end of save process right before the spinner is turned off.
|
||||
|
||||
- `@resurrect-hook-pre-restore-all`
|
||||
|
||||
Called before any tmux state is altered.
|
||||
|
||||
- `@resurrect-hook-pre-restore-history`
|
||||
|
||||
Called after panes and layout have been restores, but before bash history is
|
||||
restored (if it is enabled) -- the hook is always called even if history
|
||||
saving is disabled.
|
||||
|
||||
- `@resurrect-hook-pre-restore-pane-processes`
|
||||
|
||||
Called after history is restored, but before running processes are restored.
|
||||
|
||||
### Examples
|
||||
|
||||
Here is an example how to save and restore window geometry for most terminals in X11.
|
||||
Add this to `.tmux.conf`:
|
||||
|
||||
set -g @resurrect-hook-post-save-all 'eval $(xdotool getwindowgeometry --shell $WINDOWID); echo 0,$X,$Y,$WIDTH,$HEIGHT > $HOME/.tmux/resurrect/geometry'
|
||||
set -g @resurrect-hook-pre-restore-all 'wmctrl -i -r $WINDOWID -e $(cat $HOME/.tmux/resurrect/geometry)'
|
||||
@@ -0,0 +1,72 @@
|
||||
# Migrating from `tmuxinator`
|
||||
|
||||
### Why migrate to `tmux-resurrect`?
|
||||
|
||||
Here are some reasons why you'd want to migrate from `tmuxinator` to
|
||||
`tmux-resurrect`:
|
||||
|
||||
- **Less dependencies**<br/>
|
||||
`tmuxinator` depends on `ruby` which can be a hassle to set up if you're not a
|
||||
rubyist.<br/>
|
||||
`tmux-resurrect` depends just on `bash` which is virtually
|
||||
omnipresent.
|
||||
|
||||
- **Simplicity**<br/>
|
||||
`tmuxinator` has an executable, CLI interface with half dozen commands and
|
||||
command completion.<br/>
|
||||
`tmux-resurrect` defines just 2 tmux key bindings.
|
||||
|
||||
- **No configuration**<br/>
|
||||
`tmuxinator` is all about config files (and their constant updating).<br/>
|
||||
`tmux-resurrect` requires no configuration to work.
|
||||
|
||||
- **Better change handling**<br/>
|
||||
When you make a change to any aspect of tmux layout, you also have to
|
||||
update related `tmuxinator` project file (and test to make sure change is
|
||||
ok).<br/>
|
||||
With `tmux-resurrect` there's nothing to do: your change will be
|
||||
remembered on the next save.
|
||||
|
||||
### How to migrate?
|
||||
|
||||
1. Install `tmux-resurrect`.
|
||||
2. Open \*all* existing `tmuxinator` projects.<br/>
|
||||
Verify all projects are open by pressing `prefix + s` and checking they are
|
||||
all on the list.
|
||||
3. Perform a `tmux-resurrect` save.
|
||||
|
||||
That's it! You can continue using just `tmux-resurrect` should you choose so.
|
||||
|
||||
Note: it probably makes no sense to use both tools at the same time as they do
|
||||
the same thing (creating tmux environment for you to work in).
|
||||
Technically however, there should be no issues.
|
||||
|
||||
### Usage differences
|
||||
|
||||
`tmuxinator` focuses on managing individual tmux sessions (projects).
|
||||
`tmux-resurrect` keeps track of the \*whole* tmux environment: all sessions are
|
||||
saved and restored together.
|
||||
|
||||
A couple tips if you decide to switch to `tmux-resurrect`:
|
||||
|
||||
- Keep all tmux sessions (projects) running all the time.<br/>
|
||||
If you want to work on an existing project, you should be able to just
|
||||
\*switch* to an already open session using `prefix + s`.<br/>
|
||||
This is different from `tmuxinator` where you'd usually run `mux new [project]`
|
||||
in order to start working on something.
|
||||
|
||||
- No need to kill sessions with `tmux kill-session` (unless you really don't
|
||||
want to work on it ever).<br/>
|
||||
It's the recurring theme by now: just keep all the sessions running all the
|
||||
time. This is convenient and also cheap in terms of resources.
|
||||
|
||||
- The only 2 situations when you need `tmux-resurrect`:<br/>
|
||||
1) Save tmux environment just before restarting/shutting down your
|
||||
computer.<br/>
|
||||
2) Restore tmux env after you turn the computer on.
|
||||
|
||||
### Other questions?
|
||||
|
||||
Still have questions? Feel free to open an
|
||||
[issue](ihttps://github.com/tmux-plugins/tmux-resurrect/issues). We'll try to
|
||||
answer it and also update this doc.
|
||||
31
tmux/plugins/tmux-ressurect/docs/restoring_pane_contents.md
Normal file
31
tmux/plugins/tmux-ressurect/docs/restoring_pane_contents.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Restoring pane contents
|
||||
|
||||
This plugin enables saving and restoring tmux pane contents.
|
||||
|
||||
This feature can be enabled by adding this line to `.tmux.conf`:
|
||||
|
||||
set -g @resurrect-capture-pane-contents 'on'
|
||||
|
||||
##### Known issue
|
||||
|
||||
When using this feature, please check the value of `default-command`
|
||||
tmux option. That can be done with `$ tmux show -g default-command`.
|
||||
|
||||
The value should NOT contain `&&` or `||` operators. If it does, simplify the
|
||||
option so those operators are removed.
|
||||
|
||||
Example:
|
||||
|
||||
- this will cause issues (notice the `&&` and `||` operators):
|
||||
|
||||
set -g default-command "which reattach-to-user-namespace > /dev/null && reattach-to-user-namespace -l $SHELL || $SHELL -l"
|
||||
|
||||
- this is ok:
|
||||
|
||||
set -g default-command "reattach-to-user-namespace -l $SHELL"
|
||||
|
||||
Related [bug](https://github.com/tmux-plugins/tmux-resurrect/issues/98).
|
||||
|
||||
Alternatively, you can let
|
||||
[tmux-sensible](https://github.com/tmux-plugins/tmux-sensible)
|
||||
handle this option in a cross-platform way and you'll have no problems.
|
||||
179
tmux/plugins/tmux-ressurect/docs/restoring_programs.md
Normal file
179
tmux/plugins/tmux-ressurect/docs/restoring_programs.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# Restoring programs
|
||||
- [General instructions](#general-instructions)
|
||||
- [Clarifications](#clarifications)
|
||||
- [Working with NodeJS](#nodejs)
|
||||
- [Restoring Mosh](#mosh)
|
||||
|
||||
### General instructions <a name="general-instructions"></a>
|
||||
Only a conservative list of programs is restored by default:<br/>
|
||||
`vi vim nvim emacs man less more tail top htop irssi weechat mutt`.
|
||||
|
||||
This can be configured with `@resurrect-processes` option in `.tmux.conf`. It
|
||||
contains space-separated list of additional programs to restore.
|
||||
|
||||
- Example restoring additional programs:
|
||||
|
||||
set -g @resurrect-processes 'ssh psql mysql sqlite3'
|
||||
|
||||
- Programs with arguments should be double quoted:
|
||||
|
||||
set -g @resurrect-processes 'some_program "git log"'
|
||||
|
||||
- Start with tilde to restore a program whose process contains target name:
|
||||
|
||||
set -g @resurrect-processes 'irb pry "~rails server" "~rails console"'
|
||||
|
||||
- Use `->` to specify a command to be used when restoring a program (useful if
|
||||
the default restore command fails ):
|
||||
|
||||
set -g @resurrect-processes 'some_program "grunt->grunt development"'
|
||||
|
||||
- Don't restore any programs:
|
||||
|
||||
set -g @resurrect-processes 'false'
|
||||
|
||||
- Restore **all** programs (be careful with this!):
|
||||
|
||||
set -g @resurrect-processes ':all:'
|
||||
|
||||
### Clarifications <a name="clarfications"></a>
|
||||
|
||||
> I don't understand tilde `~`, what is it and why is it used when restoring
|
||||
programs?
|
||||
|
||||
Let's say you use `rails server` command often. You want `tmux-resurrect` to
|
||||
save and restore it automatically. You might try adding `rails server` to the
|
||||
list of programs that will be restored:
|
||||
|
||||
set -g @resurrect-processes '"rails server"' # will NOT work
|
||||
|
||||
Upon save, `rails server` command will actually be saved as this command:
|
||||
`/Users/user/.rbenv/versions/2.0.0-p481/bin/ruby script/rails server`
|
||||
(if you wanna see how is any command saved, check it yourself in
|
||||
`~/.tmux/resurrect/last` file).
|
||||
|
||||
When programs are restored, the `rails server` command will NOT be restored
|
||||
because it does not **strictly** match the long
|
||||
`/Users/user/.rbenv/versions/2.0.0-p481/bin/ruby script/rails server` string.
|
||||
|
||||
The tilde `~` at the start of the string relaxes process name matching.
|
||||
|
||||
set -g @resurrect-processes '"~rails server"' # OK
|
||||
|
||||
The above option says: "restore full process if `rails server` string is found
|
||||
ANYWHERE in the process name".
|
||||
|
||||
If you check long process string, there is in fact a `rails server` string at
|
||||
the end, so now the process will be successfully restored.
|
||||
|
||||
> What is arrow `->` and why is is used?
|
||||
|
||||
(Please read the above clarification about tilde `~`).
|
||||
|
||||
Continuing with our `rails server` example, when the process is finally restored
|
||||
correctly it might not look pretty as you'll see the whole
|
||||
`/Users/user/.rbenv/versions/2.0.0-p481/bin/ruby script/rails server` string in
|
||||
the command line.
|
||||
|
||||
Naturally, you'd rather want to see just `rails server` (what you initially
|
||||
typed), but that information is now unfortunately lost.
|
||||
|
||||
To aid this, you can use arrow `->`: (**note**: there is no space before and after `->`)
|
||||
|
||||
set -g @resurrect-processes '"~rails server->rails server"' # OK
|
||||
|
||||
This option says: "when this process is restored use `rails server` as the
|
||||
command name".
|
||||
|
||||
Full (long) process name is now ignored and you'll see just `rails server` in
|
||||
the command line when the program is restored.
|
||||
|
||||
> Now I understand the tilde and the arrow, but things still don't work for me
|
||||
|
||||
Here's the general workflow for figuring this out:
|
||||
|
||||
- Set up your whole tmux environment manually.<br/>
|
||||
In our example case, we'd type `rails server` in a pane where we want it to
|
||||
run.
|
||||
- Save tmux env (it will get saved to `~/.tmux/resurrect/last`).
|
||||
- Open `~/.tmux/resurrect/last` file and try to find full process string for
|
||||
your program.<br/>
|
||||
Unfortunately this is a little vague but it should be easy. A smart
|
||||
thing to do for our example is to search for string `rails` in the `last`
|
||||
file.
|
||||
- Now that you know the full and the desired process string use tilde `~` and
|
||||
arrow `->` in `.tmux.conf` to make things work.
|
||||
|
||||
### Working with NodeJS <a name="nodejs"></a>
|
||||
If you are working with NodeJS, you may get some troubles with configuring restoring programs.
|
||||
|
||||
Particularly, some programs like `gulp`, `grunt` or `npm` are not saved with parameters so tmux-resurrect cannot restore it. This is actually **not tmux-resurrect's issue** but more likely, those programs' issues. For example if you run `gulp watch` or `npm start` and then try to look at `ps` or `pgrep`, you will only see `gulp` or `npm`.
|
||||
|
||||
To deal with these issues, one solution is to use [yarn](https://yarnpkg.com/en/docs/install) which a package manager for NodeJS and an alternative for `npm`. It's nearly identical to `npm` and very easy to use. Therefore you don't have to do any migration, you can simply use it immediately. For example:
|
||||
- `npm test` is equivalent to `yarn test`,
|
||||
- `npm run watch:dev` is equivalent to `yarn watch:dev`
|
||||
- more interestingly, `gulp watch:dev` is equivalent to `yarn gulp watch:dev`
|
||||
|
||||
Before continuing, please ensure that you understand the [clarifications](#clarifications) section about `~` and `->`
|
||||
|
||||
#### yarn
|
||||
It's fairly straight forward if you have been using `yarn` already.
|
||||
|
||||
set -g @resurrect-processes '"~yarn watch"'
|
||||
set -g @resurrect-processes '"~yarn watch->yarn watch"'
|
||||
|
||||
|
||||
#### npm
|
||||
Instead of
|
||||
|
||||
set -g @resurrect-processes '"~npm run watch"' # will NOT work
|
||||
|
||||
we use
|
||||
|
||||
set -g @resurrect-processes '"~yarn watch"' # OK
|
||||
|
||||
|
||||
#### gulp
|
||||
Instead of
|
||||
|
||||
set -g @resurrect-processes '"~gulp test"' # will NOT work
|
||||
|
||||
we use
|
||||
|
||||
set -g @resurrect-processes '"~yarn gulp test"' # OK
|
||||
|
||||
|
||||
#### nvm
|
||||
If you use `nvm` in your project, here is how you could config tmux-resurrect:
|
||||
|
||||
set -g @resurrect-processes '"~yarn gulp test->nvm use && gulp test"'
|
||||
|
||||
#### Another problem
|
||||
Let take a look at this example
|
||||
|
||||
set -g @resurrect-processes '\
|
||||
"~yarn gulp test->gulp test" \
|
||||
"~yarn gulp test-it->gulp test-it" \
|
||||
'
|
||||
**This will not work properly**, only `gulp test` is run, although you can see the command `node /path/to/yarn gulp test-it` is added correctly in `.tmux/resurrect/last` file.
|
||||
|
||||
The reason is when restoring program, the **command part after the dash `-` is ignored** so instead of command `gulp test-it`, the command `gulp test` which will be run.
|
||||
|
||||
A work around, for this problem until it's fixed, is:
|
||||
- the config should be like this:
|
||||
|
||||
set -g @resurrect-processes '\
|
||||
"~yarn gulp test->gulp test" \
|
||||
"~yarn gulp \"test-it\"->gulp test-it" \
|
||||
|
||||
- and in `.tmux/resurrect/last`, we should add quote to `test-it` word
|
||||
|
||||
... node:node /path/to/yarn gulp "test-it"
|
||||
|
||||
|
||||
### Restoring Mosh <a name="#mosh"></a>
|
||||
Mosh spawns a `mosh-client` process, so we need to specify that as the process to be resurrected.
|
||||
|
||||
set -g @resurrect-processes 'mosh-client'
|
||||
|
||||
Additionally a mosh-client strategy is provided to handle extracting the original arguments and re-run Mosh.
|
||||
19
tmux/plugins/tmux-ressurect/docs/restoring_shell_history.md
Normal file
19
tmux/plugins/tmux-ressurect/docs/restoring_shell_history.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Restoring shell history (experimental)
|
||||
|
||||
**Supported shells**: `bash` and `zsh`.
|
||||
|
||||
Enable feature with this option in `.tmux.conf`:
|
||||
|
||||
set -g @resurrect-save-shell-history 'on'
|
||||
|
||||
**Note**: the older `@resurrect-save-bash-history` is now an alias to
|
||||
`@resurrect-save-shell-history`.
|
||||
|
||||
Shell `history` for individual panes will now be saved and restored. Due to
|
||||
technical limitations, this only works for panes which have no program running
|
||||
in foreground when saving. `tmux-resurrect` will send history write command to
|
||||
each such pane.
|
||||
|
||||
To prevent these commands from being added to `bash` history
|
||||
themselves, add `HISTCONTROL=ignoreboth` to your `.bashrc`
|
||||
(this is set by default in Ubuntu).
|
||||
@@ -0,0 +1,15 @@
|
||||
# Restoring vim and neovim sessions
|
||||
|
||||
- save vim/neovim sessions. I recommend
|
||||
[tpope/vim-obsession](https://github.com/tpope/vim-obsession) (as almost every
|
||||
plugin, it works for both vim and neovim).
|
||||
- in `.tmux.conf`:
|
||||
|
||||
# for vim
|
||||
set -g @resurrect-strategy-vim 'session'
|
||||
# for neovim
|
||||
set -g @resurrect-strategy-nvim 'session'
|
||||
|
||||
`tmux-resurrect` will now restore vim and neovim sessions if `Session.vim` file
|
||||
is present.
|
||||
|
||||
15
tmux/plugins/tmux-ressurect/docs/save_dir.md
Normal file
15
tmux/plugins/tmux-ressurect/docs/save_dir.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Resurrect save dir
|
||||
|
||||
By default Tmux environment is saved to a file in `~/.tmux/resurrect` dir.
|
||||
Change this with:
|
||||
|
||||
set -g @resurrect-dir '/some/path'
|
||||
|
||||
Using environment variables or shell interpolation in this option is not
|
||||
allowed as the string is used literally. So the following won't do what is
|
||||
expected:
|
||||
|
||||
set -g @resurrect-dir '/path/$MY_VAR/$(some_executable)'
|
||||
|
||||
Only the following variables and special chars are allowed:
|
||||
`$HOME`, `$HOSTNAME`, and `~`.
|
||||
Reference in New Issue
Block a user