Notes on Vim

來源:互聯網
上載者:User

整理了一下Vim方面的筆記,在某些方面填補了國內空白——就是有關tab和space的說明(背景音:臉皮好厚,大家扔西紅柿)。

 

1,開啟水平捲軸
  a,set guioptions+=b #(bottom scrollbar)
  b,set nowrap

2,滾屏
  a,一行[向下:ctrl+e, 向上:ctrl+y(Win32+p)]
  b,半屏[向下:ctrl+d, 向上:ctrl+u]
  c,整屏[向下:ctrl+f, 向上:ctrl+b]

3,移動可視屏的行(針對自動折行時有效)
  a,下移可視屏的一行 gj
  b,上移可視屏的一行 gk

4,進入Visual(選擇)模式
  a,單個字元   [v]
  b,整行       [shift+v]
  c,Block      [Win32:ctrl+q, Unix:ctrl+v]

5,折行
  a,建立折行--[zf{motion}]
  b,開啟--[zo] 開啟所有嵌套折行--[zO]  開啟所有折行--[zR]
  c,折起--[zc] 折起所胡嵌套折行--[zC]  折起所有折行--[zM]
  d,刪除--[zd] 刪除所有折行(在折行的最初一行才有效)--[zD]
  e,顯示左邊折行標記: set foldcolumn=4

6,顯示控制字元[help listchars]
  a,set listchars=tab:>-,eol:$,trail:-
  b,trick&tips:using searching hightline:
    b,1: [/\t] -- show tabs.
    b,2: [/\s\+$]  -- show trailing whitespace.
    b,3: [/ \+\ze\t]  -- show spaces before a tab.

7,顯示行號
  a,set number
  b,set nonumber

8,字元寬度控制
  a,每行顯示字元數量:textwidth=72
  b,縮排所佔字元數量:shiftwidth=2 | 增加當前行縮排(以空格填充):>>
  c,Tab所佔字元數量 :tabstop=4
    b.1, tabstop -- (顯示的角度)一個tab所佔字元長度(從底層來講二進位編碼:0x09);
    b.2, softtabstop -- vim特定的一種表示,當按下tab鍵時要補全(包括已前面鍵入的空格)的空格總數(0x20)。
      例如,softtabstop=4時,
      >>游標前有1個空格時,你按下tab會添加3個空格,以補全4個空格;
      >>而當游標前已有2個空格時你按下tab則會添加2個空格,以補全4個空格。
      >>游標前已有4個空格時,不用補全。繼續進入一下輪,發現只有0個空格,所以一次被足4個空格。--相當於連key了4下空格鍵
      注意(關鍵點):當按下softtabstop補全的空格數(包括已前面的已有的空格)可以產生tab時,vim自動將前面所有空格按tabstop的寬度(每tabstop寬度個0x20)轉換成tab(一個0x09)字元
    b.3, expandtab --將tab轉換成空格(expand the tab as blankspaces where you are typing,the amount of expanding based on settings of softtabstop/tabstop)
    b.4, retab {number} --根據number重新計算tab(tab周圍的空格也被算在內),
      例如:當前tabstop=8,當你[retab 2]的時候執行兩個動作:
      >>第一步,將一個tab(原本tab佔8個字元)拆為4個tab(現在tab佔2個字元)。
      >>第二步,將tabstop設為2。

9,以二進位方式查看檔案
  a,%!xxd -- 整個檔案(%)dump為二進位格式
  b,%!xxd -r -- 將檔案反轉為原來的格式

10,自動補全
  a,I_CTRL_P--Previous Match, I_CTRL_N--Next Match
  b,I_CTRL_X(進入補全模式) + CTRL_O

11,特殊字元
  a,I_CTRL_V + {special char} 或 I_CTRL_V + {digits} [Win32上用CTRL_Q代替CTRL_V]
  b,怪異符號(合體字,Digraphs) I_CTRL_K + {digraphs} | :digraphs -- Show all of digraphs
  c,查看當前游標下的字元編碼 [ga]

12,比較緩衝區與原檔案--顯示已做的改動
  a,DiffOrig

13,加法,減法
  a,加法: {count}CTRL+A -- 將游標下的數字加上count.(Win32下先用unmap取消CTRL+A的“全選”功能)
  b,減法: {count}CTRL+X

14,大小寫變換
  a,gue --當前字元 guw --當前word
  b,gUe --當前字元 gUw --當前word

15,虛編輯
  a, set virtualedit=all -- 可以將游標移動到一行中的任意位置(列)。
    注意:若該不是一個空白行(blank line & empty line),則游標會自動回到行尾。
    >>如果想避免該問題可以先用r進行替換,替換時至游標位置的所有空白將自動以空格填充。
  b, 虛替換:gr或gR(進入虛替換模式) -- 可以讓被替換的字元佔據應有的空間位置,這對替換tab(0x09)時特別有用。

16,快速移動
  a,f+{character} 向前尋找一個字元(停在該字元上)
  b,F+{character} 向後尋找一個字元(停在該字元上)。

17,跳轉游標
  a,``(兩個脫字元) 回到之前的位置。注意:w,b,fx之類的命令不能算是跳轉。
  b,CTRL_O 跳回(older)
  c,CTRL_I 向前跳

18,程式內的移動
  a,[+{ --該block頭, [+/ --該注釋頭, [+m --該函數頭
  b,]+{ --該block尾, ]+/ --該注釋尾, ]+m --該函數尾

19,格式化程式碼
  a,== 當前行, gg=G 整個檔案
  b,按檔案類型自動縮排: filetype indent on

20,格式化文本
  a, set textwidth=78
  b, gggqG  --格式化整個文檔

21,刪除空行
  a, :g/^$/d  --刪除空行
  b, :g/\s\+/d --Delete trailing whitespace.

22,Vim指令碼中的變數
  a,指令碼特殊變數
    $NAME  環境變數名
    &name  Vim中的選項名(例如ts,sw)
    @name  Vim中的寄存器名
  b,變數作用範圍標識
    name  函數局部
    b:name  局部於一個緩衝區
    w:name  局部於一個視窗
    g:name  全域變數
    v:name  Vim預定義變數

99,Windows下對應的按鍵組合被佔用的解決方案
  a,unmap {<C-A>}  -- 取消Windows下CTRL+A(全部選擇)的功能。

# vim:set shiftwidth=2 foldmethod=indent tabstop=8: #


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.