1
0
mirror of https://github.com/jdhao/nvim-config.git synced 2025-06-08 14:14:33 +02:00
jdhao-nvim-config/options.vim

182 lines
5.7 KiB
VimL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

scriptencoding utf-8
"{ Builtin options and settings
" change filechar for folding, vertical split, and message sepator
set fillchars=fold:\ ,vert:\│,msgsep:‾
" Paste mode toggle, it seems that Neovim's bracketed paste mode
" does not work very well for nvim-qt, so we use good-old paste mode
set pastetoggle=<F12>
" Split window below/right when creating horizontal/vertical windows
set splitbelow splitright
" Time in milliseconds to wait for a mapped sequence to complete,
" see https://unix.stackexchange.com/q/36882/221410 for more info
set timeoutlen=1000
" For CursorHold events
set updatetime=2000
" Clipboard settings, always use clipboard for all delete, yank, change, put
" operation, see https://stackoverflow.com/q/30691466/6064933
if !empty(provider#clipboard#Executable())
set clipboard+=unnamedplus
endif
" Disable creating swapfiles, see https://stackoverflow.com/q/821902/6064933
set noswapfile
" Set up backup directory
let g:backupdir=expand(stdpath('data') . '/backup')
if !isdirectory(g:backupdir)
call mkdir(g:backupdir, 'p')
endif
let &backupdir=g:backupdir
set backupcopy=yes " copy the original file to backupdir and overwrite it
" General tab settings
set tabstop=4 " number of visual spaces per TAB
set softtabstop=4 " number of spaces in tab when editing
set shiftwidth=4 " number of spaces to use for autoindent
set expandtab " expand tab to spaces so that tabs are spaces
" Set matching pairs of characters and highlight matching brackets
set matchpairs+=<:>,「:」,『:』,【:】,“:”,:,《:》
" Show line number and relative line number
set number relativenumber
" Ignore case in general, but become case-sensitive when uppercase is present
set ignorecase smartcase
" File and script encoding settings for vim
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
" Break line at predefined characters
set linebreak
" Character to show before the lines that have been soft-wrapped
set showbreak=
" List all items and start selecting matches in cmd completion
set wildmode=list:full
" Show current line where the cursor is
set cursorline
" Minimum lines to keep above and below cursor when scrolling
set scrolloff=3
" Use mouse to select and resize windows, etc.
set mouse=nic " Enable mouse in several mode
set mousemodel=popup " Set the behaviour of mouse
" Do not show mode on command line since vim-airline can show it
set noshowmode
" Fileformats to use for new files
set fileformats=unix,dos
" The way to show the result of substitution in real time for preview
set inccommand=nosplit
" Ignore certain files and folders when globbing
set wildignore+=*.o,*.obj,*.bin,*.dll,*.exe
set wildignore+=*/.git/*,*/.svn/*,*/__pycache__/*,*/build/**
set wildignore+=*.pyc
set wildignore+=*.DS_Store
set wildignore+=*.aux,*.bbl,*.blg,*.brf,*.fls,*.fdb_latexmk,*.synctex.gz
" Ask for confirmation when handling unsaved or read-only files
set confirm
" Do not use visual and errorbells
set visualbell noerrorbells
" The level we start to fold
set foldlevel=0
" The number of command and search history to keep
set history=500
" Use list mode and customized listchars
set list listchars=tab:▸\ ,extends:,precedes:,nbsp:+
" Auto-write the file based on some condition
set autowrite
" Show hostname, full path of file and last-mod time on the window title. The
" meaning of the format str for strftime can be found in
" http://man7.org/linux/man-pages/man3/strftime.3.html. The function to get
" lastmod time is drawn from https://stackoverflow.com/q/8426736/6064933
set title
set titlestring=
if g:is_linux
set titlestring+=%(%{hostname()}\ \ %)
endif
set titlestring+=%(%{expand('%:p:~')}\ \ %)
set titlestring+=%{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}
" Persistent undo even after you close a file and re-open it
set undofile
" Do not show "match xx of xx" and other messages during auto-completion
set shortmess+=c
" Completion behaviour
" set completeopt+=noinsert " Auto select the first completion entry
set completeopt+=menuone " Show menu even if there is only one item
set completeopt-=preview " Disable the preview window
" Settings for popup menu
set pumheight=10 " Maximum number of items to show in popup menu
" Insert mode key word completion setting
set complete+=kspell complete-=w complete-=b complete-=u complete-=t
set spelllang=en,cjk " Spell languages
set spellsuggest+=10 " The number of suggestions shown in the screen for z=
" Align indent to next multiple value of shiftwidth. For its meaning,
" see http://vim.1045645.n5.nabble.com/shiftround-option-td5712100.html
set shiftround
" Virtual edit is useful for visual block edit
set virtualedit=block
" Correctly break multi-byte characters such as CJK,
" see https://stackoverflow.com/q/32669814/6064933
set formatoptions+=mM
" Tilde (~) is an operator, thus must be followed by motions like `e` or `w`.
set tildeop
" Do not add two spaces after a period when joining lines or formatting texts,
" see https://stackoverflow.com/q/4760428/6064933
set nojoinspaces
" Text after this column number is not highlighted
set synmaxcol=200
set nostartofline
" External program to use for grep command
if executable('rg')
set grepprg=rg\ --vimgrep\ --no-heading\ --smart-case
set grepformat=%f:%l:%c:%m
endif
" Highlight groups for cursor color
augroup cursor_color
autocmd!
autocmd ColorScheme * highlight Cursor cterm=bold gui=bold guibg=cyan guifg=black
autocmd ColorScheme * highlight Cursor2 guifg=red guibg=red
augroup END
" Set up cursor color and shape in various mode, ref:
" https://github.com/neovim/neovim/wiki/FAQ#how-to-change-cursor-color-in-the-terminal
set guicursor=n-v-c:block-Cursor/lCursor,i-ci-ve:ver25-Cursor2/lCursor2,r-cr:hor20,o:hor20
"}