nvim-toggle-terminal
nvim-toggle-terminal copied to clipboard
NeoVim plugin that toggles a terminal buffer in the current window maintaining the same shell instance
Toggle terminal buffer or create new one if there is none. It keeps the shell session between toggles.
You have to set your own key bindings. For example:
nnoremap <silent> <C-z> :ToggleTerminal<Enter>
tnoremap <silent> <C-z> <C-\><C-n>:ToggleTerminal<Enter>
Commands
Command | Description |
---|---|
:ToggleTerminal | Toggles a terminal which is the same shell instance regardless of where it is called |
:ToggleTabTerminal | Toggles a tab specific terminal instance. It will have a different shell session for each tab |
:ToggleWindowTerminal | Toggles a window specific terminal instance. It will have a different shell session for each window |
Settings
Setting | Description | Default |
---|---|---|
g:preserve_alternate_buffer | Preserve the alternate_buffer of the current window when opening and closing the terminal | 1 |
g:auto_start_insert | enter insert mode automatically when given focus. Uses BufEnter event | 0 |
g:open_in_insert_mode | start in insert mode when you open the terminal. Uses BufWinEnter event | 1 |
Instalation
Use your favourite plugin manager. For example, using Plug:
call plug#begin()
Plug 'caenrique/nvim-toggle-terminal'
call plug#end()
Other useful settings
Some extra setting that can be used in conjuction with this plugin for convenience:
Make your life easier by mapping ESC in terminal mode. And if you use fzf, this will not break the ESC behaviour:
tnoremap <expr> <Esc> (&filetype == "fzf") ? "<Esc>" : "<c-\><c-n>"
Use this to switch back and forth between files and terminal without the anoying No write since last change (add ! to override)
message with unsaved changes:
set autowriteall
Use nvr to avoid nesting nvim in Terminal buffers. This should go in your .bashrc
or similar:
nvim_wrapper() {
NVIM=`which nvim`
if test -z $NVIM_LISTEN_ADDRESS; then
$NVIM $@
else
if test -z $@; then
nvr -l -c new
else
nvr -l $@
fi
fi
}
alias nvim="nvim_wrapper"