vim使用

Sublime插件 Emmet/PyV8錯誤
[~~~~高手總結](http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html
vimrc配置
VIM IDE
mvim安裝支持Python
在VIM中添加一鍵編譯和一鍵運行
macVim安裝
mvim --version |grep python 檢驗vim是否支持Python

1. vim 配置:

sudo vim /etc/vim/vimrc

syntax on   //語法高亮如果這行被注釋掉了可以取消注釋
請在您的VIM的最后一行,輸入他們,可以讓您的VIM變得更漂亮、舒服。
set nu                          // 在左側行號
set tabstop                  //tab 長度設置為 4
set nobackup              //覆蓋文件時不備份
set cursorline              //突出顯示當前行
set ruler                      //在右下角顯示光標位置的狀態行
set autoindent

2. 操作

2.1. 文件操作

Vi file :使用vim打開要編輯的文件
:w :保存修改
:q! : 退出vim,后面加感嘆號表示不保存修改強制退出
:wq: 保存修改并退出
:saveas ~/some/path/: 將文件保存到其他位置
ZZ: 同:wq

2.2. 編輯:
  • 基本動作
    d: 刪除
    c: 修改
    y: 拖拉(拷貝)
    v: 可視化選擇 (V for line vs. character)修飾語定語用在名詞之前,表明以哪種方式來執行動作。
    i: 內部
    a: 周圍
    NUM: 數字 (e.g.: 1, 2, 10)
    t: 查找到指定字符,并跳轉到這個字符的前面
    f: 查找到指定字符,并跳轉到字符所處的位置
    /: 查找字符串 (literal or regex)名詞在英語中,名詞用來表示你所操作的對象。它們都是客體。在vim中也是這樣。
  • 基本對象:
    w: 單詞
    s: 句子
    ): 句子 (另一種操作方式)
    p: 段落
    }: 段落 (另一種操作方式)
    t: 標簽 ( HTML/XML)
    b: 塊 (編程語言)
  • 組合命令示例
    d2w 刪除兩個單詞
    cis 修改所在的句子(刪除當前句子并進入插入模式)
    yip 拷貝當前所在的段落
    ct< 修改當前光標所在位置到下一個<之間的文本內容。

從語法上來說,使用單個字母”t”來表示這個向前查找的“目標”,這樣我就可以使用“dt.”表示刪除當前位置到下一個句號之間的內容,”yt;”表示拷貝當前位置到下一個分號之間的內容。

  • 定位查找
    /{string}:搜索字符串輸入”n”依次向下查找,或者”N”向上查找。如果想要逆向查找字符串也可以使用”?”來代替”/”.
    f<(F<) 向后(向前)查找并直接跳轉到<字符
    t<(T<) 向后(向前)查找并跳轉到<的前一個字符
    *:搜索當前光標位置單詞的其他實例
    n : 搜索完成后,跳轉到下一個匹配實例
    N :搜索完成后,跳轉到上一條匹配實例
    ; : 跳轉到指定字符時
    , :跳轉到指定字符時
    j : 向下移動一行
    k :向上移動一行
    h :向左移動一個字符
    l :向右移動一個字符
    0: 移動到行首
    $: 移動到行末
    ^: 移動到行首非空字符
    還可以按單詞移動:
    w: 先前移動一個單詞
    b: 向后移動一個單詞
    e: 移動到當前單詞末尾當使用大寫字母時,vim會忽略掉單詞間的分隔符,這樣原本被分隔符隔開的多個單詞會因此被視為一個大單詞。
    W: 向前移動一個大單詞
    B: 向后移動一個大單詞這種大寫命令的優勢在我們實際工作中會頻繁地碰到。按句子或段落移動):向前移動一條句子}: 向前移動一個段落在屏幕間移動
    H:向上移動一屏
    M:移動到屏幕中間
    L:移動到屏幕底端
    gg: 移動到文件頂端
    n+gg(nG): 移動到行號n
    G:移動到文件結尾
    ^U: 向上移動半屏
    ^D: 向下移動半屏
    ^F: 下一頁
    ^B: 上一頁來回跳轉在普通模式下,可以在兩點間來回跳轉,這在實際操作中非常有用。Ctrl-i: 跳轉到之前所在的位置
    Ctrl-o: 跳回你實際的位置
    其他動作:
    $line_numberH: 移動到指定行號
    M: 移動到屏幕中間
    L: 移動到屏幕底端
    ^E: 向上滾動一行
    ^Y: 向下滾動一行
    ^U: 向上移動半屏
    ^D: 向下移動半屏
    ^F: 向下移動一頁
    ^B: 向上移動一頁
    i : 從當前光標位置之前插入
    a : 從當前光標位置之后插入
    I :從當前行開始位置插入
    A :從當前行行末插入
    o : 在當前行下新增一行,并從新行插入
    O :在當前行上新增一行,并從新行插入
    r : 替換當前光標所在字符
    R :替換當前光標的字符,并一直向后替換(替換模式)
    cm:修改文本,其中m表示移動的動作,比如,一個單詞,一句或者一個段落。
    C :修改當前所在行
    ct?: 修改問號前的這條問句內容
    s:替換當前字符
    S: 替換整行修改句子
    cis移動到行首并進入插入模式I在當前光標位置之后進入插入模式格式化當前段落gq apgp
    根據預設的文本寬度testwidth以及參數指定的文本范圍來工作,這意味著對于你指定的任意范圍的文本,gp都可以自動校準寬度,使得文檔看起來干凈又整潔。【注意: ap表示文本對象”整個段落”的覆蓋范圍】
  • 刪除命令
    x: 刪除當前光標的字符
    X:刪除當前光標的前一個字符
    dm: 根據定義的m來確定刪除范圍,一個單詞或者一句話或者一個段落。
    dd: 刪除當前行
    n+dd: 刪除下面n行
    10,18d:刪除10-18行
    10,.d:刪除10-當前行
    dt. : 刪除當前位置到下一個句號之間的所有內容
    D: 刪除當前光標位置到本行末的所有內容(對比上面的C,D不會進入插入模式)
    J: 將上下兩行合并(刪除兩行之間的換行符)
    u: 撤銷上一個動作
    Ctrl-r: 重做上一個動作【注意:記得將CAPSLOCK鍵映射為Ctrl,這樣你才能更方便快速的使用組合鍵。】

通過“.”這個小點可以讓你做一些很棒的事情——重復之前你的任何一個操作。使用“.”來重復上一次操作你所做的許多操作可能都有重復的價值。比如進入插入模式添加一些文本內容。你只需執行一次,然后一直執行點命令來重復就可以了。

請看下面的例子。刪除一個單詞dw緊接著執行,再刪除5個單詞5.多么給力! 【注意:除了點命令外,&也是一種強大的重復命令,用于重復ex模式下的上一條命令(還記得ex模式嗎?)】

  • 復制粘貼
    Vim用拉取來表示拷貝,簡寫為y。
    y: 拷貝選中內容
    yy: 拷貝當前行
    n+yy:拷貝n行
    p: 粘貼
    :6,9 co 12 復制第6行到第9行之間的內容到第12行后面。

dd命令刪除了一行,你可以用p粘貼回去。有一點要記住:粘貼的起始位置從你當前光標位置之后開始,
ddp使用這條命令可以很快速的交換兩行的位置。刪除你所在的行將它粘貼回之前所在位置的下面。(
拼寫檢查選項。在~/.vimrc的某個位置中添加找出拼寫錯誤如果在配置文件中設置了拼寫檢查的選項,那么拼錯的單詞會自動添加下劃線。你也可以手動輸入:set spell和:set nospell來啟用或禁用。不管怎么說,一旦開啟了拼寫檢查,如果存在拼寫錯誤的話,你就可以使用以下命令來跳轉:跳轉到下一處拼寫錯誤]s
跳轉到上一處拼寫錯誤[s
若光標處是錯誤單詞,給出修改建議z=
將識別的錯誤單詞標記正確zg
將vim視為正確的單詞標記為錯誤單詞zw
我習慣在~/.vimrc中添加一些拼寫相關的簡寫命令。首先就是讓修正拼寫錯誤的命令變得簡單:將拼寫修正標記為f在某些情況下,比如說我需要創造性的拼寫一些單詞時,我會使用下面的命令來取消拼寫檢查。想要重新打開拼寫檢查只要再執行一次這個命令就可以了。Toggle spelling visuals withsnnoremaps :set spell!

  • 替換
    Vim的另一個強大的功能是替換。命令分為三部分,首先指定將要被替換的字符串,之后是替換的新字符串,最后指定替換范圍。基本設置為:%s
    將每行的foo替換為bar:%s /foo/bar/g
    將當前行中的foo替換為bar:s /foo/bar/g【注意: 兩個命令的不同之處在于,單行替換s前少了%】

3. 進階

  1. 在整個文件或某幾行中在行首或行尾加一些字符串
    vi file
    :3,$s/^/some string / 在文件的第一行至最后一行的行首前插入some string
    :%s/$/ some string/g 在整個文件每一行的行尾添加 some string

:%s/string1/string2/g 在整個文件中替換string1成string2
:3,7s/string1/string2/ 僅替換文件中的第三到七行中的string1成string2

Note: s為substitute,%表示所有行,g表示global

  1. 同時編輯兩個文件,在兩個文件中拷貝剪貼文本
    vi file1 file2
    yy 同時打開兩個文件,在文件1的光標所在處拷貝所在行
    :n 切換到文件2 (n=next)
    p 在文件2的光標所在處粘貼所拷貝的行
    :N 切換回文件1
  2. 替換文件中的路徑

:%s#/usr/bin#/bin#g 把文件中所有路徑/usr/bin換成/bin
或者用
:%s//usr/bin//bin/g 在'/'前用符號指出'/'是真的單個字符'/'

  1. 用 vi 多行注釋
    如果要給多行程序作注釋,一個笨辦法就是 插入 # ,然后用 j 跳到下一行用 . 命令,重復上個命令。如果要注釋幾百行,這樣的方法恐怕太愚蠢了。一個聰明的辦法是:
    :.,+499 s/^/#/g
  2. 我們可以看幾個例子。
    單詞文本對象
    首先來看基于單詞的對象
    iw : 單詞內
    aw :單詞周圍這些都是目標(名詞),所以我們可以對它們做一些操作,比如說刪除、修改等等。
    刪除單詞(包括單詞周圍的空格)daw【注意: 對象內部與對象周圍這兩者之間的區別在于單詞旁邊是否有空格】
    句子文本對象
    is: 句子內部
    as: 句子周圍
    句子對象的工作原理與單詞對象是一致的,
    修改整條句子cis 它會刪除整條句子并進入插入模式等待你輸入新的內容。更多對象類型還有許多其他的對象類型,我只簡單的來介紹一下。
    段落 : ip 和ap
    單引號 : i’和a’
    雙引號: i”和 a”
    當我編輯代碼或者HTML文件時,時常會用到這些命令。只需要輸入ci”就可以刪除雙引號內部的所有內容,并將你挪到雙引號中間進入插入模式等待你的輸入。對其他類型的某些對象同樣適用,比如說各種括號(圓括號、尖括號、大括號)和標簽(html)。比如說編輯HTML鏈接時,URL地址一般在雙引號之間,鏈接文本在標簽中定義;通過vim這兩條命令可以很方便地修改:ci”(修改URL)和cit(修改鏈接文本)。
    文本對象總結下面列出常見的文本對象:
    單詞: iw 和 aw
    句子: is 和 as
    段落: ip 和 ap
    單引號: i’ 和 a’
    雙引號: i” 和 a”
    反勾號 : i· 和 a
    圓括號: i( 和 a(
    方括號: i[ 和a[
    大括號: i{ 和a{
    標簽: it 和at

首先,學會進入可視化模式并選擇文本。通過“v”進入可視化模式,有三種選擇。基于字符選中: v基于行選中: V段落選中: Ctrl-v在容器內部選中文本有時候你會處于一段文本中,兩頭被,.({[之類的符號所包圍。
你可以使用下面的命令來選中這部分的內容:選中圓括號中的內容vi(選中中括號之間的內容vi[你還可以加數字限定選擇的層數(比如說你處于嵌套層)選中兩層大括號之間的所有內容v2i{【注意: 你也可以使用va來代替vi。
基于字符的可視化選擇從基于字符的可視化開始介紹(從普通模式輸入v進入可視化模式),在這種模式下你可以選中單個字符、多個字符、單詞等等。處于可視化模式中,你的移動動作會修改被高亮選擇的文本。這就意味著,w或)之類的動作也會起作用,它們可以擴展當前高亮選擇的范圍。
每行需要追加個冒號。你會怎么做?對整個文件添加分號0i:j0vG.wut大大簡化了我們的操作,
步驟如下:走到第一行行首并插入一個冒號(0i:)走到下一行定位到行首位置(j0,注意之前是插入模式,需要先回到普通模式)選中當前行到文件末尾的內容(vG)給選中的內容添加冒號(.)這樣對六萬行文件的操作就全部完成了。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • VIM簡介 vim是一款跨平臺,易擴展,難上手,效率高的編輯器,vim可以視作vi的加強版,因此,如果經常在Lin...
    汲汲hz閱讀 1,632評論 0 0
  • 一、Vim的歷史 1.下圖是關于幾款主流編輯器的學習曲線:(注:圖片來自互聯網) 2.VIM - Vi IMpro...
    sa_justin閱讀 380評論 0 0
  • 前言 有一段時間特別執著于研究各種編輯器,從 Sublime,到 Vim,再到Atom, Emacs 等等,兜了一...
    lovekun閱讀 550評論 0 0
  • 小張最近有點小情緒,理由是:覺得領導對他有意見。前陣子他小組有個項目,其中有個大問題,被小張發現了。小張蹦噠蹦噠地...
    格局林狀元閱讀 337評論 0 0
  • 1月5日,“TJ Girls”海選圓滿落幕,不少選手在海選過程中有著極為不俗的表現,他們將有可能在深圳作為第一女團...
    rqtj366閱讀 313評論 0 0