作中學之Vim實踐教程

作中學之學用學用Vim

Vim

Vim是一個很是好的文本編輯器,不少專業程序員使用Vim編輯代碼,即便之後你不編寫程序,只要跟文本打交道,都應該學學Vim,能夠瀏覽參考一下普通人的編輯利器——Vim這篇文章,看看Vim能夠如何用。css

Vim學習曲線很是陡峭,各類編輯器學習曲線以下圖(有調侃的意思):html

學習曲線

Vim跟五筆打字很相似,不會的時候好象很高大上,感受學起來很難,其實否則。我建議你們經過「作中學」來學習Vim,你會發現Vim學起來至關簡單,掌握三五個命令就能夠用起來了。具體來講經過VimTUTOR甚至玩遊戲(Vim大冒險PacVim)來學習。前端

玩遊戲去Vim大冒險PacVim通關就學會了Vim。git

VimTUTOR是個實踐教程,經過實踐30分鐘讓你對Vim編輯器入門,只要在命令行中輸入Vimtutor,而後跟着教程練習就能夠了。以下圖:程序員

vimtutor

vimtutor界面

而後你能夠把這張圖作計算機的桌面背景,參考《簡明 Vim 練級攻略》天天學習一兩個鍵,一兩週就能夠很好的用Vim了:
vimgithub

IT相關的同窗能夠看看程序員專用的Vim鍵盤圖:web

vim-programmer

程序員有幾個鍵提示一下:shell

  • 大寫「K」能夠用來查找函數的幫助信息:查看 man page,命令模式下,將光標放在函數名上,按"K"能夠直接察看 man page。
  • 幾個設置
    • :set nu 顯示行號
    • :set ai 自動縮行
    • :set ts=4 設置一個 TAB 鍵等於幾個空格
  • 移動光標
    • [[ 轉到上一個位於第一列的"{"
    • ]] 轉到下一個位於第一列的"{"
    • { 轉到上一個空行
    • } 轉到下一個空行
  • gd 轉到當前光標所指的局部變量的定義
  • 一個項目中總會有多個文件,多文件操做是編程必備技能
    • 多buffer: vi a.c b.c c.c
      • :e filename 進入Vim後,打開其餘文件
      • :n, :N 先後切換
      • :bn, :bp 先後循環切換
      • :files:buffers:ls 能夠列出目前緩衝區中的全部文件
        • + 表示緩衝區已經被修改過了的文件
        • # 表明上一次編輯的文件
        • % 是目前正在編輯中的文件
        • :b 文檔名或編號 切換至該文件
    • 多view: vi -o a.c b.c c.c
      • :spilit(:sp), :vspilit(:vsp) 切分view
      • Ctrl+w, w 循環view切換
      • Ctrl+w,方向鍵 切換到前/下/上/後一個view
      • Ctrl+w,h/j/k/l 切換到前/下/上/後一個view
      • Ctrl+w,= 讓上下左右view等寬等高
      • Ctrl+w,_ 當前view高度擴展到最大
      • Ctrl+w,| 當前view寬度擴展到最大
      • Ctrl+w,c:關閉當前view
    • 多 tab(較少用)
      • :tabnew [++opt選項] [+cmd] file 新tab中打開文件
      • :tabc 關閉當前的tab
      • :tabo 關閉其餘的tab
      • :tabs 查看全部打開的tab
      • :tabn 切換到後一個tab
      • :tabp 切換到前一個tab
      • ngt 切換到後n個tab
      • ngT 切換到前n個tab

Vim配置

剛安裝好的Vim是難看又難用,經過配置和安裝插件,Vim能夠變成神器。編程

~/.Vimrc是Vim的配置文件,經過.Vimrc文件你能夠控制Vim的外觀、字體、操做方式、快捷鍵、插件屬性等。vim

上面提到幾個設置:

  • :set nu 顯示行號
  • :set ai 自動縮行
  • :set ts=4 設置一個 TAB 鍵等於幾個空格

每次打開Vim都這麼設置也是很煩人的,咱們能夠把這幾行寫入~/.Vimrc,這樣打開Vi時就不用咱們一個一個的設置了。 ~/.Vimrc中能夠設置

Vim 插件管理

做爲一個老牌編輯器,Vim有近萬個插件。所需即所獲:像 IDE 同樣使用 Vim經過定製,你徹底能夠把Vim打形成IDE:

打造C/++ IDE, c.Vim是一個重要的插件,咱們以c.Vim說明一下Vim插件的下載、安裝、使用、管理的問題。

~/.Vim目錄是存放全部插件的地方。若是是第一次安裝插件要經過 mkdir ~/.Vim 建立~/.Vim 目錄。經過cd ~/.Vim 進入~/.Vim目錄。

mkdir src
cd src
git clone https://github.com/WolfgangMehner/c-support.git
cp -r ./c-support/ ..

在配置文件中啓用插件:

Vim ~/.Vimrc
filetype plugin on

使用前咱們使用vi ~/.Vim/c-support/templates/Templates編輯一下模板,主要是Author, Authorref,Email,Organizaiont,Company等:

咱們這時用vi hello.c來編輯C代碼時,會自動插入文件說明:

咱們使用輸入\im就能夠生成main函數:

幫助文檔參看~/.Vim/c-support/doc/c-hotkeys.pdf,經過下面的截圖你能感覺到c.Vim功能的強大:

上面的命令不用死記硬背,經過作中學在實踐中慢慢的掌握。

咱們也能夠經過在線文檔查找幫助。

若是想安裝其它插件,Vim的官方插件在Vim Scripts,github上有個鏡像Vim Plugins On GitHub

如上所示,Vim經過在 .Vim 目錄中預約義子目錄管理全部插件,如子目錄 doc存放插件幫助文檔、plugin 存放通用插件腳本,用戶將插件打包文檔中的對應子目錄拷貝至 .Vim/ 目錄便可完成插件的安裝。可是這樣一鍋粥的管理方式會致使一些問題:好比命名衝突,更新、卸載等管理複雜。現代的編輯器如AtomSublime Text的插件管理就很是好。

這個問題也有Vim插件來解決,Vim的插件管理有Pathogen,VundleVim-plug這些插件。Vundle應用比較廣,想學的話下面的參考資料中有教程,咱們在這裏使用小巧快速的Vim-plug

首先咱們下載 plug.Vim 並把它放在 ~/.Vim/autoload 目錄。而後配置~/.Vimrc,加入一個Vim plug節:

  • 這個節以call plug#begin() 開始
  • 用Vim-plug的命令列出要安裝的插件
  • plug#end() 結束這個節

好比,咱們安裝c.Vim:

" 指定插件目錄 (for NeoVim: ~/.local/share/nVim/plugged)
call plug#begin('~/.Vim/plugged')

" 注意:插件路徑放到單引號中,下面是幾個Vim-plug的命令例子

" github上的插件安裝可使用簡化引用: 好比安裝fetches https://github.com/junegunn/Vim-easy-align 
" Plug 'junegunn/Vim-easy-align'

" 也可使用git URL 安裝
"Plug 'https://github.com/junegunn/Vim-github-dashboard.git'

" 用|分隔能夠在一行安裝多個插件 
" Plug 'SirVer/ultisnips' | Plug 'honza/Vim-snippets'

" 安裝c.Vim

Plug 'https://github.com/Vim-scripts/c.Vim.git'

" Initialize plugin system
call plug#end()

保存~/.Vimrc,從新打開Vim,使用:PlugInstall就能夠安裝~/.Vimrc中列出的插件了:

其餘插件管理的命令以下:

這樣,根據本身的需求就能夠定製具備我的特點的Vim了。

Vim 經常使用插件

c.Vim

c.Vim 是C/C++程序員使用Vim必裝的插件,咱們上面已經介紹了安裝和使用的方法,經常使用的操做有

  • \im 插入主函數
  • \if 插入函數
  • \cfu 插入函數頭,即函數說明
  • \cfr 插入一個frame comment,能夠用來寫變量說明
  • \p< 插入一個include , 而且把光標放在<>中
  • \rc 保存並編譯
  • \rr 運行
  • \nr 能夠在~/.Vim/c-support/codesnippets中編寫一些預編譯代碼或者代碼塊,經過此命令使用

Emmet.Vim(HTML,CSS)

Emmet (Zen Coding的新版本) 是一個能大幅度提升前端開發效率的一個工具。
Emmet適用於編寫HTML/XML 和 CSS 代碼的前端開發人員。Emmet爲大部分流行的編輯器都提供了安裝插件,Emmet-Vim是Vim的Emmet插件。

Emmet-Vim的基本用法:先寫簡寫形式,而後用"Ctrl+y+,"將其轉成HTML代碼
例入,先輸入!html:5,而後按"Ctrl+y+,",就會擴展出來:

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
    <title></title>
 </head>
 <body>

 </body>
 </html>

基本規則:

  • E 表明HTML標籤
  • E#id 表明標籤E有id屬性
  • E.class 表明E有class屬性
  • E[attr=foo] 表明某個特定屬性
  • E{info} 表明標籤E包含的內容是info
  • E>N 表明N是E的子元素
  • E+N 表明N是E的同級元素
  • E^N 表明N是E的上級元素

tabular

for Vim-markdown

Vim-markdown

need tabular

WebAPI.Vim

YouCompleteMe(自動補全)

Vim使用觸類旁通

Vim有多牛?幾乎全部的現代編輯器,IDE甚至瀏覽器都有Vim模式插件,下面是我使用過的一個不徹底列表。固然這些插件功能和Vim會差不少,但至少都會支持常見的編輯和移動。

  • Bash: 在.bashrc 中set -o vi,Bash中就能夠像vi同樣進行編輯和移動了
  • Vim for Firefox : 像Vim同樣使用firefox。Vimperator 是一個Firefox瀏覽器擴展,可以使Firefox瀏覽器像Vim同樣高效工做。在安裝上 Vimperator以後,不管是 Firefox 的外觀,仍是 Firefox的行爲,都像極Vim。Vimperator還具備相似鍵盤綁定的功能,這使你可以靈活地使用熱鍵來完成各類操做。
  • Vim for Chrome:像Vim同樣使用Chrome, Vimium 這個名字實際上是 Vim 和 Chromium 的合體。
  • Vim for Atom:安裝Vim Mode Plus Package
  • Vim for Notepad++:
  • Vim for Sublime:選擇Preferences->Settings- Default, 在文本的最下面有一行 "ignored_packages": ["vintage"], ["vintage"]->[].

  • Vim for Intellj IDEA:File>Settings>Plugins>Install JetBrains plugin...,而後搜索安裝IdeaVim插件。
  • Vim for Eclipse:Vrapper is an eclipse plugin which acts as a wrapper for existing eclipse text editors to provide a Vim-like input scheme for moving around and editing text.
  • Vim for Visual Studio:This is a Vim Emulation layer for Visual Studio 2010 and above. It integrates the familiar key binding experience of Vim directly into Visual Studio's editor.
  • ...

參考資料


歡迎關注「rocedu」微信公衆號(手機上長按二維碼)

作中教,作中學,實踐中共同進步!

rocedu



若是你以爲本文對你有幫助,請點一下左下角的「好文要頂」和「收藏該文

相關文章
相關標籤/搜索