392 lines
12 KiB
VimL
392 lines
12 KiB
VimL
|
scriptencoding utf-8
|
||
|
|
||
|
" Use short names for common plugin manager commands to simplify typing.
|
||
|
" To use these shortcuts: first activate command line with `:`, then input the
|
||
|
" short alias, e.g., `pi`, then press <space>, the alias will be expanded to
|
||
|
" the full command automatically.
|
||
|
call utils#Cabbrev('pi', 'Lazy install')
|
||
|
call utils#Cabbrev('pud', 'Lazy update')
|
||
|
call utils#Cabbrev('pc', 'Lazy clean')
|
||
|
call utils#Cabbrev('ps', 'Lazy sync')
|
||
|
|
||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
|
" configurations for vim script plugin "
|
||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||
|
|
||
|
"""""""""""""""""""""""""" vlime settings """"""""""""""""""""""""""""""""
|
||
|
command! -nargs=0 StartVlime call jobstart(printf("sbcl --load %s/vlime/lisp/start-vlime.lisp", g:package_home))
|
||
|
|
||
|
"""""""""""""""""""""""""""""LeaderF settings"""""""""""""""""""""
|
||
|
" Do not use cache file
|
||
|
let g:Lf_UseCache = 0
|
||
|
" Refresh each time we call leaderf
|
||
|
let g:Lf_UseMemoryCache = 0
|
||
|
|
||
|
" Ignore certain files and directories when searching files
|
||
|
let g:Lf_WildIgnore = {
|
||
|
\ 'dir': ['.git', '__pycache__', '.DS_Store', '*_cache'],
|
||
|
\ 'file': ['*.exe', '*.dll', '*.so', '*.o', '*.pyc', '*.jpg', '*.png',
|
||
|
\ '*.gif', '*.svg', '*.ico', '*.db', '*.tgz', '*.tar.gz', '*.gz',
|
||
|
\ '*.zip', '*.bin', '*.pptx', '*.xlsx', '*.docx', '*.pdf', '*.tmp',
|
||
|
\ '*.wmv', '*.mkv', '*.mp4', '*.rmvb', '*.ttf', '*.ttc', '*.otf',
|
||
|
\ '*.mp3', '*.aac']
|
||
|
\}
|
||
|
|
||
|
" Do not show fancy icons for Linux server.
|
||
|
if g:is_linux
|
||
|
let g:Lf_ShowDevIcons = 0
|
||
|
endif
|
||
|
|
||
|
" Only fuzzy-search files names
|
||
|
let g:Lf_DefaultMode = 'FullPath'
|
||
|
|
||
|
" Popup window settings
|
||
|
let w = float2nr(&columns * 0.8)
|
||
|
if w > 140
|
||
|
let g:Lf_PopupWidth = 140
|
||
|
else
|
||
|
let g:Lf_PopupWidth = w
|
||
|
endif
|
||
|
|
||
|
let g:Lf_PopupPosition = [0, float2nr((&columns - g:Lf_PopupWidth)/2)]
|
||
|
|
||
|
" Do not use version control tool to list files under a directory since
|
||
|
" submodules are not searched by default.
|
||
|
let g:Lf_UseVersionControlTool = 0
|
||
|
|
||
|
" Use rg as the default search tool
|
||
|
let g:Lf_DefaultExternalTool = "rg"
|
||
|
|
||
|
" show dot files
|
||
|
let g:Lf_ShowHidden = 1
|
||
|
|
||
|
" Disable default mapping
|
||
|
let g:Lf_ShortcutF = ''
|
||
|
let g:Lf_ShortcutB = ''
|
||
|
|
||
|
" set up working directory for git repository
|
||
|
let g:Lf_WorkingDirectoryMode = 'a'
|
||
|
|
||
|
" Search files in popup window
|
||
|
nnoremap <silent> <leader>ff :<C-U>Leaderf file --popup<CR>
|
||
|
|
||
|
" Grep project files in popup window
|
||
|
nnoremap <silent> <leader>fg :<C-U>Leaderf rg --no-messages --popup<CR>
|
||
|
|
||
|
" Search vim help files
|
||
|
nnoremap <silent> <leader>fh :<C-U>Leaderf help --popup<CR>
|
||
|
|
||
|
" Search tags in current buffer
|
||
|
nnoremap <silent> <leader>ft :<C-U>Leaderf bufTag --popup<CR>
|
||
|
|
||
|
" Switch buffers
|
||
|
nnoremap <silent> <leader>fb :<C-U>Leaderf buffer --popup<CR>
|
||
|
|
||
|
" Search recent files
|
||
|
nnoremap <silent> <leader>fr :<C-U>Leaderf mru --popup --absolute-path<CR>
|
||
|
|
||
|
let g:Lf_PopupColorscheme = 'gruvbox_material'
|
||
|
|
||
|
" Change keybinding in LeaderF prompt mode, use ctrl-n and ctrl-p to navigate
|
||
|
" items.
|
||
|
let g:Lf_CommandMap = {'<C-J>': ['<C-N>'], '<C-K>': ['<C-P>']}
|
||
|
|
||
|
" do not preview results, it will add the file to buffer list
|
||
|
let g:Lf_PreviewResult = {
|
||
|
\ 'File': 0,
|
||
|
\ 'Buffer': 0,
|
||
|
\ 'Mru': 0,
|
||
|
\ 'Tag': 0,
|
||
|
\ 'BufTag': 1,
|
||
|
\ 'Function': 1,
|
||
|
\ 'Line': 0,
|
||
|
\ 'Colorscheme': 0,
|
||
|
\ 'Rg': 0,
|
||
|
\ 'Gtags': 0
|
||
|
\}
|
||
|
|
||
|
""""""""""""""""""""""""""""open-browser.vim settings"""""""""""""""""""
|
||
|
if g:is_win || g:is_mac
|
||
|
" Disable netrw's gx mapping.
|
||
|
let g:netrw_nogx = 1
|
||
|
|
||
|
" Use another mapping for the open URL method
|
||
|
nmap ob <Plug>(openbrowser-smart-search)
|
||
|
xmap ob <Plug>(openbrowser-smart-search)
|
||
|
endif
|
||
|
|
||
|
""""""""""""""""""""""""""" vista settings """"""""""""""""""""""""""""""""""
|
||
|
let g:vista#renderer#icons = {
|
||
|
\ 'member': '',
|
||
|
\ }
|
||
|
|
||
|
" Do not echo message on command line
|
||
|
let g:vista_echo_cursor = 0
|
||
|
" Stay in current window when vista window is opened
|
||
|
let g:vista_stay_on_open = 0
|
||
|
|
||
|
nnoremap <silent> <Space>t :<C-U>Vista!!<CR>
|
||
|
|
||
|
""""""""""""""""""""""""vim-mundo settings"""""""""""""""""""""""
|
||
|
let g:mundo_verbose_graph = 0
|
||
|
let g:mundo_width = 80
|
||
|
|
||
|
nnoremap <silent> <Space>u :MundoToggle<CR>
|
||
|
|
||
|
""""""""""""""""""""""""""""better-escape.vim settings"""""""""""""""""""""""""
|
||
|
let g:better_escape_interval = 200
|
||
|
|
||
|
""""""""""""""""""""""""""""vim-xkbswitch settings"""""""""""""""""""""""""
|
||
|
let g:XkbSwitchEnabled = 1
|
||
|
|
||
|
"""""""""""""""""""""""""""""" neoformat settings """""""""""""""""""""""
|
||
|
let g:neoformat_enabled_python = ['black', 'yapf']
|
||
|
let g:neoformat_cpp_clangformat = {
|
||
|
\ 'exe': 'clang-format',
|
||
|
\ 'args': ['--style="{IndentWidth: 4}"']
|
||
|
\ }
|
||
|
let g:neoformat_c_clangformat = {
|
||
|
\ 'exe': 'clang-format',
|
||
|
\ 'args': ['--style="{IndentWidth: 4}"']
|
||
|
\ }
|
||
|
|
||
|
let g:neoformat_enabled_cpp = ['clangformat']
|
||
|
let g:neoformat_enabled_c = ['clangformat']
|
||
|
|
||
|
"""""""""""""""""""""""""vim-markdown settings"""""""""""""""""""
|
||
|
" Disable header folding
|
||
|
let g:vim_markdown_folding_disabled = 1
|
||
|
|
||
|
" Whether to use conceal feature in markdown
|
||
|
let g:vim_markdown_conceal = 1
|
||
|
|
||
|
" Disable math tex conceal and syntax highlight
|
||
|
let g:tex_conceal = ''
|
||
|
let g:vim_markdown_math = 0
|
||
|
|
||
|
" Support front matter of various format
|
||
|
let g:vim_markdown_frontmatter = 1 " for YAML format
|
||
|
let g:vim_markdown_toml_frontmatter = 1 " for TOML format
|
||
|
let g:vim_markdown_json_frontmatter = 1 " for JSON format
|
||
|
|
||
|
" Let the TOC window autofit so that it doesn't take too much space
|
||
|
let g:vim_markdown_toc_autofit = 1
|
||
|
|
||
|
"""""""""""""""""""""""""markdown-preview settings"""""""""""""""""""
|
||
|
" Only setting this for suitable platforms
|
||
|
if g:is_win || g:is_mac
|
||
|
" Do not close the preview tab when switching to other buffers
|
||
|
let g:mkdp_auto_close = 0
|
||
|
|
||
|
" Shortcuts to start and stop markdown previewing
|
||
|
nnoremap <silent> <M-m> :<C-U>MarkdownPreview<CR>
|
||
|
nnoremap <silent> <M-S-m> :<C-U>MarkdownPreviewStop<CR>
|
||
|
endif
|
||
|
|
||
|
""""""""""""""""""""""""vim-grammarous settings""""""""""""""""""""""""""""""
|
||
|
if g:is_mac
|
||
|
let g:grammarous#languagetool_cmd = 'languagetool'
|
||
|
let g:grammarous#disabled_rules = {
|
||
|
\ '*' : ['WHITESPACE_RULE', 'EN_QUOTES', 'ARROWS', 'SENTENCE_WHITESPACE',
|
||
|
\ 'WORD_CONTAINS_UNDERSCORE', 'COMMA_PARENTHESIS_WHITESPACE',
|
||
|
\ 'EN_UNPAIRED_BRACKETS', 'UPPERCASE_SENTENCE_START',
|
||
|
\ 'ENGLISH_WORD_REPEAT_BEGINNING_RULE', 'DASH_RULE', 'PLUS_MINUS',
|
||
|
\ 'PUNCTUATION_PARAGRAPH_END', 'MULTIPLICATION_SIGN', 'PRP_CHECKOUT',
|
||
|
\ 'CAN_CHECKOUT', 'SOME_OF_THE', 'DOUBLE_PUNCTUATION', 'HELL',
|
||
|
\ 'CURRENCY', 'POSSESSIVE_APOSTROPHE', 'ENGLISH_WORD_REPEAT_RULE',
|
||
|
\ 'NON_STANDARD_WORD', 'AU', 'DATE_NEW_YEAR'],
|
||
|
\ }
|
||
|
|
||
|
augroup grammarous_map
|
||
|
autocmd!
|
||
|
autocmd FileType markdown nmap <buffer> <leader>x <Plug>(grammarous-close-info-window)
|
||
|
autocmd FileType markdown nmap <buffer> <c-n> <Plug>(grammarous-move-to-next-error)
|
||
|
autocmd FileType markdown nmap <buffer> <c-p> <Plug>(grammarous-move-to-previous-error)
|
||
|
augroup END
|
||
|
endif
|
||
|
|
||
|
""""""""""""""""""""""""unicode.vim settings""""""""""""""""""""""""""""""
|
||
|
nmap ga <Plug>(UnicodeGA)
|
||
|
|
||
|
""""""""""""""""""""""""""""vim-sandwich settings"""""""""""""""""""""""""""""
|
||
|
" Map s to nop since s in used by vim-sandwich. Use cl instead of s.
|
||
|
nmap s <Nop>
|
||
|
omap s <Nop>
|
||
|
|
||
|
""""""""""""""""""""""""""""vimtex settings"""""""""""""""""""""""""""""
|
||
|
if executable('latex')
|
||
|
" Hacks for inverse search to work semi-automatically,
|
||
|
" see https://jdhao.github.io/2021/02/20/inverse_search_setup_neovim_vimtex/.
|
||
|
function! s:write_server_name() abort
|
||
|
let nvim_server_file = (has('win32') ? $TEMP : '/tmp') . '/vimtexserver.txt'
|
||
|
call writefile([v:servername], nvim_server_file)
|
||
|
endfunction
|
||
|
|
||
|
augroup vimtex_common
|
||
|
autocmd!
|
||
|
autocmd FileType tex call s:write_server_name()
|
||
|
autocmd FileType tex nmap <buffer> <F9> <plug>(vimtex-compile)
|
||
|
augroup END
|
||
|
|
||
|
let g:vimtex_compiler_latexmk = {
|
||
|
\ 'build_dir' : 'build',
|
||
|
\ }
|
||
|
|
||
|
" TOC settings
|
||
|
let g:vimtex_toc_config = {
|
||
|
\ 'name' : 'TOC',
|
||
|
\ 'layers' : ['content', 'todo', 'include'],
|
||
|
\ 'resize' : 1,
|
||
|
\ 'split_width' : 30,
|
||
|
\ 'todo_sorted' : 0,
|
||
|
\ 'show_help' : 1,
|
||
|
\ 'show_numbers' : 1,
|
||
|
\ 'mode' : 2,
|
||
|
\ }
|
||
|
|
||
|
" Viewer settings for different platforms
|
||
|
if g:is_win
|
||
|
let g:vimtex_view_general_viewer = 'SumatraPDF'
|
||
|
let g:vimtex_view_general_options = '-reuse-instance -forward-search @tex @line @pdf'
|
||
|
endif
|
||
|
|
||
|
if g:is_mac
|
||
|
" let g:vimtex_view_method = "skim"
|
||
|
let g:vimtex_view_general_viewer = '/Applications/Skim.app/Contents/SharedSupport/displayline'
|
||
|
let g:vimtex_view_general_options = '-r @line @pdf @tex'
|
||
|
|
||
|
augroup vimtex_mac
|
||
|
autocmd!
|
||
|
autocmd User VimtexEventCompileSuccess call UpdateSkim()
|
||
|
augroup END
|
||
|
|
||
|
" The following code is adapted from https://gist.github.com/skulumani/7ea00478c63193a832a6d3f2e661a536.
|
||
|
function! UpdateSkim() abort
|
||
|
let l:out = b:vimtex.out()
|
||
|
let l:src_file_path = expand('%:p')
|
||
|
let l:cmd = [g:vimtex_view_general_viewer, '-r']
|
||
|
|
||
|
if !empty(system('pgrep Skim'))
|
||
|
call extend(l:cmd, ['-g'])
|
||
|
endif
|
||
|
|
||
|
call jobstart(l:cmd + [line('.'), l:out, l:src_file_path])
|
||
|
endfunction
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
""""""""""""""""""""""""""""vim-matchup settings"""""""""""""""""""""""""""""
|
||
|
" Improve performance
|
||
|
let g:matchup_matchparen_deferred = 1
|
||
|
let g:matchup_matchparen_timeout = 100
|
||
|
let g:matchup_matchparen_insert_timeout = 30
|
||
|
|
||
|
" Enhanced matching with matchup plugin
|
||
|
let g:matchup_override_vimtex = 1
|
||
|
|
||
|
" Whether to enable matching inside comment or string
|
||
|
let g:matchup_delim_noskips = 0
|
||
|
|
||
|
" Show offscreen match pair in popup window
|
||
|
let g:matchup_matchparen_offscreen = {'method': 'popup'}
|
||
|
|
||
|
"""""""""""""""""""""""""" asyncrun.vim settings """"""""""""""""""""""""""
|
||
|
" Automatically open quickfix window of 6 line tall after asyncrun starts
|
||
|
let g:asyncrun_open = 6
|
||
|
if g:is_win
|
||
|
" Command output encoding for Windows
|
||
|
let g:asyncrun_encs = 'gbk'
|
||
|
endif
|
||
|
|
||
|
""""""""""""""""""""""""""""""firenvim settings""""""""""""""""""""""""""""""
|
||
|
if exists('g:started_by_firenvim') && g:started_by_firenvim
|
||
|
if g:is_mac
|
||
|
set guifont=Iosevka\ Nerd\ Font:h18
|
||
|
else
|
||
|
set guifont=Consolas
|
||
|
endif
|
||
|
|
||
|
" general config for firenvim
|
||
|
let g:firenvim_config = {
|
||
|
\ 'globalSettings': {
|
||
|
\ 'alt': 'all',
|
||
|
\ },
|
||
|
\ 'localSettings': {
|
||
|
\ '.*': {
|
||
|
\ 'cmdline': 'neovim',
|
||
|
\ 'priority': 0,
|
||
|
\ 'selector': 'textarea',
|
||
|
\ 'takeover': 'never',
|
||
|
\ },
|
||
|
\ }
|
||
|
\ }
|
||
|
|
||
|
function s:setup_firenvim() abort
|
||
|
set signcolumn=no
|
||
|
set noruler
|
||
|
set noshowcmd
|
||
|
set laststatus=0
|
||
|
set showtabline=0
|
||
|
endfunction
|
||
|
|
||
|
augroup firenvim
|
||
|
autocmd!
|
||
|
autocmd BufEnter * call s:setup_firenvim()
|
||
|
autocmd BufEnter sqlzoo*.txt set filetype=sql
|
||
|
autocmd BufEnter github.com_*.txt set filetype=markdown
|
||
|
autocmd BufEnter stackoverflow.com_*.txt set filetype=markdown
|
||
|
augroup END
|
||
|
endif
|
||
|
|
||
|
""""""""""""""""""""""""""""""nvim-gdb settings""""""""""""""""""""""""""""""
|
||
|
nnoremap <leader>dp :<C-U>GdbStartPDB python -m pdb %<CR>
|
||
|
|
||
|
""""""""""""""""""""""""""""""wilder.nvim settings""""""""""""""""""""""""""""""
|
||
|
call timer_start(250, { -> s:wilder_init() })
|
||
|
|
||
|
function! s:wilder_init() abort
|
||
|
try
|
||
|
call wilder#setup({
|
||
|
\ 'modes': [':', '/', '?'],
|
||
|
\ 'next_key': '<Tab>',
|
||
|
\ 'previous_key': '<S-Tab>',
|
||
|
\ 'accept_key': '<C-y>',
|
||
|
\ 'reject_key': '<C-e>'
|
||
|
\ })
|
||
|
|
||
|
call wilder#set_option('pipeline', [
|
||
|
\ wilder#branch(
|
||
|
\ wilder#cmdline_pipeline({
|
||
|
\ 'language': 'python',
|
||
|
\ 'fuzzy': 1,
|
||
|
\ 'sorter': wilder#python_difflib_sorter(),
|
||
|
\ 'debounce': 30,
|
||
|
\ }),
|
||
|
\ wilder#python_search_pipeline({
|
||
|
\ 'pattern': wilder#python_fuzzy_pattern(),
|
||
|
\ 'sorter': wilder#python_difflib_sorter(),
|
||
|
\ 'engine': 're',
|
||
|
\ 'debounce': 30,
|
||
|
\ }),
|
||
|
\ ),
|
||
|
\ ])
|
||
|
|
||
|
let l:hl = wilder#make_hl('WilderAccent', 'Pmenu', [{}, {}, {'foreground': '#f4468f'}])
|
||
|
call wilder#set_option('renderer', wilder#popupmenu_renderer({
|
||
|
\ 'highlighter': wilder#basic_highlighter(),
|
||
|
\ 'max_height': 15,
|
||
|
\ 'highlights': {
|
||
|
\ 'accent': l:hl,
|
||
|
\ },
|
||
|
\ 'left': [' ', wilder#popupmenu_devicons(),],
|
||
|
\ 'right': [' ', wilder#popupmenu_scrollbar(),],
|
||
|
\ 'apply_incsearch_fix': 0,
|
||
|
\ }))
|
||
|
catch /^Vim\%((\a\+)\)\=:E117/
|
||
|
echohl Error |echomsg "Wilder.nvim missing"| echohl None
|
||
|
endtry
|
||
|
endfunction
|
||
|
|
||
|
""""""""""""""""""""""""""""""vim-auto-save settings""""""""""""""""""""""""""""""
|
||
|
let g:auto_save = 1 " enable AutoSave on Vim startup
|