本文僅適合於對vim有一定了解的人閱讀,沒有了解的人可以看看文中的視頻我使用 neovim 代替 vim ,有些插件是 neovim 獨佔, neovim 和 vim 的區別請自行
google系統: Manjaro(Linux)
前言
之前我一直使用的是 vscode 和 typora 作為 markdown 編輯器,這兩個都挺好用的,都有 linux 版本,typora 可能是我見過的最優雅的編輯器了
不過直到我遇見了 vim,一款被譽為編輯器之神的軟件,才明白,顏值啥的都是浮雲,效率才是第一位。關於 vim 如何高效率寫 markdowm,我也是借鑑了別人的思路。視頻在下方,推薦觀看,看完他的所有視頻,我相信你會愛上 linux 的 視頻地址
設置
vim 的一大思想就是手不離開鍵盤,所有操作全都靠鍵盤完成,還可以自定義各種各樣的快捷鍵,無疑能很大程度提高效率。vim 基本操作方法就不用我講了吧,默認大家都用過 vim
markdown 的語法其實很簡單,都是一些特定的格式。但是對於追求效率的人,markdown 還是不夠快,下面是一些提速思路
設置錨點,自定義快捷鍵
可能你會疑問,自定義就自定義嘛,為什麼還要設置錨點?錨點又是什麼?錨點的作用在於讓你快速跳轉到下一個你需要輸入的位置,而不需要通過方向鍵來移動,或者是鼠標來移動
看下這個設置鏈接的例子
錨點就是,在插入模式中使用,a 創建鏈接模板,使用,f 來尋找下一個錨點,並刪除這個錨點,邏輯就這麼簡單,其他的格式也是一樣的,可以讓你完全擺脫方向鍵和鼠標
快捷鍵設置
<code>> 快速添加錨點
autocmd Filetype markdown inoremap <buffer> <silent> ,,
> 尋找下一個錨點
autocmd Filetype markdown inoremap <buffer> <silent> ,f/ /<silent>/<buffer>/<silent>/<buffer>/<code>:nohlsearch c4l
> 尋找下一個錨點並刪除錨點前的空格
autocmd Filetype markdown inoremap <buffer> <silent> ,s/ /<silent>/<buffer>:nohlsearch c5l
> 分割線
autocmd Filetype markdown inoremap <buffer> <silent> ,- ---<enter><enter>
> 加粗
autocmd Filetype markdown inoremap <buffer> <silent> ,b ****F*hi /<silent>/<buffer>/<enter>/<enter>/<silent>/<buffer>
> 刪除線
autocmd Filetype markdown inoremap <buffer> <silent> ,x ~~~~F~hi /<silent>/<buffer>
> 斜體
autocmd Filetype markdown inoremap <buffer> <silent> ,p **F*i /<silent>/<buffer>
> 行內代碼
autocmd Filetype markdown inoremap <buffer> <silent> ,q ``F`i /<silent>/<buffer>
> 代碼塊
autocmd Filetype markdown inoremap <buffer> <silent> ,c ```<enter><enter>```<enter><enter>4kA /<enter>/<enter>/<enter>/<enter>/<silent>/<buffer>
> todo
autocmd Filetype markdown inoremap <buffer> <silent> ,g - [ ] <enter>kA /<enter>/<silent>/<buffer>
> 下劃線
autocmd Filetype markdown inoremap <buffer> <silent> ,uF/hi /<silent>/<buffer>
> 圖片
autocmd Filetype markdown inoremap <buffer> <silent> ,p ![]()F[a /<silent>/<buffer>
> 鏈接
autocmd Filetype markdown inoremap <buffer> <silent> ,a []()F[a /<silent>/<buffer>
> 一號標題
autocmd Filetype markdown inoremap <buffer> <silent> ,1 #<space><enter>kA /<enter>/<space>/<silent>/<buffer>
> 二號標題
autocmd Filetype markdown inoremap <buffer> <silent> ,2 ##<space><enter>kA /<enter>/<space>/<silent>/<buffer>
> 三號標題
autocmd Filetype markdown inoremap <buffer> <silent> ,3 ###<space><enter>kA /<enter>/<space>/<silent>/<buffer>
> 四號標題
autocmd Filetype markdown inoremap <buffer> <silent> ,4 ####<space><enter>kA /<enter>/<space>/<silent>/<buffer>
> 插入當前時間
autocmd Filetype markdown inoremap <buffer> <silent> ,t=strftime("%Y-%m-%d %H:%M:%S") /<silent>/<buffer>
這個快捷鍵的設置算是完全展示了 vim 的神奇
首先看這個幾個前綴,需要分為三部分來看
- autocmd Filetype markdown會在打開文件時判斷當前文件類型,如果是 markdown 就執行後面的命令
- inoremap 也就是映射命令map,當然它也可以添加很多前綴1
nore
表示非遞歸,而遞歸的映射,也就是如果鍵a被映射成了b,c又被映射成了a,如果映射是遞歸的,那麼c就被映射成了b
n
表示在普通模式下生效
v
表示在可視模式下生效
i
表示在插入模式下生效
c
表示在命令行模式下生效所以inoremap也就表示在插入模式下生效的非遞歸映射 - <buffer> <silent> map的參數,必須放在map後面<buffer> 表示僅在當前緩衝區生效,就算你一開始打開的是md文件,映射生效了,但當你在當前頁面打開非md文件,該映射也只會在md文件中生效<silent> 如果映射的指令中使用了命令行,命令行中也不會顯示執行過程/<silent>/<buffer>/<silent>/<buffer>
後面就是按鍵和映射的指令了,邏輯什麼的就是對 vim 的直接操作,就不詳細介紹了
表格
畫表格最麻煩的就是格式化問題,我們需要用到vim-table-mode 插件
安裝方法 Github 上寫的很詳細,我就不仔細說了,我只講講我怎麼寫表格,我就用的默認配置
使用<leader>tm來開啟表格格式化(如果你不知道<leader>是什麼鍵的話請自行 google),先添加錨點來快速搭建整個表格框架,再依次進行替換/<leader>/<leader>
列表
使用bullets.vim來自動添加列表項和整理列表
預覽
我用的是markdown-preview.nvim
詳細配置請查看 Github,我只使用了默認配置,添加了以下開啟預覽的快捷鍵
<code>noremap r :call CompileRunGcc()/<code>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o % :sp
:res -15
:term ./%<
elseif &filetype == 'cpp'
set splitbelow
exec "!g++ -std=c++11 % -Wall -o % :sp
:res -15
:term ./%<
elseif &filetype == 'sh'
:!time bash %
elseif &filetype == 'python'
set splitbelow
:sp
:term python3 %
elseif &filetype == 'html'
silent! exec "!firefox % &"
elseif &filetype == 'markdown'
exec "MarkdownPreview"
elseif &filetype == 'go'
set splitbelow
:sp
:term go run %
endif
endfunc
這個腳本可以使用r來編譯執行或預覽c/c++, html, python, go, markdown
總結
我就用 markdown 寫寫博客,追求效率至上,使用場景比較單一,還有一些好用的 markdwon 插件我沒怎麼用過就不介紹了
閱讀更多 ourongxing 的文章