2022-06-22 14:49:50 +00:00
|
|
|
" Anthony Perkins
|
2024-01-26 11:02:00 +00:00
|
|
|
" Config for NeoVIM.
|
|
|
|
|
2022-12-10 22:56:03 +00:00
|
|
|
" Distributed under the VIM license. See ':help license' for a copy. Files under
|
2023-03-27 22:09:11 +00:00
|
|
|
" pack/ have their own licenses.
|
2024-01-26 11:02:00 +00:00
|
|
|
|
2017-04-06 08:03:26 +00:00
|
|
|
" Includes parts from Tim Pope's «sensible.vim»
|
|
|
|
" <https://github.com/tpope/vim-sensible>.
|
|
|
|
|
2024-01-26 11:02:00 +00:00
|
|
|
" This should be gradually migrated to init.lua. Many settings in this file will
|
|
|
|
" be redundant for NeoVIM because the defaults have changed, or the setting will
|
|
|
|
" not apply.
|
|
|
|
|
2022-06-22 14:43:01 +00:00
|
|
|
"===============================================================================
|
2019-06-17 18:30:50 +00:00
|
|
|
" Set this first to avoid overwriting later settings.
|
|
|
|
set nocompatible
|
|
|
|
|
2022-06-22 14:43:01 +00:00
|
|
|
"===============================================================================
|
2017-04-10 13:04:34 +00:00
|
|
|
" General settings for all builds.
|
|
|
|
|
2022-06-22 11:12:32 +00:00
|
|
|
" Set colour levels for different terminals.
|
|
|
|
set t_Co=256
|
|
|
|
set termguicolors
|
|
|
|
|
2023-05-15 10:56:29 +00:00
|
|
|
" Disable arrow keys.
|
|
|
|
inoremap <Down> <Nop>
|
|
|
|
inoremap <Left> <Nop>
|
|
|
|
inoremap <Right> <Nop>
|
|
|
|
inoremap <Up> <Nop>
|
|
|
|
nnoremap <Down> <Nop>
|
|
|
|
nnoremap <Left> <Nop>
|
|
|
|
nnoremap <Right> <Nop>
|
|
|
|
nnoremap <Up> <Nop>
|
|
|
|
|
2020-10-30 13:39:46 +00:00
|
|
|
inoremap <C-BS> <C-W>
|
2020-10-30 13:40:17 +00:00
|
|
|
inoremap <C-a> <C-O>^
|
|
|
|
inoremap <C-e> <C-O>$
|
2023-05-30 12:35:08 +00:00
|
|
|
inoremap <F11> <C-O>:call ACPToggleMargins()<CR>
|
2020-10-28 12:38:31 +00:00
|
|
|
inoremap <F12> <C-\><C-O>:w<CR>
|
2023-05-09 14:17:07 +00:00
|
|
|
inoremap <F2> TODO:<Space>
|
2022-06-07 09:33:23 +00:00
|
|
|
inoremap <F9> <C-R>=strftime('%Y-%m-%dT%H:%M')<CR>
|
2023-05-30 12:35:08 +00:00
|
|
|
inoremap <S-F11> <C-O>:call ACPToggleMargins()<CR>
|
2023-05-09 14:17:07 +00:00
|
|
|
inoremap <S-F2> #*TODO:*#<Space>
|
2019-06-19 08:50:22 +00:00
|
|
|
|
2023-03-07 21:18:38 +00:00
|
|
|
nnoremap <F10> :Limelight!!<CR>
|
|
|
|
nnoremap <F11> :call ACPToggleMargins()<CR>
|
2020-10-28 12:38:31 +00:00
|
|
|
nnoremap <F12> :w<CR>
|
2023-03-27 22:08:00 +00:00
|
|
|
nnoremap <F2> :call ACPActodoTodo()<CR>
|
2023-05-09 20:51:42 +00:00
|
|
|
nnoremap <F4> :vsplit<CR>
|
2024-05-24 08:58:17 +00:00
|
|
|
nnoremap <F6> :set invhlsearch<CR>
|
2023-03-07 10:54:07 +00:00
|
|
|
nnoremap <F7> :call ACPToggleSpellEnUs()<CR>
|
2023-05-18 21:55:03 +00:00
|
|
|
nnoremap <F9> :%!clang-format<CR>
|
|
|
|
nnoremap <Leader>B :bprevious<CR>
|
|
|
|
nnoremap <Leader>b :bnext<CR>
|
2023-05-15 07:39:47 +00:00
|
|
|
nnoremap <S-F11> :call ACPToggleMargins()<CR>
|
2023-03-27 22:08:00 +00:00
|
|
|
nnoremap <S-F2> :call ACPAdocTodo()<CR>
|
2023-05-09 20:51:42 +00:00
|
|
|
nnoremap <S-F4> :split<CR>
|
2023-03-07 10:54:07 +00:00
|
|
|
nnoremap <S-F7> :call ACPToggleSpellEnGb()<CR>
|
2023-05-15 10:50:37 +00:00
|
|
|
|
2023-05-18 21:55:03 +00:00
|
|
|
vnoremap <F9> :!clang-format<CR>
|
2019-06-19 08:50:22 +00:00
|
|
|
|
2023-03-14 10:03:19 +00:00
|
|
|
map <C-ScrollWheelDown> <C-F>
|
|
|
|
map <C-ScrollWheelUp> <C-B>
|
|
|
|
map <S-ScrollWheelDown> <C-E>
|
|
|
|
map <S-ScrollWheelUp> <C-Y>
|
|
|
|
map <ScrollWheelDown> 3<C-E>
|
|
|
|
map <ScrollWheelUp> 3<C-Y>
|
|
|
|
|
2021-03-19 13:29:45 +00:00
|
|
|
" Text wrapping and margin settings. Setting tw=72 is ideal for emails or
|
|
|
|
" anything that will be read in a Terminal, while tw=100 is better for code or
|
2022-06-22 14:43:01 +00:00
|
|
|
" for general text that will be viewed in a GUI. If printing, an A4-sized page
|
|
|
|
" should fit 100 columns at 8pt or 80 columns at 10pt, in Courier or Liberation
|
|
|
|
" Mono fonts.
|
2023-02-06 14:50:41 +00:00
|
|
|
"
|
|
|
|
" You can highlight line-end columns with colorcolumn (cc), which should be one
|
|
|
|
" larger than the textwidth. E.g. to include a 'margin-bell' line also:
|
|
|
|
" set tw=80 cc=73,81
|
|
|
|
" Clear the colorcolumn highlighting with cc=0.
|
2023-02-06 15:30:14 +00:00
|
|
|
set colorcolumn=0
|
2023-05-23 08:37:36 +00:00
|
|
|
set textwidth=0 " Suggestions: 72, 80, 100
|
2021-03-19 13:29:45 +00:00
|
|
|
|
|
|
|
" All other settings.
|
2015-10-13 10:01:04 +00:00
|
|
|
set autoindent
|
2017-04-06 08:03:26 +00:00
|
|
|
set autoread
|
|
|
|
set backspace=indent,eol,start
|
2021-03-09 22:15:25 +00:00
|
|
|
set cmdheight=1
|
2015-10-23 09:25:29 +00:00
|
|
|
set directory=$TEMP//,/tmp//,.
|
2017-04-06 08:03:26 +00:00
|
|
|
set display+=lastline
|
2015-10-19 11:52:42 +00:00
|
|
|
set encoding=utf-8
|
2022-10-13 08:41:58 +00:00
|
|
|
set expandtab
|
2021-11-15 19:29:32 +00:00
|
|
|
set formatoptions-=t
|
2021-03-09 22:15:25 +00:00
|
|
|
set hidden
|
2017-04-06 08:03:26 +00:00
|
|
|
set history=1000
|
2015-10-19 11:52:42 +00:00
|
|
|
set ignorecase
|
2017-04-06 08:03:26 +00:00
|
|
|
set incsearch
|
|
|
|
set laststatus=2
|
2015-10-13 10:01:04 +00:00
|
|
|
set linebreak
|
2015-10-19 11:52:42 +00:00
|
|
|
set list
|
2022-06-23 10:56:51 +00:00
|
|
|
set listchars=trail:·,extends:→,precedes:←,nbsp:␣
|
2019-06-17 08:38:01 +00:00
|
|
|
set modelines=0
|
2021-03-09 22:15:25 +00:00
|
|
|
set nobackup
|
2022-09-12 21:33:28 +00:00
|
|
|
set nojoinspaces
|
2019-06-17 08:38:01 +00:00
|
|
|
set nomodeline
|
2021-03-09 22:15:25 +00:00
|
|
|
set nowritebackup
|
2017-04-06 08:03:26 +00:00
|
|
|
set nrformats-=octal
|
2024-06-07 13:38:34 +00:00
|
|
|
set number
|
2024-06-11 06:58:17 +00:00
|
|
|
set numberwidth=8
|
2017-04-06 08:03:26 +00:00
|
|
|
set ruler
|
2023-03-14 10:03:31 +00:00
|
|
|
set scrolloff=5
|
2017-04-06 08:03:26 +00:00
|
|
|
set sessionoptions-=options
|
2022-11-28 22:34:38 +00:00
|
|
|
set shiftwidth=4
|
2020-10-30 13:36:11 +00:00
|
|
|
set shortmess+=c
|
2015-10-19 11:52:42 +00:00
|
|
|
set smartcase
|
2017-04-06 08:03:26 +00:00
|
|
|
set smarttab
|
2015-10-22 13:10:06 +00:00
|
|
|
set spl=en_gb nospell
|
2023-05-09 20:51:42 +00:00
|
|
|
set splitbelow
|
|
|
|
set splitright
|
2019-08-05 10:18:34 +00:00
|
|
|
set tabstop=8
|
2024-11-09 22:40:17 +00:00
|
|
|
set title
|
2024-11-09 22:45:30 +00:00
|
|
|
set titleold=Terminal
|
2017-04-06 08:03:26 +00:00
|
|
|
set ttimeout
|
|
|
|
set ttimeoutlen=100
|
2015-10-19 11:52:42 +00:00
|
|
|
set ttyfast
|
2020-10-30 13:36:11 +00:00
|
|
|
set updatetime=300
|
2023-02-09 23:05:17 +00:00
|
|
|
set wrap
|
2017-04-10 11:33:26 +00:00
|
|
|
|
2023-05-30 08:28:44 +00:00
|
|
|
" Set theme for Terminal.
|
|
|
|
set background=dark
|
|
|
|
|
2022-06-22 14:43:01 +00:00
|
|
|
"===============================================================================
|
2017-04-10 13:04:34 +00:00
|
|
|
" General settings for non-minimal Vim builds.
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('eval')
|
2022-12-10 22:56:03 +00:00
|
|
|
" Protect commands that are only available when +eval is enabled.
|
|
|
|
" Technically only 'if 1' would be required, as 'has()' is provided by
|
|
|
|
" +eval, but this is clearer.
|
2023-05-10 09:30:38 +00:00
|
|
|
|
2022-12-10 22:56:03 +00:00
|
|
|
filetype plugin indent on
|
2023-02-06 14:50:41 +00:00
|
|
|
let g:limelight_default_coefficient=0.8
|
2022-12-10 22:56:03 +00:00
|
|
|
let g:nroff_is_groff=1
|
|
|
|
let g:tempus_enforce_background_color=1
|
2024-06-07 13:33:57 +00:00
|
|
|
colorscheme tempus_totus
|
2024-04-17 12:56:52 +00:00
|
|
|
highlight Comment gui=NONE
|
2023-05-09 20:51:42 +00:00
|
|
|
|
2024-11-09 22:52:56 +00:00
|
|
|
" Disable netrw completely.
|
|
|
|
let loaded_netrw=1
|
|
|
|
let loaded_netrwPlugin=1
|
2023-05-10 09:49:06 +00:00
|
|
|
|
2023-04-03 15:07:13 +00:00
|
|
|
function! ACPToggleMargins()
|
2023-05-12 08:01:52 +00:00
|
|
|
execute "set colorcolumn=" . (&colorcolumn == "0" ? "73,81" : (&colorcolumn == "73,81" ? "101" : "0"))
|
2023-05-23 08:37:36 +00:00
|
|
|
execute "set textwidth=" . (&colorcolumn == "73,81" ? "80" : (&colorcolumn == "101" ? "100" : "0"))
|
2023-05-15 07:39:47 +00:00
|
|
|
echo "tw=" . &textwidth . " & cc=" . &colorcolumn
|
2023-04-21 10:20:38 +00:00
|
|
|
endfunction
|
|
|
|
|
2023-04-03 15:07:13 +00:00
|
|
|
function! ACPToggleSpellEnUs()
|
|
|
|
if &spell == 0
|
|
|
|
setlocal spell spelllang=en_us
|
|
|
|
echo "Spelling ON (en_US)"
|
|
|
|
else
|
|
|
|
setlocal nospell
|
|
|
|
echo "Spelling OFF"
|
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! ACPToggleSpellEnGb()
|
|
|
|
if &spell == 0
|
|
|
|
setlocal spell spelllang=en_gb
|
|
|
|
echo "Spelling ON (en_GB)"
|
|
|
|
else
|
|
|
|
setlocal nospell
|
|
|
|
echo "Spelling OFF"
|
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! ACPActodoTodo()
|
|
|
|
" Toggles between TODO, WORK, WAIT, DONE, and blank.
|
|
|
|
" All are highlighted except DONE and blank.
|
|
|
|
" Must be at the start of the line, optionally preceeded with
|
|
|
|
" whitespace. This makes it work for actodo lists.
|
|
|
|
if getline(line(".")) =~# "TODO: "
|
|
|
|
s/^\(\s*\)TODO: /\1WORK: /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> TODO -> [WORK] -> WAIT -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
elseif getline(line(".")) =~# "WORK: "
|
|
|
|
s/^\(\s*\)WORK: /\1WAIT: /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> TODO -> WORK -> [WAIT] -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
elseif getline(line(".")) =~# "WAIT: "
|
|
|
|
s/^\(\s*\)WAIT: /\1DONE: /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> TODO -> WORK -> WAIT -> [DONE]"
|
2023-04-03 15:07:13 +00:00
|
|
|
elseif getline(line(".")) =~# "DONE: "
|
|
|
|
s/^\(\s*\)DONE: /\1/e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo "[Blank] -> TODO -> WORK -> WAIT -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
else
|
|
|
|
s/^\(\s*\)/\1TODO: /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> [TODO] -> WORK -> WAIT -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! ACPAdocTodo()
|
|
|
|
" Toggles between TODO, WORK, WAIT, DONE, and blank.
|
|
|
|
" All are highlighted except DONE and blank.
|
|
|
|
" Must be at the start of the line, optionally preceeded with an
|
|
|
|
" asterisk and a space. This makes it work for Asciidoc lists.
|
|
|
|
if getline(line(".")) =~# "[#][*]TODO:[*][#] "
|
|
|
|
s/^\(\**\s*\)#\*TODO:\*# /\1#*WORK:*# /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> TODO -> [WORK] -> WAIT -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
elseif getline(line(".")) =~# "[#][*]WORK:[*][#] "
|
|
|
|
s/^\(\**\s*\)#\*WORK:\*# /\1#*WAIT:*# /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> TODO -> WORK -> [WAIT] -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
elseif getline(line(".")) =~# "[#][*]WAIT:[*][#] "
|
|
|
|
s/^\(\**\s*\)#\*WAIT:\*# /\1*DONE:* /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> TODO -> WORK -> WAIT -> [DONE]"
|
2023-04-03 15:07:13 +00:00
|
|
|
elseif getline(line(".")) =~# "[*]DONE:[*] "
|
|
|
|
s/^\(\**\s*\)\*DONE:\* /\1/e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo "[Blank] -> TODO -> WORK -> WAIT -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
else
|
|
|
|
s/^\(\**\s*\)/\1#*TODO:*# /e
|
2023-04-25 07:49:17 +00:00
|
|
|
echo " Blank -> [TODO] -> WORK -> WAIT -> DONE "
|
2023-04-03 15:07:13 +00:00
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
2017-04-06 08:03:26 +00:00
|
|
|
endif
|
|
|
|
|
2022-06-22 14:43:01 +00:00
|
|
|
"===============================================================================
|
2017-04-10 13:04:34 +00:00
|
|
|
" Settings based on feature detection.
|
|
|
|
|
2023-05-30 08:28:44 +00:00
|
|
|
" Set theme for GUI.
|
2023-08-14 23:54:14 +00:00
|
|
|
if has('gui_running')
|
2024-06-07 13:33:57 +00:00
|
|
|
set background=light
|
|
|
|
colorscheme tempus_totus
|
2024-04-17 12:56:52 +00:00
|
|
|
highlight Comment gui=NONE
|
2023-05-30 08:28:44 +00:00
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('autocmd')
|
2022-12-10 22:56:03 +00:00
|
|
|
autocmd BufRead,BufNewFile *.go set noet sw=8 ts=8
|
2023-03-22 21:14:14 +00:00
|
|
|
autocmd BufRead,BufNewFile *.html set et sw=2 indk=
|
2022-12-10 22:56:03 +00:00
|
|
|
autocmd BufRead,BufNewFile *.md set et ft=markdown sw=2
|
|
|
|
autocmd BufRead,BufNewFile *.opml set et sw=2
|
2023-04-12 15:17:13 +00:00
|
|
|
autocmd BufRead,BufNewFile *.ps1 set et sw=4 ts=4
|
2022-12-10 22:56:03 +00:00
|
|
|
autocmd BufRead,BufNewFile *.rs set et sw=4
|
|
|
|
autocmd BufRead,BufNewFile *.txt set et sw=3 tw=72
|
|
|
|
autocmd BufRead,BufNewFile *.xml set et sw=2
|
|
|
|
autocmd BufRead,BufNewFile *.yaml set et sw=2
|
|
|
|
autocmd BufRead,BufNewFile *.yml set et sw=2
|
2017-04-10 12:50:30 +00:00
|
|
|
endif
|
|
|
|
|
2024-05-24 10:49:53 +00:00
|
|
|
if has('clipboard')
|
|
|
|
set clipboard=unnamedplus
|
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('folding')
|
2022-12-10 22:56:03 +00:00
|
|
|
set nofoldenable
|
2017-02-22 09:51:33 +00:00
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('gui_running')
|
2022-12-10 22:56:03 +00:00
|
|
|
if has('gui_gtk')
|
2023-11-24 09:29:57 +00:00
|
|
|
set guifont=Monospace\ 10
|
2022-12-10 22:56:03 +00:00
|
|
|
elseif has('gui_win32')
|
2023-08-29 10:33:35 +00:00
|
|
|
set guifont=Cascadia_Mono_SemiLight:h10:W350:cANSI:qDRAFT
|
2022-12-10 22:56:03 +00:00
|
|
|
set rop=type:directx
|
|
|
|
endif
|
|
|
|
set columns=132
|
|
|
|
set guioptions+=c
|
|
|
|
set guioptions+=m
|
|
|
|
set guioptions-=T
|
|
|
|
set guioptions-=f
|
|
|
|
set lines=43
|
2017-04-10 12:50:30 +00:00
|
|
|
endif
|
|
|
|
|
2023-02-06 15:34:21 +00:00
|
|
|
if has('linebreak')
|
|
|
|
set breakindent
|
|
|
|
endif
|
|
|
|
|
2023-02-06 14:20:33 +00:00
|
|
|
if has('mouse_sgr')
|
|
|
|
set ttymouse=sgr
|
|
|
|
end
|
|
|
|
|
2024-05-09 12:22:50 +00:00
|
|
|
if has('nvim')
|
|
|
|
set mouse=nv
|
|
|
|
end
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('patch-7.3.541')
|
2022-12-10 22:56:03 +00:00
|
|
|
set formatoptions+=j
|
2017-04-10 11:33:26 +00:00
|
|
|
endif
|
|
|
|
|
2022-06-09 10:23:03 +00:00
|
|
|
if has('patch-8.1.0759')
|
2024-11-09 21:43:52 +00:00
|
|
|
set listchars+=tab:│
|
2022-06-09 10:23:03 +00:00
|
|
|
else
|
2024-11-09 21:43:52 +00:00
|
|
|
set listchars+=tab:│
|
2022-06-09 10:23:03 +00:00
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('patch-8.1.1564')
|
2022-12-10 22:56:03 +00:00
|
|
|
set signcolumn=number
|
2020-10-30 13:36:11 +00:00
|
|
|
else
|
2022-12-10 22:56:03 +00:00
|
|
|
set signcolumn=yes
|
2020-10-30 13:36:11 +00:00
|
|
|
endif
|
|
|
|
|
2023-02-22 11:18:23 +00:00
|
|
|
if has('patch-9.0.0640')
|
|
|
|
set smoothscroll
|
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('printer')
|
2022-12-10 22:56:03 +00:00
|
|
|
set printheader=%t%h%m%=Page\ %N
|
|
|
|
set printoptions=paper:A4,number:y,syntax:n
|
2017-04-27 10:11:13 +00:00
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('smartindent')
|
2022-12-10 22:56:03 +00:00
|
|
|
set nosmartindent
|
2017-04-10 12:50:30 +00:00
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('syntax')
|
2022-12-10 22:56:03 +00:00
|
|
|
syntax on
|
2024-11-09 21:49:09 +00:00
|
|
|
highlight NonText guibg=NONE guifg=#E0E0E0
|
2015-10-13 10:01:04 +00:00
|
|
|
endif
|
2017-04-06 08:03:26 +00:00
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('viminfo')
|
2022-12-10 22:56:03 +00:00
|
|
|
set viminfo="NONE"
|
2019-08-23 22:09:07 +00:00
|
|
|
endif
|
|
|
|
|
2021-10-05 14:43:37 +00:00
|
|
|
if has('wildmenu')
|
2022-12-10 22:56:03 +00:00
|
|
|
set wildmenu
|
2019-08-23 22:09:07 +00:00
|
|
|
endif
|
|
|
|
|
2022-03-08 16:34:44 +00:00
|
|
|
" Keep this as the last config line in the file.
|
|
|
|
runtime vimrc.local
|
|
|
|
|
2022-06-22 14:43:01 +00:00
|
|
|
"===============================================================================
|
2017-04-10 13:04:34 +00:00
|
|
|
" End of config file.
|
2019-08-05 09:53:01 +00:00
|
|
|
" vim:set ft=vim:
|