mirror of
https://github.com/jdhao/nvim-config.git
synced 2025-06-08 14:14:33 +02:00
183 lines
5.8 KiB
VimL
183 lines
5.8 KiB
VimL
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=1000
|
||
|
||
" 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 matches and complete till longest common string
|
||
set wildmode=list:longest
|
||
set wildignorecase " ignore file and dir name cases in cmd-completion
|
||
|
||
" 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
|
||
"}
|