我的 vim script 配置
- 在接触使用了
Spacemacs
后,我结合一些其他大佬的配置用Spacemacs
的思路修改了自己的NVIM
配置,思路是用<leader>
作为前缀来区分默认配置和用户自定义操作,另外添加了一些花里胡哨的操作绑定
简单介绍
let mapleader = "\<Space>"
- vs code 中有这个
Ctrl-a
的全选操作,感觉挺好用
nnoremap <leader><C-a> ggvG
- 这个属于是花里胡哨的操作之一,在visual模式下选中一段,按下空格加回车,就会在shell执行后返回结果,有时候可以帮忙做做算术,例如:
echo $((2 + 2))
vnoremap <leader><CR> "+d:read !<C-r>"<CR>
" read from linux command
vnoremap <leader>rd :r !
- 我想一个刚接触的vim的人总是会被vim的复制粘贴功能所困扰,程序员怎么能离开复制粘贴呢!用一个
<leader>
来解决这个问题,通过下面的键位绑定,<leader>
后的所有相关的复制粘贴操作都会在系统的board上操作,我个人认为还是隔离开vim的剪切版和系统的比较好
" paste to system board
vnoremap <leader>y "+y
vnoremap <leader>p "+p
vnoremap <leader>P "+P
vnoremap <leader>d "+d
nnoremap <leader>y "+yy
nnoremap <leader>p "+p
nnoremap <leader>P "+P
- 移动行,最开始是在vs2019上按出来过,看到这段国外大佬的配置刚好满足要求,就偷过来了。
" move line with Ctrl + (shift) + J/K
nnoremap <C-j> :m +1<CR>
nnoremap <C-k> :m -2<CR>
inoremap <C-j> <Esc>:m +1<CR>i
inoremap <C-k> <Esc>:m -2<CR>i
vnoremap <C-j> :m '>+1<CR>gvgv
vnoremap <C-k> :m '<-2<CR>gvgv
- 把V模式下选中的内容复制到Command模式中,第二个用来辅助查找
" paste to vim command
vnoremap <leader>! "+y:<C-r>"
" paste to vim command and search
vnoremap <leader>/ "+y:/<C-r>"<CR>
" basic move config
noremap <Up> <c-y>
noremap <Down> <c-e>
nmap <leader><C-s> :w<CR>
nmap <leader><C-q> :q<CR>
nnoremap <leader>l <C-w>l
nnoremap <leader>k <C-w>k
nnoremap <leader>h <C-w>h
nnoremap <leader>j <C-w>j