vim
作者:解琛
时间:2020 年 8 月 29 日
一、与系统剪切板进行交互
先进 vim 里面,在 normal 模式下用:reg,查看有没有 + 开头的行,如果没有,则在终端进行安装。
sudo apt install vim-gnome
使用 vimplus 的 y 即可完成系统剪切板的复制。
有了 + 剪切板后,使用以下指令进行确认。
vim --version | grep clipboard
之后修改 vim 的启动文件即可。
set clipboard=unnamesudo apt install vim-gnome
二、Markdown 目录管理插件
Plug 'mzlogin/vim-markdown-toc'
" markdown 目录配置;
map <F5> :GenTocGFM<CR>
三、将剪切板中的图片插入为 Markdown 代码
"安装插件
Plug 'ferrine/md-img-paste.vim'
"设置默认储存文件夹。这里表示储存在当前文档所在文件夹下的'pic'文件夹下,相当于 ./pic/
let g:mdip_imgdir = 'pic'
"设置默认图片名称。当图片名称没有给出时,使用默认图片名称
let g:mdip_imgname = 'image'
"设置快捷键,个人喜欢 Ctrl+p 的方式,比较直观
autocmd FileType markdown nnoremap <silent> <C-p> :call mdip#MarkdownClipboardImage()<CR>F%i
四、刷新当前页面
:e
to reload the file. I believe, if you've made changes to the
file, it requires you to do
:e!
to force-discard your local changes and reload from the disk.
If I'm not sure, I'll often yank my current copy into a scratch
buffer/window, force-reload the file from disk, and then use
附录一:vimrc.custom.config
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 用户自定义配置(该文件放一般性配置,可覆盖~/.vimrc里的配置,若要增加、卸载插件,请放入~/.vimrc.custom.plugins)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 开启相对行号
set relativenumber
" 开启鼠标
set mouse=a
" 设置光标所在列高亮
" set cursorcolumn
" indentLine 开启代码对齐线
" let g:indentLine_enabled = 1
" markdown
let g:markdown_preview_sync_google_chrome_path = "/usr/bin/google-chrome"
let g:mkdp_path_to_chrome = "google-chrome"
" 设置 chrome 浏览器的路径(或是启动 chrome(或其他现代浏览器)的命令)
" 如果设置了该参数, g:mkdp_browserfunc 将被忽略
let g:mkdp_browserfunc = 'MKDP_browserfunc_default'
" vim 回调函数, 参数为要打开的 url
let g:mkdp_auto_start = 0
" 设置为 1 可以在打开 markdown 文件的时候自动打开浏览器预览,只在打开
" markdown 文件的时候打开一次
let g:mkdp_auto_open = 1
" 设置为 1 在编辑 markdown 的时候检查预览窗口是否已经打开,否则自动打开预
" 览窗口
let g:mkdp_auto_close = 1
" 在切换 buffer 的时候自动关闭预览窗口,设置为 0 则在切换 buffer 的时候不
" 自动关闭预览窗口
let g:mkdp_refresh_slow = 0
" 设置为 1 则只有在保存文件,或退出插入模式的时候更新预览,默认为 0,实时
" 更新预览
let g:mkdp_command_for_global = 0
" 设置为 1 则所有文件都可以使用 MarkdownPreview 进行预览,默认只有 markdown
" 文件可以使用改命令
let g:mkdp_open_to_the_world = 0
" 设置为 1, 在使用的网络中的其他计算机也能访问预览页面
" 默认只监听本地(127.0.0.1),其他计算机不能访问
nmap <silent> <F7> <Plug>MarkdownPreview
imap <silent> <F7> <Plug>MarkdownPreview
nmap <silent> <F8> <Plug>StopMarkdownPreview
imap <silent> <F8> <Plug>StopMarkdownPreview
let g:mkdp_brower = 'google-chrome'
autocmd Filetype markdown noremap ,m :MarkdownPreview<CR>
autocmd Filetype markdown noremap ,ms :MarkdownPreviewStop<CR>
map<F2> :NERDTreeToggle<CR>
" " Doxygen
" let g:DoxygenToolkit_authorName="chxuan, 787280310@qq.com"
" let g:DoxygenToolkit_authorName="chxuan, 787280310@qq.com"
" let s:licenseTag = "Copyrigtt(C)\<enter>"
" let s:licenseTag = "Copyrigtt(C)\<enter>"
" let s:licenseTag = s:licenseTag . "For free\<enter>"
" let s:licenseTag = s:licenseTag . "All right reserved\<enter>"
" let g:DoxygenToolkit_licenseTag = s:licenseTag
" let g:DoxygenToolkit_briefTag_funcName="yes"
" let g:doxygen_enhanced_color=1
" let g:DoxygenToolkit_commentType="Qt"
" Table-mode
let g:table_mode_corner = '|'
let g:table_mode_border=0
let g:table_mode_fillchar=' '
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>' : '__'
" Auto-save
let g:auto_save = 1 " enable AutoSave on Vim echodoc_enable_at_startup
" MouseType
let &t_SI.="\e[5 q" "SI = INSERT mode
let &t_SR.="\e[5 q" "SR = REPLACE mode
let &t_EI.="\e[5 q" "EI = NORMAL mode (ELSE)
"Cursor settings:
" 1 -> blinking block
" 2 -> solid block
" 3 -> blinking underscore
" 4 -> solid underscore
" 5 -> blinking vertical bar
" 6 -> solid vertical bar
"let &t_SI = "\<Esc>]50;CursorShape=1\x7"
"let &t_SR = "\<Esc>]50;CursorShape=2\x7"
"let &t_EI = "\<Esc>]50;CursorShape=0\x7"
" vim + latex
let g:tex_flavor='latex'
let g:vimtex_view_method='zathura'
let g:vimtex_quickfix_mode=0
set conceallevel=1
let g:tex_conceal='abdmg'
" ultisnips
" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"
" 格式化 Json 文件
map <F4><Esc>:%!python -m json.tool<CR>
" 默认复制到系统剪切板;
set clipboard=unnamedplus
" 消除鼠标滚动时的抖动;
" noremap <ScrollWheelDown><ScrollWheelUp> <ScrollWheelDown>
" noremap <ScrollWheelUp><ScrollWheelUp> <ScrollWheelUp>
" markdown 目录配置;
map <F5> :GenTocGFM<CR>
"autocmd Filetype markdown map <leader>w yiWi[<esc>Ea](<esc>pa)
autocmd Filetype markdown inoremap ,f <Esc>/<++><CR>:nohlsearch<CR>c4l
autocmd Filetype markdown inoremap ,n ---<Enter><Enter>
autocmd Filetype markdown inoremap ,b **** <++><Esc>F*hi
autocmd Filetype markdown inoremap ,s ~~~~ <++><Esc>F~hi
autocmd Filetype markdown inoremap ,i ** <++><Esc>F*i
autocmd Filetype markdown inoremap ,d `` <++><Esc>F`i
autocmd Filetype markdown inoremap ,c ```<Enter><++><Enter>```<Enter><Enter><++><Esc>4kA
autocmd Filetype markdown inoremap ,p <div align=center>![](<++>)<div align=left> <++><Esc>F[a
" autocmd Filetype markdown inoremap ,h ===============<Enter><Esc>F=hi
autocmd Filetype markdown inoremap ,h ===============<Enter>
autocmd Filetype markdown inoremap ,a [](<++>) <++><Esc>F[a
autocmd Filetype markdown inoremap ,1 #<Space><Enter><++><Esc>kA
autocmd Filetype markdown inoremap ,2 ##<Space><Enter><++><Esc>kA
autocmd Filetype markdown inoremap ,3 ###<Space><Enter><++><Esc>kA
autocmd Filetype markdown inoremap ,4 ####<Space><Enter><++><Esc>kA
autocmd Filetype markdown inoremap ,l --------<Enter>
附录二、vimrc.custom.plugins
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 用户自定义插件列表(该文件只放插件,若要增加其他配置,请放入~/.vimrc.custom.config)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 增加~/.vimrc里没有的插件
" 增加插件后需要进行插件安装,安装步骤如下:
" 1.执行:w保存修改
" 2.执行,s重新加载vim配置
" 3.执行,,i进行插件安装
" Plug 'iamcco/mathjax-support-for-mkdp'
" Plug 'iamcco/markdown-preview.vim'
" Plug 'Yggdroot/indentLine'
" Plug 'gorodinskiy/vim-coloresque'
" Plug 'vim-scripts/DoxygenToolkit.vim'
Plug 'dhruvasagar/vim-table-mode'
Plug '907th/vim-auto-save'
Plug 'lervag/vimtex'
Plug 'sirver/ultisnips'
Plug 'honza/vim-snippets'
Plug '/usr/local/opt/fzf'
Plug 'junegunn/fzf'
Plug 'mzlogin/vim-markdown-toc'
" Plug 'ferrine/md-img-paste.vim'
" 卸载/禁用~/.vimrc里的默认插件
" UnPlug 'chxuan/prepare-code'