大學的時候作過Linux內核驅動程序研發,以前寫C語言就是用的Vim編輯器,當年的Vim還不現在天之強大,當時的插件也沒有如今這麼多,只是以爲這個編輯器能知足我想要的全部,查看Linux內核代碼,調試C程序,調試彙編代碼,寫Shell腳本,跑定時測試任務,等等等,都離不開這個編輯器。可能由於當年的機器爲了節省幾百塊的操做系統費,被迫裝上了Linux系統,後來才明白,這是上天指引着我來到了Linux這條道路,而且越陷越深。linux
之前總有人調侃程序員,說PHP是世界上最好的語言,今天帶給你們的是CNMP系列的一個比較重量級的選手,Linux下的Vim編輯器。git
毋庸置疑,Vim是世界上最棒的編輯器,有編輯器之神的稱號,前身是Vi。功能強大,高度可定製是他的特性。程序員
想要熟練使用Vim其實並不難,難就難在要改變你的一些習慣,比方說以前你用編輯器的時候右手確定是要放在鼠標上面的,只有開始擼代碼的時候纔會將右手拿離鼠標。這不由讓我想到mac是最適合程序員的電腦,不會是由於他的鼠標就在鍵盤下側吧,不過,講真,mac的觸摸板實在是太好用啦!github
記住這句話:【vim設計之初就是整個文本編輯都用鍵盤而非鼠標來完成】,鍵盤上幾乎每一個鍵都有固定的用法,且vim的製做者但願用戶在普通模式(也就是命令模式,只可輸入命令)完成大部分的編輯工做。算法
Vim相較於其餘編輯器,不一樣的地方在於,他有兩種模式,第一種就是你們常見的,大部分編輯器都有的插入模式,第二種模式就是他區別於其餘編輯器的命令模式。vim
熟練的使用命令模式可以讓你感覺到他不適用鼠標的正確性。編輯器
進入Vim以後,鍵盤敲擊函數
i:在當前字符的左邊插入
I:在當前行首插入
a:在當前字符的右邊插入
A:在當前行尾插入
o:在當前行下面插入一個新行
O:在當前行上面插入一個新行
這些字符就能夠進入插入模式,在插入模式中按【ESC】便可回到命令模式。工具
二者的切換,我最習慣的就是進入vim,按【a】進入編輯模式,而後狂按【ESC】進入命令模式。學習
【命令模式】
<Ctrl-f>:向下移動一屏。 <Ctrl-d>:向下移動半屏。 <Ctrl-b>:向上移動一屏。 <Ctrl-u>:向上移動半屏。
跳轉到多少行
【命令模式】
numG:移動光標到指定的行(num)
【命令模式】
d:剪貼選擇的內容到剪貼板。 y:拷貝選擇的內容到剪貼板。 dd:剪切當前行。 yy:拷貝當前行。 p:在光標區粘貼剪貼板的內容
【命令模式】
u:撤銷剛纔編輯的內容
高能提示!!!高能提示!!!高能提示!!!千萬別在vim中使用<ctrl+z>,沒用的。
下面介紹一下大家在平常工做中可能會用到的一些命令
/text 查找text,按n健查找下一個,按N健查找前一個。
s/old/new/ 用old替換new,替換當前行的第一個匹配 s/old/new/g 用old替換new,替換當前行的全部匹配 %s/old/new/ 用old替換new,替換全部行的第一個匹配 %s/old/new/g 用old替換new,替換整個文件的全部匹配 :10,20 s/^/ /g 在第10行知第20行每行前面加四個空格,用於縮進。
:wq 保存並退出 :q! 強制退出並忽略全部更改 :e! 放棄全部修改,並打開原來文件。
至此爲止,你能夠編輯你想要編輯的東西了,和通常的編輯器沒多大的區別啦~
下面進入主題,vim的一大特點,他的高可擴展性!插件的安裝與使用
左側爲Vim插件文件管理器【NERDTree】,後面我會給你們詳細解答。
右側爲個人vimrc文件部份內容。
提起插件,你們第一個想到的就是管理器,相似於包管理器,Python的pip,PHP的Composer,CentOS的yum,Ubuntu的apt-get,Mac的brew,是否是很情切,啊。
那Vim也有本身的插件管理器,那就是大名鼎鼎的【vundle】,最老牌的Vim插件管理器。
按照以下方式下載vundle並安裝
#git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
該命令將下載Vundle插件管理器,並將它放置在你的Vim編輯器bundles文件夾中。如今,你能夠經過.vimrc配置文件來管理全部擴展了。
vim的配置文件,你想要的功能,包括插件的下載安裝,都是配置在這個目錄下的,而後在命令模式下輸入
:PluginInstall
便可完成對插件的安裝,別忘了前面有個【:】哈。
首先,咱們先看下你的home目錄下是否存在vimrc文件,默認是不存在的,若是你以前編輯過的,能夠,不要緊,咱們從頭再來過一遍。
#ls ~/.vimrc
【~】是Linux下對應用戶的home目錄。
沒有的話,那就touch一個吧,或者直接vim一個,直接編輯便可。
#touch ~/.vimrc
編輯上面的.vimrc文件,把下載下來的Vundle配置添加到配置文件的頂部:
set nocompatible " required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' " Add all your plugins here (note older versions of Vundle used Bundle instead of Plugin)
注:" 開頭的是註釋
先來裝個插件試試吧,就從剛纔的那個文件管理器開始吧。
在上面的vimrc文件中新增一行
Plugin 'scrooloose/nerdtree'
在命令模式下輸入【:PluginInstall】
若是出現以下的界面,就表示安裝成功啦!
最左邊的窗口就是插件安裝的顯示頁面,安裝成功的插件所有會顯示在這邊,怎麼在幾個分割窗口間跳轉呢,按<ctrl+ww>,記住,是兩個w喲。
關閉某個窗口,跳到那個窗口,命令模式輸入【:q】便可關閉。
什麼?打開沒有文件夾目錄?由於你尚未打開NERDTree呢,命令行輸入NERDTree便可打開文件夾管理目錄了,若是想要打開就會顯示當前的文件夾,在vimrc中輸入下面兩行便可
autocmd VimEnter * NERDTree let NERDTreeShowBookmarks=1
YouCompleteMe - 前Google的C++工程師Valloric (Val Markovic) 開發的一款,專門用於C系(C,C++,C#) 的自動補全工具, 優勢是速度很是快,並且支持變量跳轉,函數關聯跳轉,檢測代碼報錯, 能夠說是最牛逼的補全工具,缺點是太難配置,對於除了C系語言的其餘語言補全支持並很差. 對於剛接觸Vim的同窗來講至關不友好, 不過文檔比較齊全.
只支持Git 的高亮,速度很是不錯
Plugin 'vim-gitgutter'
編輯好vimrc文件以後,須要在命令模式下輸入下面命令才能更新和安裝插件
:source %
:PlugInstall
更改在git管理下的代碼,新增一行,左側就會出現一個小+號。
大多數「現代」集成開發環境(IDE)都提供對方法(methods)或類(classes)進行摺疊的手段,只顯示類或方法的定義部分,而不是所有的代碼。
你能夠在.vimrc
中添加下面的代碼開啓該功能:
" Enable folding set foldmethod=indent set foldlevel=99
你必須手動輸入za
來摺疊(和取消折疊)。
讓Vim中的Tab鍵就至關於4個標準的空格符,確保每行代碼長度不超過80個字符,而且會以unix格式儲存文件,避免在推送到Github或分享給其餘用戶時出現文件轉換問題。
set tabstop=4 set softtabstop=4 set shiftwidth=4 set textwidth=79 set expandtab set autoindent set fileformat=unix
支持UTF-8編碼
set encoding=utf-8
開啓顯示行號:
set nu
語法高亮顯示
syntax on
關於vim的全部就講到這裏,vim其實有不少,包括linux,其實有不少可讓咱們去學習的地方,我指的學習不僅僅是指工具的使用,而是代碼層面的學習,尤爲是Linux內核的相關源碼,可讓你學到不少變成思想,也能夠說是算法,真的很精闢,看過的人都知道~~~