You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
303 lines
7.7 KiB
303 lines
7.7 KiB
" presentation .vimrc from Sebastian Daschner https://www.youtube.com/watch?v=GDa7hrbcCB8
|
|
|
|
set encoding=utf-8
|
|
set tabstop=2
|
|
set shiftwidth=2
|
|
set expandtab
|
|
set smarttab
|
|
set autoindent
|
|
set nowrap
|
|
set smartcase
|
|
set showmatch
|
|
set title
|
|
set ruler
|
|
set et
|
|
set number relativenumber
|
|
set incsearch
|
|
set hlsearch
|
|
set autoread
|
|
set autowrite
|
|
set nobackup
|
|
set nowritebackup
|
|
set noswapfile
|
|
set nocompatible
|
|
set backspace=indent,eol,start
|
|
" title required for i3 status checking, modified indicator at end
|
|
"set titlestring=%t%(\ \(%F\)%)%a\ -\ VIM%(\ %M%)
|
|
set titlestring=%(%F%)%a\ -\ VIM%(\ %M%)
|
|
set t_Co=16
|
|
" undo cursorlinenr underline (was introduced Aug '19)
|
|
hi CursorLineNr cterm=bold
|
|
|
|
|
|
|
|
" allows buffers to be hidden if you modified a buffer
|
|
set hidden
|
|
filetype off
|
|
syntax on
|
|
|
|
set norelativenumber
|
|
set nonumber
|
|
set noshowmode
|
|
set noshowcmd
|
|
set nohidden
|
|
set noruler
|
|
|
|
" removes possibility to define function keys that start with <Esc>
|
|
" see if has implications
|
|
"set noesckeys
|
|
|
|
|
|
" Vundle
|
|
"<<<<<<<<<<<<<<<<<<<<
|
|
"set rtp+=~/.vim/bundle/Vundle.vim
|
|
"call vundle#begin()
|
|
"
|
|
"" let Vundle manage Vundle, required
|
|
"Plugin 'VundleVim/Vundle.vim'
|
|
"
|
|
"Plugin 'tpope/vim-surround'
|
|
"Plugin 'tpope/vim-repeat'
|
|
"
|
|
"" UltiSnips for completion / templating
|
|
"Plugin 'SirVer/ultisnips'
|
|
"
|
|
"" Snippets are separated from the engine. Add this if you want them:
|
|
"Plugin 'sdaschner/vim-snippets'
|
|
"Plugin 'ervandew/supertab'
|
|
|
|
let g:SuperTabDefaultCompletionType = '<C-n>'
|
|
let g:SuperTabCrMapping = 0
|
|
let g:UltiSnipsExpandTrigger = '<tab>'
|
|
let g:UltiSnipsJumpForwardTrigger = '<tab>'
|
|
let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
|
|
|
|
|
|
" All of your Plugins must be added before the following line
|
|
" call vundle#end()
|
|
filetype plugin indent on
|
|
|
|
" something messes up this setting in the plugins
|
|
set expandtab
|
|
|
|
|
|
|
|
let mapleader = ","
|
|
|
|
nmap <S-Enter> O<Esc>
|
|
nmap <CR> o<Esc>
|
|
|
|
inoremap <Up> <NOP>
|
|
inoremap <Down> <NOP>
|
|
inoremap <Left> <NOP>
|
|
inoremap <Right> <NOP>
|
|
noremap <Up> <NOP>
|
|
noremap <Down> <NOP>
|
|
|
|
" presentation mode
|
|
noremap <Left> :silent bp<CR> :redraw!<CR>
|
|
noremap <Right> :silent bn<CR> :redraw!<CR>
|
|
nmap <F5> :set relativenumber! number! showmode! showcmd! hidden! ruler!<CR>
|
|
nmap <F2> :call DisplayPresentationBoundaries()<CR>
|
|
nmap <F3> :call FindExecuteCommand()<CR>
|
|
|
|
" jump to slides
|
|
nmap <F9> :call JumpFirstBuffer()<CR> :redraw!<CR>
|
|
nmap <F10> :call JumpSecondToLastBuffer()<CR> :redraw!<CR>
|
|
nmap <F11> :call JumpLastBuffer()<CR> :redraw!<CR>
|
|
|
|
|
|
" move lines with Ctrl + (Shift) +J/K
|
|
nnoremap <C-j> :m +1<CR>
|
|
nnoremap <C-k> :m -2<CR>
|
|
inoremap <C-j> <Esc>:m +1<CR>gi
|
|
inoremap <C-k> <Esc>:m -2<CR>gi
|
|
vnoremap <C-j> :m '>+1<CR>gvgv
|
|
vnoremap <C-k> :m '<-2<CR>gvgv
|
|
|
|
" opens a new empty buffer
|
|
nmap <leader>t :enew<CR>
|
|
" moves to the next buffer
|
|
nmap <leader>l :bnext<CR>
|
|
" moves to the previous buffer
|
|
nmap <leader>h :bprevious<CR>
|
|
" closes the current buffer, moves to the previous one
|
|
nmap <leader>bd :bd<CR>
|
|
" forces buffer close
|
|
nmap <leader>BD :bd!<CR>
|
|
" shows all open buffers and their status
|
|
nmap <leader>bl :ls<CR>
|
|
" toggles the paste mode
|
|
nmap <C-p> :set paste!<CR>
|
|
" toggles word wrap
|
|
nmap <C-w> :set wrap! linebreak<CR>
|
|
" toggles spell checking
|
|
nmap <C-]> :set spell! spelllang=en_us<CR>
|
|
" opens the last buffer
|
|
nnoremap <leader><leader> <C-^>
|
|
" adds a line of <
|
|
nmap <leader>a :normal 20i<<CR>
|
|
" makes Ascii art font
|
|
nmap <leader>F :.!toilet --directory /usr/share/figlet -w 200 -f pagga<CR>
|
|
nmap <leader>f :.!toilet --directory /usr/share/figlet -w 200 -f future<CR>i<CR><CR><CR><ESC><C-v>jjI<tab><tab><tab><tab><tab><tab><tab><ESC>
|
|
" makes Ascii border
|
|
nmap <leader>1 :.!toilet -w 200 -f term -F border<CR>
|
|
|
|
" system clipboard
|
|
vmap <leader>y "+y
|
|
vmap <leader>d "+d
|
|
nmap <leader>y "+yy
|
|
nmap <leader>p "+p
|
|
nmap <leader>P "+P
|
|
vmap <leader>p "+p
|
|
vmap <leader>P "+P
|
|
|
|
nmap <leader>d <C-d>
|
|
nmap <leader>u <C-u>
|
|
vmap <leader>d <C-d>
|
|
vmap <leader>u <C-u>
|
|
|
|
" file operations
|
|
nmap <C-s> :w<CR>
|
|
nmap <C-q> :q<CR>
|
|
|
|
let &t_ti.="\e[1 q"
|
|
let &t_SI.="\e[5 q"
|
|
let &t_EI.="\e[1 q"
|
|
let &t_te.="\e[0 q"
|
|
|
|
" search highlighting color
|
|
highlight Search ctermfg=grey ctermbg=red
|
|
|
|
" removes search highlighting
|
|
nnoremap <silent> <C-l> :nohl<CR><C-l>
|
|
|
|
" execute command
|
|
nmap <leader><Enter> !!zsh<CR>
|
|
|
|
" AsciiDoc preview
|
|
nmap <leader>v :!asciidoc-view %<CR><CR>
|
|
|
|
" Transparent editing of gpg encrypted files.
|
|
" By Wouter Hanegraaff
|
|
augroup encrypted
|
|
au!
|
|
|
|
" First make sure nothing is written to ~/.viminfo while editing
|
|
" an encrypted file.
|
|
autocmd BufReadPre,FileReadPre *.gpg set viminfo=
|
|
" We don't want a swap file, as it writes unencrypted data to disk
|
|
autocmd BufReadPre,FileReadPre *.gpg set noswapfile
|
|
|
|
" Switch to binary mode to read the encrypted file
|
|
autocmd BufReadPre,FileReadPre *.gpg set bin
|
|
autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2
|
|
" (If you use tcsh, you may need to alter this line.)
|
|
autocmd BufReadPost,FileReadPost *.gpg '[,']!gpg --decrypt 2> /dev/null
|
|
|
|
" Switch to normal mode for editing
|
|
autocmd BufReadPost,FileReadPost *.gpg set nobin
|
|
autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save
|
|
autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r")
|
|
|
|
" Convert all text to encrypted text before writing
|
|
" (If you use tcsh, you may need to alter this line.)
|
|
autocmd BufWritePre,FileWritePre *.gpg '[,']!gpg --default-recipient-self -ae 2>/dev/null
|
|
" Undo the encryption so we are back in the normal text, directly
|
|
" after the file has been written.
|
|
autocmd BufWritePost,FileWritePost *.gpg u
|
|
augroup END
|
|
|
|
function! JumpFirstBuffer()
|
|
execute "buffer 1"
|
|
endfunction
|
|
|
|
function! JumpSecondToLastBuffer()
|
|
execute "buffer " . (len(Buffers()) - 1)
|
|
endfunction
|
|
|
|
function! JumpLastBuffer()
|
|
execute "buffer " . len(Buffers())
|
|
endfunction
|
|
|
|
function! Buffers()
|
|
let l:buffers = filter(range(1, bufnr('$')), 'bufexists(v:val)')
|
|
return l:buffers
|
|
endfunction
|
|
|
|
" Automatically source an eponymous <file>.vim or <file>.<ext>.vim if it exists, as a bulked-up
|
|
" modeline and to provide file-specific customizations.
|
|
function! s:AutoSource()
|
|
let l:testedScripts = ['syntax.vim']
|
|
if expand('<afile>:e') !=# 'vim'
|
|
" Don't source the edited Vimscript file itself.
|
|
call add(l:testedScripts, 'syntax.vim')
|
|
endif
|
|
|
|
for l:filespec in l:testedScripts
|
|
if filereadable(l:filespec)
|
|
execute 'source' fnameescape(l:filespec)
|
|
endif
|
|
endfor
|
|
|
|
call FindExecuteCommand()
|
|
endfunction
|
|
augroup AutoSource
|
|
autocmd! BufNewFile,BufRead * call <SID>AutoSource()
|
|
augroup END
|
|
|
|
|
|
set foldtext=SimpleFoldText()
|
|
set fillchars=fold:\
|
|
function SimpleFoldText()
|
|
let line = getline(v:foldstart)
|
|
let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
|
|
return sub . ' >>>>>>'
|
|
endfunction
|
|
|
|
set foldlevelstart=20
|
|
set foldmethod=expr
|
|
set foldexpr=ListFolds()
|
|
|
|
function! ListFolds()
|
|
let thisline = getline(v:lnum)
|
|
if match(thisline, '^- ') >= 0
|
|
return ">1"
|
|
elseif match(thisline, '^ - ') >= 0
|
|
return ">2"
|
|
elseif match(thisline, '^ - ') >= 0
|
|
return ">3"
|
|
elseif match(thisline, '^ - ') >= 0
|
|
return ">4"
|
|
elseif match(thisline, '^ - ') >= 0
|
|
return ">5"
|
|
endif
|
|
return "0"
|
|
endfunction
|
|
|
|
|
|
let g:presentationBoundsDisplayed = 0
|
|
function! DisplayPresentationBoundaries()
|
|
if g:presentationBoundsDisplayed
|
|
match
|
|
set colorcolumn=0
|
|
let g:presentationBoundsDisplayed = 0
|
|
else
|
|
highlight lastoflines ctermbg=darkred
|
|
highlight topicborder ctermbg=darkblue
|
|
match lastoflines /\%23l/
|
|
match topicborder /\%9l/
|
|
set colorcolumn=13,80
|
|
let g:presentationBoundsDisplayed = 1
|
|
endif
|
|
endfunction
|
|
|
|
function! FindExecuteCommand()
|
|
let line = search('\S*!'.'!:.*')
|
|
if line > 0
|
|
let command = substitute(getline(line), "\S*!"."!:*", "", "")
|
|
execute "silent !". command
|
|
execute "normal gg0"
|
|
redraw
|
|
endif
|
|
endfunction
|