1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
| "设置全局leader键 let mapleader = "," let g:mapleader = "," """""""""常用快捷键"""""""""""" " 插入模式下kj返回normal模式 inoremap kj <Esc> "插入模式映射上下左右 inoremap <c-j> <DOWN> inoremap <c-k> <UP> inoremap <c-h> <LEFT> inoremap <c-l> <RIGHT> " Y复制到行尾 nnoremap Y y$ " ,和k一块按去掉空行 noremap <leader>k :g/^$/d<CR> " ,和u一块按删除重复行 noremap <leader>u :sort<CR>:g/^(.*)$\n\1$/d<CR>
"全局删除行尾空格 nnoremap <leader>w :%s/\s+$//<cr>:let @/=''<CR>
"""""""""""""""""" 分屏""""""""""""""""""" " Disable the default s key noremap s <nop> " split the screens to up (horizontal), down (horizontal), left (vertical), right (vertical) noremap sk :set nosplitbelow<CR>:split<CR>:set splitbelow<CR> noremap sj :set splitbelow<CR>:split<CR> noremap sh :set nosplitright<CR>:vsplit<CR>:set splitright<CR> noremap sl :set splitright<CR>:vsplit<CR> "逆时针旋转你的分屏 noremap sq <C-w>t<C-w>K "顺时针旋转你的分屏 noremap se <C-w>t<C-w>H "格式化依赖插件tab vmap ga :Tabularize / vmap <leader>= :Tabularize /=<CR> " =对齐 vmap <leader>: :Tabularize /:<CR> " :对齐 vmap <leader>, :Tabularize /,<CR> " ,对齐 vmap <leader># :Tabularize /#<CR> " vmap <leader>* :Tabularize /*<CR> " *对齐 vmap <leader>' :Tabularize /'<CR> " '对齐 vmap <leader>" :Tabularize /"<CR> " " 对齐
"vim-table-mod vmap <leader>t :Tableize<CR> " 对齐表格
""""""""""""""""功能快捷键"""""""""""""" " wildfire 只能选择映射成空格依赖插件wildfire map s<SPACE> <Plug>(wildfire-fuel) vmap <SPACE> <Plug>(wildfire-water) "autocmd CmdwinEnter * nnoremap <CR> <CR> "autocmd BufReadPost quickfix nnoremap <CR> <CR> "加空格不进入插入模式 noremap <SPACE> i<SPACE><Esc><RIGHT> "用tab换行 noremap <TAB> i<CR><Esc> "noremap <S-CR> i<CR><Esc> " 在正常模式下添加空行 noremap <CR> o<ESC> noremap <S-Enter> O<Esc>
"""""""""""""""""""""vim-ui配置"""""""""""""""""""""'
"colorscheme lucario "colorscheme termschool "colorscheme seoul256 "colorscheme molokai colorscheme gruvbox
" ====================================== " 插件配置 " ======================================
"call plug call plug "美化================================================================== Plug 'itchyny/lightline.vim' " 启动界面 "Plug 'zgpio/vim-startify' Plug 'mhinz/vim-startify' "功能================================================================== "智能选中区域 "Plug 'zgpio/wildfire.vim' Plug 'gcmt/wildfire.vim' "高亮复制内容 Plug 'machakann/vim-highlightedyank' "多光标 Plug 'mg979/vim-visual-multi', {'branch': 'master'} "替换 Plug 'tpope/vim-surround' "智能选中 Plug 'gcmt/wildfire.vim' "对齐 Plug 'godlygeek/tabular' Plug 'dhruvasagar/vim-table-mode' call plug#end()
"开启高亮 syntax enable " 透明显示 hi Normal ctermfg=252 ctermbg=none
""""""""""""""基本配置"""""""""""""""""""""" " 不兼容vi命令 set nocompatible """""""""""""""""删除而不是剪切,并且共享系统剪切板""""""""""""""""""""""" nnoremap x "x nnoremap X "X
nnoremap c "c nnoremap C "C
"nnoremap d "d "nnoremap D "D "vnoremap d "_d
if has('unnamedplus') set clipboard=unnamed,unnamedplus nnoremap <leader>d "+d nnoremap <leader>D "+D vnoremap <leader>d "+d else set clipboard=unnamed nnoremap <leader>d "d nnoremap <leader>D "D vnoremap <leader>d "*d endif
"换行不自动加注释 augroup Format-Options autocmd! autocmd BufEnter * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
" This can be done as well instead of the previous line, for setting formatoptions as you choose: autocmd BufEnter * setlocal formatoptions=crqn2l1j
augroup END
" 光标回到上次文件打开的位置 au BufReadPost * if line("'"") > 1 && line("'"") <= line("$") | exe "normal! g'"" | endif
" 在底部状态栏显示当前模式,如插入、命令模式 set showmode
" 在命令模式下显示当前命令,如输入2y时,会在状态栏显示命令,再次输入y时,执行命令,状态栏命令消失 set showcmd
" 是否显示状态栏。0表示不显示,1表示只在多窗口时显示,2表示显示。 set laststatus=2
" 在状态栏显示光标的当前位置 set ruler
" 支持鼠标 set mouse=a
" 当前文本使用uf8编码 set encoding=utf-8
" 保留命令的历史记录数 set history=5555
"相对行号 set number relativenumber
" 设置行宽,即一行显示多少个字符 set textwidth=80
" 自动折行,即太长的行分成几行显示,关闭自动折行为set nowrap set nowrap
" 只有遇到指定的符号(比如空格、连词号和其他标点符号),才发生折行。也就是说,不会在单词内部折行 set linebreak
" 垂直滚动时,光标距离顶部/底部的位置(单位:行) set scrolloff=5
" 水平滚动时,光标距离行首或行尾的位置(单位:字符)。该配置在不折行时比较有用。 set sidescrolloff=10
"""""""""""""""""""""""""""" 缩进相关配置 """"""""""""""""""
" 按下tab时显示的空格数 set tabstop=4
" tab转化为多少个空格 set softtabstop=4
" 执行移位操作>>或<<时,显示的空格数 set shiftwidth=4
" 由于 tab 键在不同的编辑器缩进不一致,该设置自动将 Tab 转为空格 set expandtab
" 自动缩略,当按下回车时,自动与上一行的缩进保持一致 set autoindent
"""""""""""""""""""""""""""" 搜索相关配置 """"""""""""""""""
" 光标遇到{[()]}时,会高亮显示另一半匹配的符号 set showmatch
" 高亮显示搜索的词 set hlsearch
" 增量搜索匹配结果,即每输入一个字母都会进行匹配 set incsearch
" 搜索时忽略大小写 set ignorecase
" 如果同时打开了ignorecase,那么对于只有一个大写字母的搜索词,将大小写敏感;其他情况都是大小写不敏感 set smartcase
"""""""""""""""""""""""""""" 编辑相关配置 """""""""""""""""" " 不创建交换文件。交换文件主要用于系统崩溃时恢复文件,文件名的开头是.、结尾是.swp set noswapfile
" 自动切换工作目录。这主要用在一个 Vim 会话之中打开多个文件的情况,默认的工作目录是打开的第一个文件的目录。该配置可以将工作目录自动切换到,正在编辑的文件的目录。 set autochdir
" 打开文件监视。如果在编辑过程中文件发生外部改变,就会发出提示。 set autoread
" 命令模式下,底部操作指令按下 Tab 键自动补全 set wildmenu
let &t_SI = "<Esc>]50;CursorShape=1\x7" let &t_EI = "<Esc>]50;CursorShape=0\x7" " 设置出错不发出声音 set vb t_vb= " 设置当前行黑色 highlight CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE
" 高亮行
set cursorline
"""""""""""function"""""""""""" "markdown表格转换 if has("win32") set rtp+=$HOME/.vim/after endif
let g:table_mode_corner = '|' let g:table_mode_border=0 let g:table_mode_fillchar=' ' let g:table_mode_delimiter=' '
function! s:isAtStartOfLine(mapping) let text_before_cursor = getline('.')[0 : col('.')-1] let mapping_pattern = '\V' . escape(a:mapping, '') let comment_pattern = '\V' . escape(substitute(&l:commentstring, '%s.$', '', ''), '') return (text_before_cursor =~? '^' . ('\v(' . comment_pattern . '\v)?') . '\s\v' . mapping_pattern . '\v$') endfunction inoreabbrev <expr> <bar><bar> \ <SID>isAtStartOfLine('||') ? \ '<c-o>:TableModeEnable<cr><bar><space><bar><left><left>' : '<bar><bar>' inoreabbrev <expr> __ \ <SID>isAtStartOfLine('') ? \ '<c-o>:silent! TableModeDisable<cr>' : ''
" 没有插件管理尝试自动安装plug if empty(glob('~/.config/nvim/autoload/plug.vim')) silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif
"vscode配置 "function! s:openVSCodeCommandsInVisualMode() " normal! gv " let visualmode = visualmode() " if visualmode == "V" " let startLine = line("v") " let endLine = line(".") " " 最后一个参数 1 表示操作后仍处于选择模式,0 则表示操作后退出选择模式 " call VSCodeNotifyRange("workbench.action.showCommands", startLine, endLine, 1) " else " let startPos = getpos("v") " let endPos = getpos(".") " call VSCodeNotifyRangePos("workbench.action.showCommands", startPos[1], endPos[1], startPos[2], endPos[2], 1) " endif "endfunction " "" workaround for calling command picker in visual mode "xnoremap <silent> <C-P> :<C-u>call <SID>openVSCodeCommandsInVisualMode()<CR> " " "if exists('g:vscode') " " VSCode extension "else " " ordinary neovim "endif " "" init.vim "nnoremap <silent> <C-j> :call VSCodeNotify('workbench.action.navigateDown')<CR> "nnoremap <silent> <C-k> :call VSCodeNotify('workbench.action.navigateUp')<CR> "nnoremap <silent> <C-h> :call VSCodeNotify('workbench.action.navigateLeft')<CR> "nnoremap <silent> <C-l> :call VSCodeNotify('workbench.action.navigateRight')<CR>
|