dotties/.vimrc
Andrea Rogers 52978bca4c vimrc: Make Terminal-spawning helpers and mappings
On Mac systems with MacPorts-installed Bash and Vim, the :ter[minal]
command doesn't pick up /etc/bashrc (aka /private/etc/bashrc) in my
login shell (Bash installed via MacPorts), so I've created helpers to
make it easier to spawn terminals.  These helpers and their stubby
siblings for non-Mac platforms are mapped to F1 and Shift+F1,
respectively.  I figure if I *really* need :help, I can just type :help.
It isn't hard.  Usually I trigger the :help <F1> mapping by mistake
anyways.

Note:
~~~~~
The helpers aren't perfect (you have to close the buffer manually after
Bash exits).
2023-11-15 13:01:49 -06:00

245 lines
8.1 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" Enable spell checking for markdown files, Git descriptions/commit
" messages, plain text files (.txt), and reStructuredText.
"au BufRead *.c setlocal spell
"setlocal spell spelllang=en_us
au BufRead,BufNewFile *.h setlocal spell
au BufRead,BufNewFile *.md setlocal spell
au BufRead,BufNewFile *.MD setlocal spell
au BufRead,BufNewFile *.txt setlocal spell
au BufRead,BufNewFile *.tex setlocal spell
au BufRead,BufNewFile *.rst setlocal spell
au BufRead,BufNewFile *.RST setlocal spell
au BufRead,BufNewFile description setlocal spell
au BufRead,BufNewFile *MSG setlocal spell
au BufRead,BufNewFile COMMIT* setlocal spell
au BufRead,BufNewFile *.markdown setlocal spell
function! MacPorty()
set fileencoding=utf-8
" set ft=portfile
set filetype=tcl
set shiftwidth=4
set tabstop=4
set softtabstop=4
endfunction
au BufRead,BufNewFile *Portfile call MacPorty()
" Vundle reqs
set nocompatible
filetype off
" Enable Vundle
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" Vundle manages Vundle
Plugin 'VundleVim/Vundle.vim'
" Rainbow Parenthesis!
Plugin 'kien/rainbow_parentheses.vim'
" System-wide ctags
Plugin 'ntnn/vim-ctagser'
" Rust
Plugin 'rust-lang/rust.vim'
" Vim LSP/Async auto-complete
Plugin 'prabirshrestha/vim-lsp'
Plugin 'prabirshrestha/asyncomplete.vim'
Plugin 'prabirshrestha/asyncomplete-lsp.vim'
call vundle#end()
"""""""""""""""""""""""""""""""
" Async Auto-complete Stuff "
"""""""""""""""""""""""""""""""
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
noremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
""""""""""""""""""""""""""""""""""""""""""""""""
" LSP Stuff "
""""""""""""""""""""""""""""""""""""""""""""""""
" Python
if executable('pylsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'pylsp',
\ 'cmd': {server_info->['pylsp']},
\ 'allowlist': ['python'],
\ })
endif
" Perl
if executable('pls')
au User lsp_setup call lsp#register_server({
\ 'name': 'pls',
\ 'cmd': {server_info->['pls']},
\ 'allowlist': ['perl'],
\ })
endif
" Bash
if executable('bash-language-server')
au User lsp_setup call lsp#register_server({
\ 'name': 'bash-language-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'bash-language-server start']},
\ 'allowlist': ['sh', 'bash'],
\ })
endif
" Vimscript
if executable('vimscript-language-server')
augroup LspVim
autocmd!
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'vimscript-language-server',
\ 'cmd': {server_info->['vimscript-language-server']},
\ 'allowlist': ['vim'],
\ 'initialization_options': {
\ 'vimruntime': $VIMRUNTIME,
\ 'runtimepath': &rtp,
\ }})
augroup END
endif
" C/C++/Objective-C/Objective-C++
if executable('clangd')
au User lsp_setup call lsp#register_server({
\ 'name': 'clangd',
\ 'cmd': {server_info->['clangd']},
\ 'allowlist': ['c', 'cpp', 'objc', 'objcpp'],
\ })
elseif executable('ccls')
au User lsp_setup call lsp#register_server({
\ 'name': 'ccls',
\ 'cmd': {server_info->['ccls']},
\ 'root_uri': {server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'compile_commands.json'))},
\ 'initialization_options': {},
\ 'whitelist': ['c', 'cpp', 'objc', 'objcpp', 'cc'],
\ })
endif
"
" Rust
if executable('rust-analyzer')
au User lsp_setup call lsp#register_server({
\ 'name': 'rust-analyzer',
\ 'cmd': {server_info->['rust-analyzer']},
\ 'allowlist': ['rust'],
\ })
endif
" LSP config
function! s:on_lsp_buffer_enabled() abort
setlocal omnifunc=lsp#complete
setlocal signcolumn=yes
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
nmap <buffer> gd <plug>(lsp-definition)
nmap <buffer> gs <plug>(lsp-document-symbol-search)
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
nmap <buffer> gr <plug>(lsp-references)
nmap <buffer> gi <plug>(lsp-implementation)
nmap <buffer> gt <plug>(lsp-type-definition)
nmap <buffer> <leader>rn <plug>(lsp-rename)
nmap <buffer> [g <plug>(lsp-previous-diagnostic)
nmap <buffer> ]g <plug>(lsp-next-diagnostic)
nmap <buffer> K <plug>(lsp-hover)
"nnoremap <buffer> <expr><c-f> lsp#scroll(+4)
"nnoremap <buffer> <expr><c-d> lsp#scroll(-4)
let g:lsp_format_sync_timeout = 1000
autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync')
" refer to doc to add more commands
endfunction
augroup lsp_install
au!
" call s:on_lsp_buffer_enabled on languages with a registered server.
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END
""""""""""""""""""""""""""""""""""""""""""""""""
" Trailing whitespace and tab hilighting
set list
set listchars=trail:▓,tab:\:.
""""""""""""""""
" LaTeX macros "
""""""""""""""""
function! TexMacros()
let @c = 'o\begin{<7B>kb{multicols}{2}
\end{multicols}k'
let @d = 'o\begin{description}
\end{description}kkj'
let @e = 'o\gbe<EFBFBD>kb<EFBFBD>kb<EFBFBD>kbbegin <20>kb{enumerate}
\end{enumerate}k'
let @f = 'a\frac{'
let @i = 'o\item <20>kb'
let @m = 'i\documentclass{book}
\usepackage[sortcites=true,sorting=nyt,backend=biber]{biblatex}
\usepackage[normalem]{ulem}
\usepackage[many]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
%\pgfplotsset{compat=1.11}
\usepackage{multicol}
\usepackage{textcomp}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{dingbat}
\usepackage{caption}
\usepackage{framed}
\usepackage{graphicx}
\usepackage{setspace}
%\usepackage{xintexpr}
\usepackage{multirow}
\usepackage{dcolumn}
\usepackage{xcolor,cancel}
\newcommand\hcancel[2][black]{\setbox0=\hbox{$#2$}%
\rlap{\raisebox{.45\ht0}{\textcolor{#1}{\rule{\wd0}{1pt}}}}#2}
%\usepackage[table,cancel]{xcolor}
%\definecolor{lightgray}{gray}{0.9}
\title{Math 105 Homework}
\author{targetdisk}
\addbibresource{105.bib}
\begin{document}
\newcolumntype{2}{D{.}{}{2.0}}
\maketitle
\tableofcontents
\printbibliography <20>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kbliography
\end{document}<1B><>akkkkkkkkkkkkkkkkjjjjjjjjkjjjjkjjj^'
let @p = 'o\begin{itemize}
\end{itemize}k'
let @s = 'a\sqrt{'
let @y = 'o[<5B>kb\[
\renewcommand\arraystretch{1.5}
\setlength\doubleruleseo<EFBFBD>kbp{0pt}
\begin{array}{rrrrrr}
\multicolumn{1}{r|}
{6} & <20>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kbdiv} & <20>kb<EFBFBD>kb<EFBFBD>kb <20>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb & & & & &<26>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb \\\cline{2-6}
<20>kb& & & & & \\\l<EFBFBD>kbcline{2-6}
& & & & &
\end{array}
\]kkkkwwwwwbbhhllllllhlhlhr[r{lllr}jkhhhhhhhhlhl'
endfunction
augroup latex
autocmd!
autocmd BufNewFile,BufRead *.tex call TexMacros()
augroup END
" For new LaTeX files
function! TexTabs()
set expandtab tabstop=4 shiftwidth=4
endfunction
""""""""""""""""
" For two-space indenting
function! TwoTabs()
set expandtab tabstop=2 shiftwidth=2
endfunction
syntax on
set ruler
set number
"set autoindent
set cursorline
" Filetype auto-indent
if has("autocmd")
filetype on
filetype plugin indent on
endif
" Mac-specific stuffs
if has('macunix')
" Hacks for MacPorts Bash to actually work.
function! Terminal()
execute 'ter bash --rcfile /etc/bashrc -i'
endfunction
function! VertTerminal()
execute 'vert ter bash --rcfile /etc/bashrc -i'
endfunction
else
function! Terminal()
execute 'ter'
endfunction
function! VertTerminal()
execute 'vert ter'
endfunction
endif
" Super special mappings
map <F1> :call Terminal()<cr>
map <S-F1> :call VertTerminal()<cr>
map <F2> :!git grep -n '<cword>' $(git rev-parse --show-toplevel)<cr>
map <F3> :!git blame %<cr>
map <F5> :w!<cr>:!xelatex %<cr>
map <F9> :w!<cr>:!md-previewer %<cr>
map <F12> :mksession!<cr>
" Rainbow Parenthesis settings
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
" Read my lips: NO MOUSE
autocmd BufEnter * set mouse=