]> git.rmz.io Git - dotfiles.git/blob - vim/plugin/terminal.vim
wezterm: disable ALT+Enter binding to ToggleFullscreen
[dotfiles.git] / vim / plugin / terminal.vim
1 " adapted from https://www.reddit.com/r/vim/comments/op677w/making_neovim_terminal_behave_like_vim_terminal/h642b6b/
2
3 function! s:TermEnter(_)
4 if getbufvar(bufnr(), 'term_insert', 0)
5 startinsert
6 call setbufvar(bufnr(), 'term_insert', 0)
7 endif
8 endfunction
9
10 function! <SID>TermExec(cmd)
11 let b:term_insert = 1
12 execute a:cmd
13 endfunction
14
15 if !has('nvim')
16 command! -nargs=* T terminal <args>
17 command! -nargs=* VT vertical terminal <args>
18 else
19 command! -nargs=* T split | terminal <args>
20 command! -nargs=* VT vsplit | terminal <args>
21
22 tnoremap <silent> <C-W>. <C-W>
23 tnoremap <silent> <C-W><C-.> <C-W>
24 tnoremap <silent> <C-W>\ <C-\>
25 tnoremap <silent> <C-W><C-\> <C-\>
26 tnoremap <silent> <C-W>N <C-\><C-N>
27 tnoremap <silent> <C-W> <C-\><C-N>:call <SID>TermExec('call feedkeys(":")')<CR>
28 tnoremap <silent> <C-W><C-W> <cmd>call <SID>TermExec('wincmd w')<CR>
29 tnoremap <silent> <C-W>W <cmd>call <SID>TermExec('wincmd W')<CR>
30 tnoremap <silent> <C-L> <cmd>call <SID>TermExec('wincmd w')<CR>
31 tnoremap <silent> <C-H> <cmd>call <SID>TermExec('wincmd W')<CR>
32 tnoremap <silent> <C-W>h <cmd>call <SID>TermExec('wincmd h')<CR>
33 tnoremap <silent> <C-W>j <cmd>call <SID>TermExec('wincmd j')<CR>
34 tnoremap <silent> <C-W>k <cmd>call <SID>TermExec('wincmd k')<CR>
35 tnoremap <silent> <C-W>l <cmd>call <SID>TermExec('wincmd l')<CR>
36 tnoremap <silent> <C-W><C-H> <cmd>call <SID>TermExec('wincmd h')<CR>
37 tnoremap <silent> <C-W><C-J> <cmd>call <SID>TermExec('wincmd j')<CR>
38 tnoremap <silent> <C-W><C-K> <cmd>call <SID>TermExec('wincmd k')<CR>
39 tnoremap <silent> <C-W><C-L> <cmd>call <SID>TermExec('wincmd l')<CR>
40 tnoremap <silent> <C-W>gt <cmd>call <SID>TermExec('tabn')<CR>
41 tnoremap <silent> <C-W>gT <cmd>call <SID>TermExec('tabp')<CR>
42 endif
43
44 augroup terminal
45 au!
46 if !has('nvim')
47 autocmd TerminalOpen * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
48 else
49 autocmd TermOpen * lua if vim.startswith(vim.api.nvim_buf_get_name(0), "term://") then vim.cmd("startinsert") end
50 autocmd TermOpen * if &buftype == 'terminal' | setlocal bufhidden=hide | endif
51 autocmd CmdlineLeave,WinEnter,BufWinEnter * call timer_start(0, function('s:TermEnter'), {})
52 endif
53 augroup END