mirror of
https://github.com/jdhao/nvim-config.git
synced 2025-06-08 14:14:33 +02:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6dfaf2c521 | ||
|
|
ae759477c7 | ||
|
|
921fd17221 | ||
|
|
81696c9e13 | ||
|
|
32b1d3ac16 | ||
|
|
e3b15da059 | ||
|
|
934ef7fb13 | ||
|
|
3ee785506c | ||
|
|
428f612bb3 | ||
|
|
95b7ee5bc8 | ||
|
|
4899a82b35 | ||
|
|
424981683e | ||
|
|
c3253a5731 | ||
|
|
a9be0d0b20 | ||
|
|
13111596b8 | ||
|
|
6cea10fcc5 | ||
|
|
58102f182a | ||
|
|
9e284f58cb | ||
|
|
a5dc045acc | ||
|
|
dd3e9dd2f4 | ||
|
|
6784a87e26 | ||
|
|
99637c86f9 | ||
|
|
3817525441 | ||
|
|
4b4331d394 | ||
|
|
aaafaf58d6 | ||
|
|
1b9bd9ceef | ||
|
|
e043f07b71 | ||
|
|
b20b21b5dd | ||
|
|
c3ced68bea | ||
|
|
905efeb53f | ||
|
|
a3795cd043 |
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -8,7 +8,7 @@ assignees: ''
|
|||||||
|
|
||||||
<!-- Before reporting: make sure that you have read the doc (https://github.com/jdhao/nvim-config/tree/master/docs) and searched existing issues. -->
|
<!-- Before reporting: make sure that you have read the doc (https://github.com/jdhao/nvim-config/tree/master/docs) and searched existing issues. -->
|
||||||
|
|
||||||
- `nvim --version`:
|
- `nvim --version`: <!--should be latest stable version: https://github.com/neovim/neovim/releases/tag/stable -->
|
||||||
- terminal emulator and version:
|
- terminal emulator and version:
|
||||||
- Operating system/version:
|
- Operating system/version:
|
||||||
- Have you read and followed all steps in the [doc](https://github.com/jdhao/nvim-config/tree/master/docs):
|
- Have you read and followed all steps in the [doc](https://github.com/jdhao/nvim-config/tree/master/docs):
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,6 +2,5 @@ tags
|
|||||||
en.utf-8.add.spl
|
en.utf-8.add.spl
|
||||||
*.exe
|
*.exe
|
||||||
.netrwhist
|
.netrwhist
|
||||||
packer_compiled.lua
|
|
||||||
*.log
|
*.log
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
27
README.md
27
README.md
@@ -22,7 +22,7 @@
|
|||||||
<img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" />
|
<img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/neovim/neovim/releases/tag/stable">
|
<a href="https://github.com/neovim/neovim/releases/tag/stable">
|
||||||
<img src="https://img.shields.io/badge/Neovim-0.7.0-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
|
<img src="https://img.shields.io/badge/Neovim-0.7.2-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/jdhao/nvim-config/search?l=vim-script">
|
<a href="https://github.com/jdhao/nvim-config/search?l=vim-script">
|
||||||
<img src="https://img.shields.io/github/languages/top/jdhao/nvim-config" alt="Top languages"/>
|
<img src="https://img.shields.io/github/languages/top/jdhao/nvim-config" alt="Top languages"/>
|
||||||
@@ -40,22 +40,23 @@ This repo hosts my Nvim configuration for Linux, macOS, and Windows.
|
|||||||
and `ginit.vim` is the additional config file for [GUI client of Nvim](https://github.com/neovim/neovim/wiki/Related-projects#gui).
|
and `ginit.vim` is the additional config file for [GUI client of Nvim](https://github.com/neovim/neovim/wiki/Related-projects#gui).
|
||||||
|
|
||||||
My configurations are heavily documented to make it as clear as possible.
|
My configurations are heavily documented to make it as clear as possible.
|
||||||
While you can download the whole repository and use it, it is not recommended though.
|
While you can clone the whole repository and use it, it is not recommended though.
|
||||||
Good configurations are personal. Everyone should have his or her unique config file.
|
Good configurations are personal. Everyone should have his or her unique config file.
|
||||||
You are encouraged to copy from this repo the part you feel useful and add it to your own Nvim config.
|
You are encouraged to copy from this repo the part you want and add it to your own config.
|
||||||
|
|
||||||
|
To reduce the possibility of breakage, **this config is only maintained for [the latest nvim stable release](https://github.com/neovim/neovim/releases/tag/stable).
|
||||||
|
No effort is spent on maintaining backward compatibility.**
|
||||||
|
|
||||||
# Install and setup
|
# Install and setup
|
||||||
|
|
||||||
See [doc here](docs/README.md) on how to install Nvim's dependencies, Nvim itself,
|
See [doc here](docs/README.md) on how to install Nvim's dependencies, Nvim itself,
|
||||||
and how to set up on different platforms (Linux, macOS, and Windows).
|
and how to set up on different platforms (Linux, macOS, and Windows).
|
||||||
|
|
||||||
**This config is tested against [Nvim v0.7.0 release](https://github.com/neovim/neovim/releases/tag/stable).
|
|
||||||
No backward compatibility is guaranteed.**
|
|
||||||
|
|
||||||
# Features #
|
# Features #
|
||||||
|
|
||||||
+ Plugin management via [Packer.nvim](https://github.com/wbthomason/packer.nvim).
|
+ Plugin management via [Packer.nvim](https://github.com/wbthomason/packer.nvim).
|
||||||
+ Code auto-completion via [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) and [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig).
|
+ Code, snippet, word auto-completion via [nvim-cmp](https://github.com/hrsh7th/nvim-cmp).
|
||||||
|
+ Language server protocol (LSP) support via [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig).
|
||||||
+ Git integration via [vim-fugitive](https://github.com/tpope/vim-fugitive).
|
+ Git integration via [vim-fugitive](https://github.com/tpope/vim-fugitive).
|
||||||
+ Better escaping from insert mode via [better-escape.vim](https://github.com/jdhao/better-escape.vim).
|
+ Better escaping from insert mode via [better-escape.vim](https://github.com/jdhao/better-escape.vim).
|
||||||
+ Ultra-fast project-wide fuzzy searching via [LeaderF](https://github.com/Yggdroot/LeaderF).
|
+ Ultra-fast project-wide fuzzy searching via [LeaderF](https://github.com/Yggdroot/LeaderF).
|
||||||
@@ -63,29 +64,29 @@ No backward compatibility is guaranteed.**
|
|||||||
+ Faster matching pair insertion and jump via [delimitMate](https://github.com/Raimondi/delimitMate).
|
+ Faster matching pair insertion and jump via [delimitMate](https://github.com/Raimondi/delimitMate).
|
||||||
+ Smarter and faster matching pair management (add, replace or delete) via [vim-sandwich](https://github.com/machakann/vim-sandwich).
|
+ Smarter and faster matching pair management (add, replace or delete) via [vim-sandwich](https://github.com/machakann/vim-sandwich).
|
||||||
+ Fast buffer jump via [hop.nvim](https://github.com/phaazon/hop.nvim).
|
+ Fast buffer jump via [hop.nvim](https://github.com/phaazon/hop.nvim).
|
||||||
+ Ultra fast snippet insertion via [Ultisnips](https://github.com/SirVer/ultisnips).
|
+ Powerful snippet insertion via [Ultisnips](https://github.com/SirVer/ultisnips).
|
||||||
+ Beautiful status line via [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim).
|
+ Beautiful statusline via [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim).
|
||||||
+ File tree explorer via [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua).
|
+ File tree explorer via [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua).
|
||||||
+ Better quickfix list with [nvim-bqf](https://github.com/kevinhwang91/nvim-bqf).
|
+ Better quickfix list with [nvim-bqf](https://github.com/kevinhwang91/nvim-bqf).
|
||||||
+ Show search index and count with [nvim-hlslens](https://github.com/kevinhwang91/nvim-hlslens).
|
+ Show search index and count with [nvim-hlslens](https://github.com/kevinhwang91/nvim-hlslens).
|
||||||
+ Command line auto-completion via [wilder.nvim](https://github.com/gelguy/wilder.nvim).
|
+ Command line auto-completion via [wilder.nvim](https://github.com/gelguy/wilder.nvim).
|
||||||
+ Keymap display via [which-key.nvim](https://github.com/folke/which-key.nvim).
|
+ User-defined mapping hint via [which-key.nvim](https://github.com/folke/which-key.nvim).
|
||||||
+ Asynchronous code execution via [asyncrun.vim](https://github.com/skywind3000/asyncrun.vim).
|
+ Asynchronous code execution via [asyncrun.vim](https://github.com/skywind3000/asyncrun.vim).
|
||||||
+ Code highlighting via [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter).
|
+ Code highlighting via [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter).
|
||||||
+ Code editing using true nvim inside browser via [firenvim](https://github.com/glacambre/firenvim).
|
+ Code editing using true nvim inside browser via [firenvim](https://github.com/glacambre/firenvim).
|
||||||
+ Color theme via [vim-gruvbox8](https://github.com/lifepillar/vim-gruvbox8) and other beautiful themes.
|
+ Color theme via [vim-gruvbox8](https://github.com/lifepillar/vim-gruvbox8) and other beautiful themes.
|
||||||
+ Markdown writing and previewing via [vim-markdown](https://github.com/plasticboy/vim-markdown) and [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim).
|
+ Markdown writing and previewing via [vim-markdown](https://github.com/plasticboy/vim-markdown) and [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim).
|
||||||
|
+ LaTeX editing and previewing via [vimtex](https://github.com/lervag/vimtex) <sup id="a1">[1](#f1)</sup>.
|
||||||
+ Animated GUI style notification via [nvim-notify](https://github.com/rcarriga/nvim-notify).
|
+ Animated GUI style notification via [nvim-notify](https://github.com/rcarriga/nvim-notify).
|
||||||
+ Smooth scroll experience via [neoscroll](https://github.com/karb94/neoscroll.nvim).
|
+ Smooth scroll experience via [neoscroll](https://github.com/karb94/neoscroll.nvim).
|
||||||
+ Tags navigation via [vista](https://github.com/liuchengxu/vista.vim).
|
+ Tags navigation via [vista](https://github.com/liuchengxu/vista.vim).
|
||||||
+ Code formatting via [Neoformat](https://github.com/sbdchd/neoformat).
|
+ Code formatting via [Neoformat](https://github.com/sbdchd/neoformat).
|
||||||
+ Undo management via [vim-mundo](https://github.com/simnalamburt/vim-mundo)
|
+ Undo management via [vim-mundo](https://github.com/simnalamburt/vim-mundo)
|
||||||
+ LaTeX editing via [vimtex](https://github.com/lervag/vimtex) <sup id="a1">[1](#f1)</sup>.
|
|
||||||
+ ......
|
+ ......
|
||||||
|
|
||||||
# UI Demo
|
# UI Demo
|
||||||
|
|
||||||
For more UI demos, see [here](https://github.com/jdhao/nvim-config/issues/15).
|
For more UI demos, check [here](https://github.com/jdhao/nvim-config/issues/15).
|
||||||
|
|
||||||
## Start screen with alpha-nvim
|
## Start screen with alpha-nvim
|
||||||
|
|
||||||
@@ -139,7 +140,7 @@ Go to a string starting with `se`
|
|||||||
|
|
||||||
# Shortcuts
|
# Shortcuts
|
||||||
|
|
||||||
Some of the shortcuts I use frequently is listed here. In the following shortcuts, `<leader>` represents ASCII character `,`.
|
Some of the shortcuts I use frequently are listed here. In the following shortcuts, `<leader>` represents ASCII character `,`.
|
||||||
|
|
||||||
| Shortcut | Mode | platform | Description |
|
| Shortcut | Mode | platform | Description |
|
||||||
|-------------------|---------------|-----------------|------------------------------------------------------------------|
|
|-------------------|---------------|-----------------|------------------------------------------------------------------|
|
||||||
|
|||||||
@@ -6,3 +6,5 @@ set tabstop=2 " number of visual spaces per TAB
|
|||||||
set softtabstop=2 " number of spaces in tab when editing
|
set softtabstop=2 " number of spaces in tab when editing
|
||||||
set shiftwidth=2 " number of spaces to use for autoindent
|
set shiftwidth=2 " number of spaces to use for autoindent
|
||||||
set expandtab " expand tab to spaces so that tabs are spaces
|
set expandtab " expand tab to spaces so that tabs are spaces
|
||||||
|
|
||||||
|
nnoremap <silent> <F9> :luafile %<CR>
|
||||||
|
|||||||
@@ -16,3 +16,5 @@ set tabstop=2 " number of visual spaces per TAB
|
|||||||
set softtabstop=2 " number of spaces in tab when editing
|
set softtabstop=2 " number of spaces in tab when editing
|
||||||
set shiftwidth=2 " number of spaces to use for autoindent
|
set shiftwidth=2 " number of spaces to use for autoindent
|
||||||
set expandtab " expand tab to spaces so that tabs are spaces
|
set expandtab " expand tab to spaces so that tabs are spaces
|
||||||
|
|
||||||
|
nnoremap <silent> <F9> :source %<CR>
|
||||||
|
|||||||
@@ -69,4 +69,7 @@ let g:loaded_tutor_mode_plugin = 1 " do not load the tutor plugin
|
|||||||
let g:loaded_matchit = 1
|
let g:loaded_matchit = 1
|
||||||
let g:loaded_matchparen = 1
|
let g:loaded_matchparen = 1
|
||||||
"}}
|
"}}
|
||||||
|
|
||||||
|
" Disable sql omni completion, it is broken.
|
||||||
|
let g:loaded_sql_completion = 1
|
||||||
"}
|
"}
|
||||||
|
|||||||
@@ -95,6 +95,9 @@ nnoremap <silent> <leader>sv :<C-U>silent update $MYVIMRC <bar> source $MYVIMRC
|
|||||||
" Reselect the text that has just been pasted, see also https://stackoverflow.com/a/4317090/6064933.
|
" Reselect the text that has just been pasted, see also https://stackoverflow.com/a/4317090/6064933.
|
||||||
nnoremap <expr> <leader>v printf('`[%s`]', getregtype()[0])
|
nnoremap <expr> <leader>v printf('`[%s`]', getregtype()[0])
|
||||||
|
|
||||||
|
" Always use very magic mode for searching
|
||||||
|
nnoremap / /\v
|
||||||
|
|
||||||
" Search in selected region
|
" Search in selected region
|
||||||
xnoremap / :<C-U>call feedkeys('/\%>'.(line("'<")-1).'l\%<'.(line("'>")+1)."l")<CR>
|
xnoremap / :<C-U>call feedkeys('/\%>'.(line("'<")-1).'l\%<'.(line("'>")+1)."l")<CR>
|
||||||
|
|
||||||
@@ -190,3 +193,6 @@ function! s:restore_cursor() abort
|
|||||||
silent! normal `y
|
silent! normal `y
|
||||||
silent! delmarks y
|
silent! delmarks y
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" for mappings defined in lua
|
||||||
|
lua require('custom-map')
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ nnoremap <silent> <leader>ft :<C-U>Leaderf bufTag --popup<CR>
|
|||||||
nnoremap <silent> <leader>fb :<C-U>Leaderf buffer --popup<CR>
|
nnoremap <silent> <leader>fb :<C-U>Leaderf buffer --popup<CR>
|
||||||
|
|
||||||
" Search recent files
|
" Search recent files
|
||||||
nnoremap <silent> <leader>fr :<C-U>Leaderf mru --popup<CR>
|
nnoremap <silent> <leader>fr :<C-U>Leaderf mru --popup --absolute-path<CR>
|
||||||
|
|
||||||
let g:Lf_PopupColorscheme = 'gruvbox_material'
|
let g:Lf_PopupColorscheme = 'gruvbox_material'
|
||||||
|
|
||||||
@@ -292,7 +292,6 @@ if ( g:is_win || g:is_mac ) && executable('latex')
|
|||||||
" Viewer settings for different platforms
|
" Viewer settings for different platforms
|
||||||
if g:is_win
|
if g:is_win
|
||||||
let g:vimtex_view_general_viewer = 'SumatraPDF'
|
let g:vimtex_view_general_viewer = 'SumatraPDF'
|
||||||
let g:vimtex_view_general_options_latexmk = '-reuse-instance'
|
|
||||||
let g:vimtex_view_general_options = '-reuse-instance -forward-search @tex @line @pdf'
|
let g:vimtex_view_general_options = '-reuse-instance -forward-search @tex @line @pdf'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -142,13 +142,13 @@ we need to install a patched font from the [nerd-fonts](https://github.com/ryano
|
|||||||
# Install Nvim
|
# Install Nvim
|
||||||
|
|
||||||
There are various ways to install Nvim depending on your system.
|
There are various ways to install Nvim depending on your system.
|
||||||
Current configuration is tested against nvim v0.7.0.
|
This config is only maintained for [the latest nvim stable release](https://github.com/neovim/neovim/releases/tag/stable).
|
||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
|
|
||||||
We can directly download the binary release from [here](https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz).
|
You can directly download the binary release from [here](https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz).
|
||||||
You can also use the system package manager to install nvim,
|
You can also use the system package manager to install nvim,
|
||||||
but that is not reliable since latest version may not be available.
|
but that is not reliable since the latest version may not be available.
|
||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ brew install neovim
|
|||||||
```
|
```
|
||||||
|
|
||||||
After installing Nvim, we need to set the path to nvim correctly.
|
After installing Nvim, we need to set the path to nvim correctly.
|
||||||
Make sure that you can run `nvim` from the command line after all these setups.
|
**Make sure that you can run `nvim` from the command line after all these setups**.
|
||||||
|
|
||||||
# Setting up Nvim
|
# Setting up Nvim
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,9 @@ if [[ ! -d "$HOME/tools/" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Delete existing nvim installation.
|
# Delete existing nvim installation.
|
||||||
if [[ -d "$HOME/tools/nvim-osx64" ]]; then
|
# For newer release, the directory name is nvim-macos
|
||||||
rm -rf "$HOME/tools/nvim-osx64"
|
if [[ -d "$HOME/tools/nvim-macos" ]]; then
|
||||||
|
rm -rf "$HOME/tools/nvim-macos"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Extract the tar ball
|
# Extract the tar ball
|
||||||
|
|||||||
@@ -222,8 +222,10 @@ fi
|
|||||||
git clone --depth=1 https://github.com/jdhao/nvim-config.git "$NVIM_CONFIG_DIR"
|
git clone --depth=1 https://github.com/jdhao/nvim-config.git "$NVIM_CONFIG_DIR"
|
||||||
|
|
||||||
echo "Installing packer.nvim"
|
echo "Installing packer.nvim"
|
||||||
git clone --depth=1 https://github.com/wbthomason/packer.nvim \
|
if [[ ! -d ~/.local/share/nvim/site/pack/packer/opt/packer.nvim ]]; then
|
||||||
~/.local/share/nvim/site/pack/packer/opt/packer.nvim
|
git clone --depth=1 https://github.com/wbthomason/packer.nvim \
|
||||||
|
~/.local/share/nvim/site/pack/packer/opt/packer.nvim
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Installing nvim plugins, please wait"
|
echo "Installing nvim plugins, please wait"
|
||||||
"$NVIM_DIR/bin/nvim" -c "autocmd User PackerComplete quitall" -c "PackerSync"
|
"$NVIM_DIR/bin/nvim" -c "autocmd User PackerComplete quitall" -c "PackerSync"
|
||||||
|
|||||||
9
init.vim
9
init.vim
@@ -8,6 +8,15 @@
|
|||||||
" Email: jdhao@hotmail.com
|
" Email: jdhao@hotmail.com
|
||||||
" Blog: https://jdhao.github.io/
|
" Blog: https://jdhao.github.io/
|
||||||
|
|
||||||
|
" check if we have the lastest stable version of nvim
|
||||||
|
let s:expect_ver = printf('nvim-%s', '0.7.2')
|
||||||
|
let s:actual_ver = matchstr(execute('version'), 'NVIM v\zs[^\n]*')
|
||||||
|
|
||||||
|
if !has(s:expect_ver)
|
||||||
|
echohl Error | echomsg printf("%s required, but got nvim %s!", s:expect_ver, s:actual_ver) | echohl None
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
let s:core_conf_files = [
|
let s:core_conf_files = [
|
||||||
\ 'globals.vim',
|
\ 'globals.vim',
|
||||||
\ 'options.vim',
|
\ 'options.vim',
|
||||||
|
|||||||
@@ -3,19 +3,32 @@ require('hlslens').setup({
|
|||||||
nearest_only = true,
|
nearest_only = true,
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_set_keymap(
|
local activate_hlslens = function(direction)
|
||||||
"n",
|
local cmd = string.format("normal! %s%szzzv", vim.v.count1, direction)
|
||||||
"n",
|
local status, msg = pcall(vim.fn.execute, cmd)
|
||||||
"<Cmd>execute('normal! ' . v:count1 . 'nzzzv')<CR><Cmd>lua require('hlslens').start()<CR>",
|
-- 13 is the index where real error message starts
|
||||||
{ noremap = true, silent = true }
|
msg = msg:sub(13)
|
||||||
)
|
|
||||||
|
|
||||||
vim.api.nvim_set_keymap(
|
if not status then
|
||||||
"n",
|
vim.api.nvim_echo({{msg, "ErrorMsg"}}, false, {})
|
||||||
"N",
|
return
|
||||||
"<Cmd>execute('normal! ' . v:count1 . 'Nzzzv')<CR><Cmd>lua require('hlslens').start()<CR>",
|
end
|
||||||
{ noremap = true, silent = true }
|
require('hlslens').start()
|
||||||
)
|
end
|
||||||
|
|
||||||
vim.api.nvim_set_keymap("n", "*", "<Plug>(asterisk-z*)<Cmd>lua require('hlslens').start()<CR>", { silent = true })
|
vim.keymap.set('n', 'n', '',
|
||||||
vim.api.nvim_set_keymap("n", "#", "<Plug>(asterisk-z#)<Cmd>lua require('hlslens').start()<CR>", { silent = true })
|
{
|
||||||
|
noremap = true,
|
||||||
|
silent = true,
|
||||||
|
callback = function() activate_hlslens('n') end
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set('n', 'N', '',
|
||||||
|
{
|
||||||
|
noremap = true,
|
||||||
|
silent = true,
|
||||||
|
callback = function() activate_hlslens('N') end
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set('n', '*', "<Plug>(asterisk-z*)<Cmd>lua require('hlslens').start()<CR>", { silent = true })
|
||||||
|
vim.keymap.set('n', '#', "<Plug>(asterisk-z#)<Cmd>lua require('hlslens').start()<CR>", { silent = true })
|
||||||
|
|||||||
@@ -1,21 +1,9 @@
|
|||||||
|
local fn = vim.fn
|
||||||
local api = vim.api
|
local api = vim.api
|
||||||
local lsp = vim.lsp
|
local lsp = vim.lsp
|
||||||
|
|
||||||
local utils = require("utils")
|
local utils = require("utils")
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
function M.show_line_diagnostics()
|
|
||||||
local opts = {
|
|
||||||
focusable = false,
|
|
||||||
close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" },
|
|
||||||
border = 'rounded',
|
|
||||||
source = 'always', -- show source in diagnostic popup window
|
|
||||||
prefix = ' '
|
|
||||||
}
|
|
||||||
vim.diagnostic.open_float(nil, opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
local custom_attach = function(client, bufnr)
|
local custom_attach = function(client, bufnr)
|
||||||
-- Mappings.
|
-- Mappings.
|
||||||
local opts = { silent = true, buffer = bufnr }
|
local opts = { silent = true, buffer = bufnr }
|
||||||
@@ -33,9 +21,31 @@ local custom_attach = function(client, bufnr)
|
|||||||
vim.keymap.set("n", "<space>q", function() vim.diagnostic.setqflist({open = true}) end, opts)
|
vim.keymap.set("n", "<space>q", function() vim.diagnostic.setqflist({open = true}) end, opts)
|
||||||
vim.keymap.set("n", "<space>ca", vim.lsp.buf.code_action, opts)
|
vim.keymap.set("n", "<space>ca", vim.lsp.buf.code_action, opts)
|
||||||
|
|
||||||
vim.cmd([[
|
vim.api.nvim_create_autocmd("CursorHold", {
|
||||||
autocmd CursorHold <buffer> lua require('config.lsp').show_line_diagnostics()
|
buffer=bufnr,
|
||||||
]])
|
callback = function()
|
||||||
|
local opts = {
|
||||||
|
focusable = false,
|
||||||
|
close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" },
|
||||||
|
border = 'rounded',
|
||||||
|
source = 'always', -- show source in diagnostic popup window
|
||||||
|
prefix = ' '
|
||||||
|
}
|
||||||
|
|
||||||
|
if not vim.b.diagnostics_pos then
|
||||||
|
vim.b.diagnostics_pos = { nil, nil }
|
||||||
|
end
|
||||||
|
|
||||||
|
local cursor_pos = vim.api.nvim_win_get_cursor(0)
|
||||||
|
if (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) and
|
||||||
|
#vim.diagnostic.get() > 0
|
||||||
|
then
|
||||||
|
vim.diagnostic.open_float(nil, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.b.diagnostics_pos = cursor_pos
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
-- Set some key bindings conditional on server capabilities
|
-- Set some key bindings conditional on server capabilities
|
||||||
if client.resolved_capabilities.document_formatting then
|
if client.resolved_capabilities.document_formatting then
|
||||||
@@ -138,9 +148,9 @@ if utils.executable('bash-language-server') then
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
local sumneko_binary_path = vim.fn.exepath("lua-language-server")
|
local sumneko_binary_path = fn.exepath("lua-language-server")
|
||||||
if vim.g.is_mac or vim.g.is_linux and sumneko_binary_path ~= "" then
|
if vim.g.is_mac or vim.g.is_linux and sumneko_binary_path ~= "" then
|
||||||
local sumneko_root_path = vim.fn.fnamemodify(sumneko_binary_path, ":h:h:h")
|
local sumneko_root_path = fn.fnamemodify(sumneko_binary_path, ":h:h:h")
|
||||||
|
|
||||||
local runtime_path = vim.split(package.path, ";")
|
local runtime_path = vim.split(package.path, ";")
|
||||||
table.insert(runtime_path, "lua/?.lua")
|
table.insert(runtime_path, "lua/?.lua")
|
||||||
@@ -176,10 +186,10 @@ if vim.g.is_mac or vim.g.is_linux and sumneko_binary_path ~= "" then
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Change diagnostic signs.
|
-- Change diagnostic signs.
|
||||||
vim.fn.sign_define("DiagnosticSignError", { text = "✗", texthl = "DiagnosticSignError" })
|
fn.sign_define("DiagnosticSignError", { text = "✗", texthl = "DiagnosticSignError" })
|
||||||
vim.fn.sign_define("DiagnosticSignWarn", { text = "!", texthl = "DiagnosticSignWarn" })
|
fn.sign_define("DiagnosticSignWarn", { text = "!", texthl = "DiagnosticSignWarn" })
|
||||||
vim.fn.sign_define("DiagnosticSignInformation", { text = "", texthl = "DiagnosticSignInfo" })
|
fn.sign_define("DiagnosticSignInformation", { text = "", texthl = "DiagnosticSignInfo" })
|
||||||
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
||||||
|
|
||||||
-- global config for diagnostic
|
-- global config for diagnostic
|
||||||
vim.diagnostic.config({
|
vim.diagnostic.config({
|
||||||
@@ -200,5 +210,3 @@ vim.diagnostic.config({
|
|||||||
lsp.handlers["textDocument/hover"] = lsp.with(vim.lsp.handlers.hover, {
|
lsp.handlers["textDocument/hover"] = lsp.with(vim.lsp.handlers.hover, {
|
||||||
border = "rounded",
|
border = "rounded",
|
||||||
})
|
})
|
||||||
|
|
||||||
return M
|
|
||||||
|
|||||||
@@ -1,62 +1,119 @@
|
|||||||
local nvim_tree = require("nvim-tree")
|
local nvim_tree = require("nvim-tree")
|
||||||
|
|
||||||
nvim_tree.setup({
|
nvim_tree.setup({
|
||||||
disable_netrw = true,
|
auto_reload_on_write = true,
|
||||||
hijack_netrw = true,
|
disable_netrw = false,
|
||||||
open_on_setup = false,
|
hijack_cursor = false,
|
||||||
ignore_ft_on_setup = {},
|
hijack_netrw = true,
|
||||||
open_on_tab = false,
|
hijack_unnamed_buffer_when_opening = false,
|
||||||
hijack_cursor = false,
|
ignore_buffer_on_setup = false,
|
||||||
update_cwd = false,
|
open_on_setup = false,
|
||||||
update_to_buf_dir = {
|
open_on_setup_file = false,
|
||||||
enable = true,
|
open_on_tab = false,
|
||||||
auto_open = true,
|
sort_by = "name",
|
||||||
},
|
update_cwd = false,
|
||||||
diagnostics = {
|
view = {
|
||||||
enable = false,
|
width = 30,
|
||||||
icons = {
|
height = 30,
|
||||||
hint = "",
|
hide_root_folder = false,
|
||||||
info = "",
|
side = "left",
|
||||||
warning = "",
|
preserve_window_proportions = false,
|
||||||
error = "",
|
number = false,
|
||||||
},
|
relativenumber = false,
|
||||||
},
|
signcolumn = "yes",
|
||||||
update_focused_file = {
|
mappings = {
|
||||||
enable = false,
|
custom_only = false,
|
||||||
update_cwd = false,
|
list = {
|
||||||
ignore_list = {},
|
-- user mappings go here
|
||||||
},
|
},
|
||||||
system_open = {
|
},
|
||||||
cmd = nil,
|
},
|
||||||
args = {},
|
renderer = {
|
||||||
},
|
indent_markers = {
|
||||||
filters = {
|
enable = false,
|
||||||
dotfiles = false,
|
icons = {
|
||||||
custom = {},
|
corner = "└ ",
|
||||||
},
|
edge = "│ ",
|
||||||
git = {
|
none = " ",
|
||||||
enable = true,
|
},
|
||||||
ignore = true,
|
},
|
||||||
timeout = 500,
|
icons = {
|
||||||
},
|
webdev_colors = true,
|
||||||
view = {
|
},
|
||||||
width = 35,
|
},
|
||||||
height = 30,
|
hijack_directories = {
|
||||||
hide_root_folder = false,
|
enable = true,
|
||||||
side = "left",
|
auto_open = true,
|
||||||
auto_resize = true,
|
},
|
||||||
mappings = {
|
update_focused_file = {
|
||||||
custom_only = false,
|
enable = false,
|
||||||
list = {},
|
update_cwd = false,
|
||||||
},
|
ignore_list = {},
|
||||||
number = false,
|
},
|
||||||
relativenumber = false,
|
ignore_ft_on_setup = {},
|
||||||
signcolumn = "yes",
|
system_open = {
|
||||||
},
|
cmd = "",
|
||||||
trash = {
|
args = {},
|
||||||
cmd = "trash",
|
},
|
||||||
require_confirm = true,
|
diagnostics = {
|
||||||
},
|
enable = false,
|
||||||
|
show_on_dirs = false,
|
||||||
|
icons = {
|
||||||
|
hint = "",
|
||||||
|
info = "",
|
||||||
|
warning = "",
|
||||||
|
error = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filters = {
|
||||||
|
dotfiles = false,
|
||||||
|
custom = {},
|
||||||
|
exclude = {},
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
enable = true,
|
||||||
|
ignore = true,
|
||||||
|
timeout = 400,
|
||||||
|
},
|
||||||
|
actions = {
|
||||||
|
use_system_clipboard = true,
|
||||||
|
change_dir = {
|
||||||
|
enable = true,
|
||||||
|
global = false,
|
||||||
|
restrict_above_cwd = false,
|
||||||
|
},
|
||||||
|
open_file = {
|
||||||
|
quit_on_open = false,
|
||||||
|
resize_window = false,
|
||||||
|
window_picker = {
|
||||||
|
enable = true,
|
||||||
|
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
|
||||||
|
exclude = {
|
||||||
|
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
||||||
|
buftype = { "nofile", "terminal", "help" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
trash = {
|
||||||
|
cmd = "trash",
|
||||||
|
require_confirm = true,
|
||||||
|
},
|
||||||
|
log = {
|
||||||
|
enable = false,
|
||||||
|
truncate = false,
|
||||||
|
types = {
|
||||||
|
all = false,
|
||||||
|
config = false,
|
||||||
|
copy_paste = false,
|
||||||
|
diagnostics = false,
|
||||||
|
git = false,
|
||||||
|
profile = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_set_keymap("n", "<space>s", "<cmd>lua require'nvim-tree'.toggle(false, true)<CR>", { noremap = true, silent = true })
|
vim.keymap.set('n', '<space>s', function()
|
||||||
|
return require('nvim-tree').toggle(false, true)
|
||||||
|
end,
|
||||||
|
{ noremap = true, silent = true, desc = "toggle nvim-tree"})
|
||||||
|
|||||||
@@ -8,4 +8,7 @@ require('hop').setup({
|
|||||||
quit_key='<Esc>',
|
quit_key='<Esc>',
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_set_keymap('n', 'f', "<cmd>lua require'hop'.hint_char2()<cr>", {noremap = true})
|
vim.keymap.set('n', 'f', function()
|
||||||
|
return require('hop').hint_char2()
|
||||||
|
end,
|
||||||
|
{ silent = true, noremap = true, desc = "nvim-hop char2" })
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
local fn = vim.fn
|
||||||
|
|
||||||
local function spell()
|
local function spell()
|
||||||
if vim.o.spell then
|
if vim.o.spell then
|
||||||
return string.format("[SPELL]")
|
return string.format("[SPELL]")
|
||||||
@@ -9,7 +11,7 @@ end
|
|||||||
local function ime_state()
|
local function ime_state()
|
||||||
if vim.g.is_mac then
|
if vim.g.is_mac then
|
||||||
-- ref: https://github.com/vim-airline/vim-airline/blob/master/autoload/airline/extensions/xkblayout.vim#L11
|
-- ref: https://github.com/vim-airline/vim-airline/blob/master/autoload/airline/extensions/xkblayout.vim#L11
|
||||||
local layout = vim.fn.libcall(vim.g.XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
|
local layout = fn.libcall(vim.g.XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
|
||||||
if layout == '0' then
|
if layout == '0' then
|
||||||
return '[CN]'
|
return '[CN]'
|
||||||
end
|
end
|
||||||
@@ -35,20 +37,20 @@ end
|
|||||||
local function mixed_indent()
|
local function mixed_indent()
|
||||||
local space_pat = [[\v^ +]]
|
local space_pat = [[\v^ +]]
|
||||||
local tab_pat = [[\v^\t+]]
|
local tab_pat = [[\v^\t+]]
|
||||||
local space_indent = vim.fn.search(space_pat, 'nwc')
|
local space_indent = fn.search(space_pat, 'nwc')
|
||||||
local tab_indent = vim.fn.search(tab_pat, 'nwc')
|
local tab_indent = fn.search(tab_pat, 'nwc')
|
||||||
local mixed = (space_indent > 0 and tab_indent > 0)
|
local mixed = (space_indent > 0 and tab_indent > 0)
|
||||||
local mixed_same_line
|
local mixed_same_line
|
||||||
if not mixed then
|
if not mixed then
|
||||||
mixed_same_line = vim.fn.search([[\v^(\t+ | +\t)]], 'nwc')
|
mixed_same_line = fn.search([[\v^(\t+ | +\t)]], 'nwc')
|
||||||
mixed = mixed_same_line > 0
|
mixed = mixed_same_line > 0
|
||||||
end
|
end
|
||||||
if not mixed then return '' end
|
if not mixed then return '' end
|
||||||
if mixed_same_line ~= nil and mixed_same_line > 0 then
|
if mixed_same_line ~= nil and mixed_same_line > 0 then
|
||||||
return 'MI:'..mixed_same_line
|
return 'MI:'..mixed_same_line
|
||||||
end
|
end
|
||||||
local space_indent_cnt = vim.fn.searchcount({pattern=space_pat, max_count=1e3}).total
|
local space_indent_cnt = fn.searchcount({pattern=space_pat, max_count=1e3}).total
|
||||||
local tab_indent_cnt = vim.fn.searchcount({pattern=tab_pat, max_count=1e3}).total
|
local tab_indent_cnt = fn.searchcount({pattern=tab_pat, max_count=1e3}).total
|
||||||
if space_indent_cnt > tab_indent_cnt then
|
if space_indent_cnt > tab_indent_cnt then
|
||||||
return 'MI:'..tab_indent
|
return 'MI:'..tab_indent
|
||||||
else
|
else
|
||||||
|
|||||||
8
lua/custom-map.lua
Normal file
8
lua/custom-map.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
local keymap = vim.keymap
|
||||||
|
|
||||||
|
-- Go to the begining and end of current line in insert mode quickly
|
||||||
|
keymap.set('i', '<C-A>', '<HOME>')
|
||||||
|
keymap.set('i', '<C-E>', '<END>')
|
||||||
|
|
||||||
|
-- Delete the character to the right of the cursor
|
||||||
|
keymap.set('i', '<C-D>', '<DEL>')
|
||||||
@@ -136,7 +136,7 @@ require("packer").startup({
|
|||||||
use({ "akinsho/bufferline.nvim", event = "VimEnter", config = [[require('config.bufferline')]] })
|
use({ "akinsho/bufferline.nvim", event = "VimEnter", config = [[require('config.bufferline')]] })
|
||||||
|
|
||||||
-- fancy start screen
|
-- fancy start screen
|
||||||
use { 'goolord/alpha-nvim', event = 'VimEnter', config = [[require('config.alpha-nvim')]] }
|
-- use { 'goolord/alpha-nvim', event = 'VimEnter', config = [[require('config.alpha-nvim')]] }
|
||||||
|
|
||||||
use({
|
use({
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
@@ -359,7 +359,7 @@ require("packer").startup({
|
|||||||
end,
|
end,
|
||||||
config = {
|
config = {
|
||||||
max_jobs = 16,
|
max_jobs = 16,
|
||||||
compile_path = util.join_paths(vim.fn.stdpath('config'), 'lua', 'packer_compiled.lua'),
|
compile_path = util.join_paths(fn.stdpath('data'), 'site', 'lua', 'packer_compiled.lua'),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
local fn = vim.fn
|
||||||
|
|
||||||
-- inspect something
|
-- inspect something
|
||||||
-- Taken from https://github.com/jamestthompson3/vimConfig/blob/eeef4a8eeb5a24938f8a0969a35f69c78643fb66/lua/tt/nvim_utils.lua#L106
|
|
||||||
function inspect(item)
|
function inspect(item)
|
||||||
print(vim.inspect(item))
|
vim.pretty_print(item)
|
||||||
end
|
end
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
function M.executable(name)
|
function M.executable(name)
|
||||||
if vim.fn.executable(name) > 0 then
|
if fn.executable(name) > 0 then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -15,12 +16,12 @@ function M.executable(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.may_create_dir()
|
function M.may_create_dir()
|
||||||
local fpath = vim.fn.expand('<afile>')
|
local fpath = fn.expand('<afile>')
|
||||||
local parent_dir = vim.fn.fnamemodify(fpath, ":p:h")
|
local parent_dir = fn.fnamemodify(fpath, ":p:h")
|
||||||
local res = vim.fn.isdirectory(parent_dir)
|
local res = fn.isdirectory(parent_dir)
|
||||||
|
|
||||||
if res == 0 then
|
if res == 0 then
|
||||||
vim.fn.mkdir(parent_dir, 'p')
|
fn.mkdir(parent_dir, 'p')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -24,3 +24,7 @@ def main():
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
endsnippet
|
endsnippet
|
||||||
|
|
||||||
|
snippet sol "solution" b
|
||||||
|
solution = Solution()
|
||||||
|
endsnippet
|
||||||
|
|||||||
@@ -415,3 +415,18 @@ src
|
|||||||
RGBA
|
RGBA
|
||||||
yapf
|
yapf
|
||||||
Vimming
|
Vimming
|
||||||
|
overfitting
|
||||||
|
PCA
|
||||||
|
SVM
|
||||||
|
KNN
|
||||||
|
leetcode
|
||||||
|
Logitech
|
||||||
|
WTF
|
||||||
|
tensorboard
|
||||||
|
Nvidia
|
||||||
|
GPG
|
||||||
|
manpage
|
||||||
|
metatable
|
||||||
|
open3d
|
||||||
|
pyntcloud
|
||||||
|
param
|
||||||
|
|||||||
Reference in New Issue
Block a user