最近老師在課堂上分享了一段 vim 設定,能在 vim 中編譯 python 並把執行結果貼到 vim 裡面,設定如下
autocmd BufRead *.py nmap <leader>c :w<Esc>G:r!python %<CR>`.
雖然知道只要貼上去就能用了,但是秉持著「有所了解的東西用起來比較安心的原則」就去查了一下到底這裡面到底是啥
python編譯設定詳解
首先是 autocmd BufRead *.py [action]
: 若是開始編輯的文件為某 python 檔時執行 [action]
nmap [button] [action]
: map [button] 到 [action],只在 Normal mode 生效,在這裡是被上面自動執行的 [action]
<leader>c
: <leader> 默認設定為 \
鍵,而且能以 let mapleader = [key]
來做更動,這裡作為執行接下來指定動作的 [button]
接著的一長串就是 map 到 [button] 的 [action]
:w<Esc>G
: 儲存,按下 Esc
(返回 Normal mode),按下G
(將 cursor 移到文末)
:r!{cmd}
: 用 terminal 執行 {cmd} 並將其 standard output(就是會輸出到 terminal 上那個) 插入到 cursor 的位置下
python %<CR>
: 編譯並執行此 python 檔,而 %
在這裡是一個特別的 vim keyword,代表 current file 的名字、<CR> 是 Enter
鍵
`.
: 將 cursor 移到上一個更動的點
結合起來,這段 vim 設定就是:「按下\c
之後會將結果插入 cursor 後並將 cursor 前移至結果前」
我的 LaTex 編譯設定
了解了其中奧秘之後,就是魔改時間啦~ XD
正好最近開始用 LaTex(一種能將 code 編譯成好看的 pdf 的工具),每次預覽都要重新編譯一次好麻煩
設定如下(自創)
autocmd BufRead *.tex nmap <Leader>c :w<Esc>:!pdflatex %<CR>:!envince %:r:S.pdf &<CR><CR>
就不講解了請大家自己研究 😀
結論
-
如何快速(?)查詢 vim 設定:
- Vim help files
- 在 vim 中輸入
:h [keyword]
-
關於代表檔名的
%
: filename-modifiers(關鍵字) 可以用來修改這個%
-
關於
<Leader>
key: What is the <leader> in a .vimrc file -
envince 是 ubuntu 上內建的 pdf 檢視器,由於在 terminal 的指令都會將 stdin 連接到 terminal,所以要加上
&
來變成背景執行 —— Difference between nohup, disown and & -
補充: NERDTree 是個好東西,ctag/cscope 也是~