linux下vim命令詳解

  1. 如果沒有安裝vim就請使用:sudo apt-get install vim

  2. 一個完整的.vimrc配置信息如下所示:

  3. set nocompatible

  4. set nummber

  5. filetype on

  6. set history=1000

  7. set background=dark

  8. syntax on

  9. set autoindent

  10. set mouse=a

  11. set smartindent

  12. set tabstop=4

  13. set shiftwidth=400

  14. set showmatch

  15. set guioptions-=T

  16. set vb t_vb=

  17. set ruler

  18. set nohls

  19. set incsearch

  20. if has("vms")

  21. set nobackup

  22. else

  23. set backup

  24. endif

  25. .vimrc文件的配置在終端下使用vim進行編輯時,默認情況下,編輯的界面上是沒有顯示行號、語法高亮度顯示、智能縮進等功能的。為了更好的在vim下進行工作,需要手動設置一個配置文件:.vimrc。

  26. 在啟動vim時,當前用戶根目錄下的.vimrc文件會被自動讀取,該文件可以包含一些設置甚至腳本,所以,一般情況下把.vimrc文件創建在當前用戶的根目錄下比較方便,即創建的命令為:

  27. $vi ~/.vimrc

  28. 設置完后

  29. $:x 或者 $wq

  30. 進行保存退出即可。

  31. 下面給出一個例子,其中列出了經常用到的設置,詳細的設置信息請參照參考資料:

  32. “雙引號開始的行為注釋行,下同

  33. “去掉討厭的有關vi一致性模式,避免以前版本的一些bug和局限

  34. set nocompatible

  35. “顯示行號

  36. set nummber

  37. “檢測文件的類型

  38. filetype on

  39. “記錄歷史的行數

  40. set history=1000

  41. “背景使用黑色

  42. set background=dark

  43. “語法高亮度顯示

  44. syntax on

  45. “下面兩行在進行編寫代碼時,在格式對起上很有用;

  46. “第一行,vim使用自動對起,也就是把當前行的對起格式應用到下一行;

  47. “第二行,依據上面的對起格式,智能的選擇對起方式,對于類似C語言編

  48. “寫上很有用

  49. set autoindent

  50. set smartindent

  51. “第一行設置tab鍵為4個空格,第二行設置當行之間交錯時使用4個空格

  52. set tabstop=4

  53. set shiftwidth=4

  54. “設置匹配模式,類似當輸入一個左括號時會匹配相應的那個右括號

  55. set showmatch

  56. “去除vim的GUI版本中的toolbar

  57. set guioptions-=T

  58. “當vim進行編輯時,如果命令錯誤,會發出一個響聲,該設置去掉響聲

  59. set vb t_vb=

  60. “在編輯過程中,在右下角顯示光標位置的狀態行

  61. set ruler

  62. “默認情況下,尋找匹配是高亮度顯示的,該設置關閉高亮顯示

  63. set nohls

  64. “查詢時非常方便,如要查找book單詞,當輸入到/b時,會自動找到第一

  65. “個b開頭的單詞,當輸入到/bo時,會自動找到第一個bo開頭的單詞,依

  66. “次類推,進行查找時,使用此設置會快速找到答案,當你找要匹配的單詞

  67. “時,別忘記回車

  68. set incsearch

  69. “修改一個文件后,自動進行備份,備份的文件名為原文件名加“~“后綴

  70. if has(“vms”)

  71. set nobackup

  72. else

  73. set backup

  74. endif

  75. ################################################################################

  76. 如果設置完后,發現功能沒有起作用,檢查一下系統下是否安裝了vim-enhanced包,查詢命令為:

  77. $rpm –q vim-enhanced

  78. 請教]用vi把文件重新打開,如何回到上次光標的位置?

  79. autocmd BufReadPost *

  80. \ if line("'\"") > 0 && line("'\"") <= line("$") |

  81. \ exe "normal g`\"" |

  82. \ endif

  83. ###################################################################################

  84. vim中如何查找和替換字符串

  85. 一、 字符串的查找

  86. 1. vim 中用 / 和 ? 來查找字符串,兩者的區別是:

  87. /string 會高亮顯示光標后匹配的第一個字符串,回車后光標移到該字符串的第一個字母;

  88. ?string 會高亮顯示光標前匹配的第一個字符串,回車后光標移到該字符串的第一個字母。

  89. 在回車之后,按n鍵同方向轉到下一個匹配的字符串,按N鍵反方向轉到上一個匹配的字符串。

  90. 2. 用命令 :set ic 和 :set noic 來分別設置查找時不區分和區分大小寫。

  91. 如果查找特殊字符,如 ^、$、*、/ 和 .,需要在前面加 \ 來轉義。

  92. 二、字符串的替換

  93. 1. vim 中可用 :s 命令來替換字符串,具體如下:

  94. :s/str1/str2/ 替換當前行第一個 str1 為 str2

  95. :s/str1/str2/g 替換當前行中所有 str1 為 str2

  96. :m,ns/str1/str2/ 替換第 n 行開始到最后一行中每一行的第一個 str1 為 str2

  97. :m,ns/str1/str2/g 替換第 n 行開始到最后一行中所有的 str1 為 str2

  98. (注:m和n 為數字,若m為 .,表示為當前行開始;若n為$,則表示到最后一行結束)

  99. 如果使用 # 作為分隔符,則中間出現的 / 不會作為分隔符,比如:

  100. :s#str1/#str2/# 替換當前行第一個 str1/ 為 str2/

  101. :%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

  102. 2. 其他

  103. :%s/str1/str2/(等同于 :g/str1/s//str2/) 替換每一行的第一個 str1 為 str2

  104. :%s/str1/str2/g(等同于 :g/str1/s//str2/g 和 :1,$ s/str1/str2/g ) 替換文中所有 str1 為 str2

  105. 從替換命令可以看到,g 放在命令末尾,表示對搜索字符串的每次出現進行替換;不加 g,表示只對搜索

  106. 字符串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。

  107. ###################################################################################

  108. 2.打開一個已存在的文件后,文件中的字符,不能用backspace鍵刪除。但是此時如果輸入新的字符,卻可以用backspace進行刪除。這是怎么回事?

  109. 查看幫助:

  110. :help bs

  111. :help backspace

  112. 原來,backspace有幾種工作方式,默認是vi兼容的。對新手來說很不習慣。對老vi 不那么熟悉的人也都挺困擾的??梢杂?/span>

  113. :set backspace=indent,eol,start

  114. 來解決。

  115. indent: 如果用了:set indent,:set ai 等自動縮進,想用退格鍵將字段縮進的刪掉,必須設置這個選項。否則不響應。

  116. eol:如果插入模式下在行開頭,想通過退格鍵合并兩行,需要設置eol。

  117. start:要想刪除此次插入前的輸入,需設置這個。

二、Vim高級技巧

  1. 本文一般情況下用(里邊的字母一般大小寫無所謂,除非特別注明)表示按住ctrl同時按下相關字母,命令前加一個i 表示在插入模式下用這個命令

  2. 1. 選定文字/ 拷貝粘貼

  3. v 為可視模式,可以選定多行。選定多行之后,可以用yy 或者dd 等等進行拷貝和剪切。

  4. p 是粘貼

  5. y 和d 可以直接拷貝或者剪切選定的內容

  6. yw 是拷貝一個單詞,如果要復制整行的最簡單辦法就是V,y,p 就行了

  7. v 是可以選定一行任意個字符的,V 是行選定的,一次一整行,然后通過向下或向上移動光標而選定多行。

  8. 對于v 選定的,拷貝后就是這么多,選多少就拷貝多少,而V 選定的,粘貼的話會自動換到下一行

  9. 命令模式下,也是塊選定,不過是列塊選定

  10. 2. 折疊代碼

  11. 可以zf 進行折疊, 用zo 打開折疊,也可以方向鍵向右打開折疊,zc 關閉折疊(只要在被折疊的塊中的任一個語句就行)

  12. 3. 縮進代碼

  13. <是左縮進, >是右縮進

  14. 按v 選定后按=就是自動格式化代碼,自動縮進,內部的遞歸的縮進都做到了

  15. 行左移<<,行右移>>,該命令用于調整源碼縮進格式簡便快速。

  16. 4. 移動光標

  17. %是從大括號的開始移動到大括號的結束位置

  18. :后邊加行號就是跳到這一行

  19. 光標返回到以前的位置。相當于光標移動的“撤銷”

  20. 光標返回到后來的位置。相當于光標移動的“恢復”

  21. 5. 多文件編輯/ 緩沖區命令

  22. vim 下每一個打開的文件對應一個緩沖區(buffer)。

  23. 多文件編輯會有兩種情形,一種是在進入vim 前所用的參數就是多個文件(這種情形稱為

  24. argument list)。另一種情形是進入vim 后另外再開其它的文件(稱為buffer list)。不過都

  25. 可以統稱為buffer。

  26. 5.1 打開文件

  27. vi flname1 flname2… flnameN

  28. 將多個文件調入緩沖,是argument list。

  29. :e filename

  30. 這是在進入vim 后,在不離開vim 的情形下再開其它文件,只要您要編輯的檔案是在目

  31. 前目錄,Tab 補全鍵還是可以使用。是buffer list。

  32. 注意::e 或者:new 或者:split 后邊可以跟目錄,這樣就可以在目錄下慢慢找要打開的文件了

  33. 5.2 緩沖區跳轉

  34. :n 編輯下一個文件。

  35. :2n 編輯下二個文件。

  36. :N 編輯前一個文件。注意,這種用法只能用于argument list 的情形。

  37. :rew 回到首文件

  38. :args 查看當前編輯緩沖文件狀態

  39. :e# 或Ctrl-^ 編輯前一個檔案,用于兩文件互相編輯時相當好用。這種用法不管是

  40. argument list 或buffer list 檔案間皆可使用。使用Ctrl-^ 命令更便捷,但如終端類型不正

  41. 確該功能將無效。

  42. 用:ls 來顯示緩沖區中的文件,編號后邊有#的代表是前一個文件,可以通過:e#來進入,有

  43. %a 的代表是當前文件,什么也沒有的可以通過:bn 來進入,這里的n 代表文件編號。

  44. :b 文件名或編號移至該文件。

  45. 在:ls 中就會出示各文件的編號,這個編號在未離開vim 前是不會變的。這個指令elvis 也

  46. 是可以使用。當然:e#編號也是可以的,這樣的用法則是所有vi clone 都通用了。

  47. 在buffers 中,減號- 表示這個buffer 并未載入,不過,不必擔心,載入相當快速的。加

  48. 號+ 表示這個buffer 已經修改過了。

  49. :bn buffer next。這里的n 代表字母n

  50. :bl buffer last。

  51. 以上兩個指令elvis 不適用。

  52. 如果您是使用vim 的GUI,那就在菜單上就會有Buffers 這個選項,可以很容易的知道及

  53. 移動各buffer 間。

  54. 5.3 移除緩沖區

  55. :bd(elete) buffer 在未離開vim 前是不會移除的,可使用這個指令移除。其實移除它干什

  56. 么呢?vim 是您在叫用時才會載入的,因此這些buffers 并不是像cache 一般要占內存的。

  57. 5.4 重新編輯

  58. 放棄一修改過的文件,重新編輯。

  59. (1)使用命令:q!強行退出后再vi flname 重新進入。

  60. (2)使用命令:e!強行重編輯更便捷。這樣也是會打開文件,但會放棄目前編輯文件的改變,

  61. 否則如果文件已有變動,vim 預設是不讓您隨便離開的。:e! 后不接什么的話,代表舍棄一

  62. 切修改,重新載入編輯中文件。

  63. 5.5 其他命令

  64. :files 或:buffers 或:ls 會列出目前buffer 中的所有文件。

  65. 在elvis 中可使用:b 來叫出buffers。

  66. :f 或Ctrl-g 顯示目前編輯的文件名、是否經過修改及目前光標所在之位置。

  67. :f 文件名改變編輯中的文件名。(file)

  68. :r 文件名在光標所在處插入一個文件的內容。(read)

  69. :35 r 文件名將文件插入至35 行之后。

  70. gf 這是vim 的特殊打開文件的方法,會打開光標所在處的word 為名的文件,當然,這

  71. 個文件要在當前目錄內,否則會創建新文件。

  72. 6. 查找命令

  73. 用/查找單詞后,n 可以跳到下一個,N 則是上一個,:nohls 可以取消高亮

  74. 查找時,:set ignorecase”項讓VIM 忽略大小寫,“:set noignorecase” 來關閉這項功能。

  75. 7. 修改文字

  76. cw:刪除一個單詞并進入插入模式,cc:刪除一行并進入插入模式。

  77. r:然后輸入的字母將替換當前字母并保持命令模式,R 則是不停的替換(一個挨著一個)。

  78. 0 到行首,$到行尾。

  79. 8. 函數間跳轉

  80. ctrl+]和ctrl+T 分別是查找函數的定義和返回,好像需要ctag 的支持

  81. i 跳轉到光標所指標識符的定義行,是打開一個新的小窗口顯示,記住要加個i,最好

  82. 是找自己項目下的文件,否則找庫函數的話還不如man.

  83. 大寫K 看光標所指標識符的man 幫助頁

  84. 9. 窗口命令

  85. = ctrl+w

  86. :split 文件名同時在一個頁面顯示多個文件的內容,類似多窗口,用切換當前

  87. 窗口

  88. f 切分顯示光標在處的文件名,VIM 會在path 中搜索該文件名,比如常用它打

  89. 開#include 語句中的文件

  90. _ 當同時打開幾個文件時,按_ 使當前窗口最大化

  91. 用Ctrl-W 命令指定光標移動:

  92. Ctrl-W + 擴大窗口

  93. Ctrl-W – 縮小窗口

  94. Ctrl-W h 移動到窗口左邊

  95. Ctrl-W j 移動到窗口下邊

  96. Ctrl-W k 移動到窗口上邊

  97. Ctrl-W l 移動到窗口右邊

  98. 等于是按下后,松開鍵盤,再按下一個命令就可以了.

  99. 如果要關閉分割窗口可以用:close,剩下只有一個窗口的話就不能關了。

  100. 多窗口是split,像用e 打開多個文件是將文件放在緩沖區中。

  101. 10. 自動完成

  102. i 向上搜索,補全一個詞

  103. i 向下搜索,補全一個詞

  104. i 補全一行。

  105. 比如你寫過一行for (int i = 0; i < 100; i++) , 你想再寫一模一樣的一行, 只要輸入

  106. for即可。如果補全出來的不是你想要的那一行,你可以按 或 選

  107. 擇上一個或下一個匹配行i 在文件系統中搜索,補全一個文件名

  108. 如果按 或 補全一個詞,在當前文件中沒有找到匹配,VIM 將搜索#include

  109. 語句中的文件,而文件的位置將在path 中搜索。

  110. i 把上一行對應列的字符抄下來

  111. i 把下一行對應列的字符抄上來,這兩個都可以一直按下去,到了行尾自己會停的.

  112. 11. 注釋整塊內容

  113. 注釋塊的方法:

  114. 選定要注釋掉的行I // Esc

  115. I 之后輸入的東西就是插入到選定的行前邊的,直至Esc.

  116. 要去掉注釋的辦法:選定注釋符//,然后d

  117. 列塊選定后I 是在前邊都插入,A 是在后邊都插入

  118. 是按列塊模式的選定,是行選定,v 是普通選定

  119. 12. 其他命令

  120. u 可以撤銷上一步操作, ctrl+r 可以恢復

  121. i命令執行一個普通模式的命令,執行完畢后回到插入模式,不用多次Esc

  122. i后續字符輸入特殊的ASCII 字符或鍵。

  123. . 在光標當前位置處重復上一次操作

  124. :!命令行執行一條外部命令

  125. *******************************************************************************

  126. ****

  127. 我是vim 粉絲, 用了許久, 有一些自己的感受, 又到處挖到一些別人的技巧. 感覺對vim

  128. 粉絲比較有用, 就把它記在這兒. 希望借此文套出大家自己的巧活, 就正應了拋磚引玉的古

  129. 話了.

  130. 先稍為介紹一下vim. vi 是unix/linux 下極為普遍的一種文本編輯器, 大部分機器上都有.

  131. vi 有各種變種, 在不同的機器上常用不同的變種軟件. 其中vim 比較好用也用得比較廣泛.

  132. vim 是Vi IMproved 的縮寫, 表示更好的vi. 我個人覺得它是非常好的編輯器(為了避免

  133. Emacs 粉絲挑眼, 就不說最好了). 沒用過的也建議試試看, 當然vim 對編寫文本文件很方

  134. 便好用, 比如編寫程序, html 文檔等等, 卻不能用來編寫word 文檔.

  135. 關于vim 的安裝, 基本使用方法等網絡上能搜出許多, 就不在這里羅嗦了, 要是對vim 有

  136. 興趣, 那就看看這里(中文文檔): http://vcd.gro.clinux.org/

  137. 本文就說些其中比較有用, 比較常用的命令, 若能熟練運用這些命令, 那么會發現編輯文件

  138. 很舒服.

  139. 說明:

  140. 以下的例子中xxx 表示在命令模式下輸入xxx 并回車

  141. 以下的例子中:xxx 表示在擴展模式下輸入xxx 并回車

  142. 小括號中的命令表示相關命令.

  143. 在編輯模式或可視模式下輸入的命令會另外注明.

  144. 1. 查找

  145. /xxx(?xxx) 表示在整篇文檔中搜索匹配xxx 的字符串, / 表示向下查找, ? 表示

  146. 向上查找.其中xxx 可以是正規表達式,關于正規式就不多說了.

  147. 一般來說是區分大小寫的, 要想不區分大小寫, 那得先輸入

  148. :set ignorecase

  149. 查找到以后, 再輸入n 查找下一個匹配處, 輸入N 反方向查找.

  150. *(#) 當光標停留在某個單詞上時, 輸入這條命令表示查找與該單詞匹配的

  151. 下(上)一個單詞. 同樣, 再輸入n 查找下一個匹配處, 輸入N 反方

  152. 向查找.

  153. g*(g#) 此命令與上條命令相似, 只不過它不完全匹配光標所在處的單詞, 而

  154. 是匹配包含該單詞的所有字符串.

  155. gd 本命令查找與光標所在單詞相匹配的單詞, 并將光標停留在文檔的

  156. 注釋段中第一次出現這個單詞的地方.

  157. % 本命令查找與光標所在處相匹配的反括號, 包括() [] {}

  158. f(F)x 本命令表示在光標所在行進行查找, 查找光標右(左)方第一個x 字符.

  159. 找到后:

  160. 輸入; 表示繼續往下找

  161. 輸入, 表示反方向查找

  162. 2. 快速移動光標

  163. 在vi 中, 移動光標和編輯是兩件事, 正因為區分開來, 所以可以很方便的進行光標定

  164. 位和編輯. 因此能更快一點移動光標是很有用的.

  165. w(e) 移動光標到下一個單詞.

  166. b 移動光標到上一個單詞.

  167. 0 移動光標到本行最開頭.

  168. ^ 移動光標到本行最開頭的字符處.

  169. $ 移動光標到本行結尾處.

  170. H 移動光標到屏幕的首行.

  171. M 移動光標到屏幕的中間一行.

  172. L 移動光標到屏幕的尾行.

  173. gg 移動光標到文檔首行.

  174. G 移動光標到文檔尾行.

  175. c-f (即ctrl 鍵與f 鍵一同按下) 本命令即page down.

  176. c-b (即ctrl 鍵與b 鍵一同按下, 后同) 本命令即page up.

  177. '' 此命令相當有用, 它移動光標到上一個標記處, 比如用gd, * 等查

  178. 找到某個單詞后, 再輸入此命令則回到上次停留的位置.

  179. '. 此命令相當好使, 它移動光標到上一次的修改行.

  180. `. 此命令相當強大, 它移動光標到上一次的修改點.

  181. 3. 拷貝, 刪除與粘貼

  182. 在vi 中y 表示拷貝, d 表示刪除, p 表示粘貼. 其中拷貝與刪除是與光標移動命令

  183. 結合的, 看幾個例子就能夠明白了.

  184. yw 表示拷貝從當前光標到光標所在單詞結尾的內容.

  185. dw 表示刪除從當前光標到光標所在單詞結尾的內容.

  186. y0 表示拷貝從當前光標到光標所在行首的內容.

  187. d0 表示刪除從當前光標到光標所在行首的內容.

  188. y$ 表示拷貝從當前光標到光標所在行尾的內容.

  189. d$ 表示刪除從當前光標到光標所在行尾的內容.

  190. yfa 表示拷貝從當前光標到光標后面的第一個a 字符之間的內容.

  191. dfa 表示刪除從當前光標到光標后面的第一個a 字符之間的內容.

  192. 特殊地:

  193. yy 表示拷貝光標所在行.

  194. dd 表示刪除光標所在行.

  195. D 表示刪除從當前光標到光標所在行尾的內容.

  196. 關于拷貝, 刪除和粘貼的復雜用法與寄存器有關, 可以自行查詢.

  197. 4. 數字與命令

  198. 在vi 中數字與命令結合往往表示重復進行此命令, 若在擴展模式的開頭出現則表示行

  199. 號定位. 如:

  200. 5fx 表示查找光標后第5 個x 字符.

  201. 5w(e) 移動光標到下五個單詞.

  202. 5yy 表示拷貝光標以下5 行.

  203. 5dd 表示刪除光標以下5 行.

  204. y2fa 表示拷貝從當前光標到光標后面的第二個a 字符之間的內容.

  205. :12,24y 表示拷貝第12 行到第24 行之間的內容.

  206. :12,y 表示拷貝第12 行到光標所在行之間的內容.

  207. :,24y 表示拷貝光標所在行到第24 行之間的內容. 刪除類似.

  208. 5. 快速輸入字符

  209. 在vi 中, 不要求你輸入每一個字符, 可以有很多種方法快速輸入一些字符.

  210. 使用linux/unix 的同學一定有一個經驗, 在命令行下輸入命令時敲入頭幾個字符再按

  211. TAB 系統就會自動將剩下的字符補齊, 假如有多個匹配則會打印出來. 這就是著名的命令

  212. 補齊(其實windows 中也有文件名補齊功能). vi 中有許多的字符串補齊命令, 非常方便.

  213. c-p(c-n) 在編輯模式中, 輸入幾個字符后再輸入此命令則vi 開始向上(下)搜

  214. 索開頭與其匹配的單詞并補齊, 不斷輸入此命令則循環查找. 此命令

  215. 會在所有在這個vim 程序中打開的文件中進行匹配.

  216. c-x-l 在編輯模式中, 此命令快速補齊整行內容, 但是僅在本窗口中出現的

  217. 文檔中進行匹配.

  218. c-x-f 在編輯模式中, 這個命令表示補齊文件名. 如輸入:

  219. /usr/local/tom 后再輸入此命令則它會自動匹配出:

  220. /usr/local/tomcat/

  221. abbr 即縮寫. 這是一個宏操作, 可以在編輯模式中用一個縮寫代替另一個

  222. 字符串. 比如編寫java 文件的常常輸入System.out.println, 這很

  223. 是麻煩, 所以應該用縮寫來減少敲字. 可以這么做:

  224. :abbr sprt System.out.println

  225. 以后在輸入sprt 后再輸入其他非字母符號, 它就會自動擴展為System.

  226. out.println

  227. 6. 替換

  228. 替換是vi 的強項, 因為可以用正規表達式來匹配字符串.以下提供幾個例子.

  229. :s/aa/bb/g 將光標所在行出現的所有包含aa 的字符串中的aa 替換為bb

  230. :s/\/bb/g 將光標所在行出現的所有aa 替換為bb, 僅替換aa 這個單詞

  231. :%s/aa/bb/g 將文檔中出現的所有包含aa 的字符串中的aa 替換為bb

  232. :12,23s/aa/bb/g 將從12 行到23 行中出現的所有包含aa 的字符串中的aa 替換為bb

  233. :12,23s/^/#/ 將從12 行到23 行的行首加入# 字符

  234. :%s= *$== 將所有行尾多余的空格刪除

  235. :g/^\s*$/d 將所有不包含字符(空格也不包含)的空行刪除.

  236. 7. 多文件編輯

  237. 在一個vim 程序中打開很多文件進行編輯是挺方便的.

  238. :sp(:vsp) 文件名vim 將分割出一個橫(縱)向窗口, 并在該窗口中打開新文件.

  239. 從vim6.0 開始, 文件名可以是一個目錄的名稱, 這樣, vim 會

  240. 把該目錄打開并顯示文件列表, 在文件名上按回車則在本窗口打

  241. 開該文件, 若輸入O 則在新窗口中打開該文件, 輸入? 可以看

  242. 到幫助信息.

  243. :e 文件名vim 將在原窗口中打開新的文件, 若舊文件編輯過, 會要求保存.

  244. c-w-w vim 分割了好幾個窗口怎么辦? 輸入此命令可以將光標循環定

  245. 到各個窗口之中.

  246. :ls 此命令查看本vim 程序已經打開了多少個文件, 在屏幕的最下

  247. 會顯示出如下數據:

  248. 1 %a "usevim.html" 行162

  249. 2 # "xxxxxx.html" 行0

  250. 其中:

  251. 1 表示打開的文件序號, 這個序號很有用處.

  252. %a 表示文件代號, % 表示當前編輯的文件,

  253. # 表示上次編輯的文件

  254. "usevim.html" 表示文件名.

  255. 行162 表示光標位置.

  256. :b 序號(代號) 此命令將指定序號(代號)的文件在本窗口打開, 其中的序號(代號)

  257. 就是用:ls 命令看到的.

  258. :set diff 此命令用于比較兩個文件, 可以用

  259. :vsp filename

  260. 命令打開另一個文件, 然后在每個文件窗口中輸入此命令,就能看

  261. 到效果了.

  262. 8. 宏替換

  263. vi 不僅可以用abbr 來替換文字, 也可以進行命令的宏定義. 有些命令輸起來很費勁,

  264. 因此我把它們定義到- 上, 這樣就很方便了.這些配置可以預先寫到~/.vimrc

  265. (windows 下為$VIM/_vimrc) 中, 寫進去的時候不用寫前面的冒號.

  266. :nmap :nohls 取消被搜索字串的高亮

  267. :nmap w 命令模式下轉移光標到不同窗口

  268. :imap 輸入模式下運行

  269. :nmap :%s= *$== 刪除所有行尾多余的空格.

  270. :imap 同上

  271. :java 中: (注, 這里為什么說java 中, 因為以下定義對其他文件格式不起作用, 下文

  272. 會說到如何實現這一點)

  273. :nmap :comp javac:mak -d . %

  274. 此命令用javac 編譯java 文件, 它會自動將光標定位到出錯點. 不過這需要定

  275. 義一個javac.vim 文件在$VIM/compiler 下, 在javac.vim 里面只有兩行字:

  276. setlocal makeprg=javac

  277. setlocal errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%#

  278. :nmap :comp ant:mak

  279. 此命令用ant 編譯java 文件, 它會自動將光標定位到出錯點. 一般來說, 安裝

  280. vim 后已經有了compiler/ant.vim 文件, 因此這個命令可以直接使用. 但是需要

  281. 在當前目錄下有build.xml 文件, 當然還必須安裝ant 才行.

  282. :nmap :cl 此命令用于查看所有的編譯錯誤.

  283. :imap

  284. :nmap :cc 此命令用于查看當前的編譯錯誤.

  285. :imap

  286. :nmap :cn 此命令用于跳到下一個出錯位置.

  287. :imap

  288. :nmap :cp 此命令用于跳到上一個出錯位置.

  289. :imap

  290. :nmap :JavaBrowser

  291. 此命令用于在窗口左部分割出一個新窗口, 里面的內容是java 的資源樹, 包括

  292. 本文件中出現的類, 類的成員變量及成員方法, 就好像JCreator 表現的那樣.

  293. 在這個窗口中輸入? 會看到幫助. 嘿嘿, 很好用, 不過需要ctags 支持.

  294. :imap

  295. 9. TAB

  296. TAB 就是制表符, 單獨拿出來做一節是因為這個東西確實很有用.

  297. << 輸入此命令則光標所在行向左移動一個tab.

  298. >> 輸入此命令則光標所在行向右移動一個tab.

  299. 5>> 輸入此命令則光標后5 行向右移動一個tab.

  300. :12,24> 此命令將12 行到14 行的數據都向右移動一個tab.

  301. :12,24>> 此命令將12 行到14 行的數據都向右移動兩個tab.

  302. 那么如何定義tab 的大小呢? 有人愿意使用8 個空格位, 有人用4 個, 有的用2 個.

  303. 有的人希望tab 完全用空格代替, 也有的人希望tab 就是tab. 沒關系, vim 能

  304. 幫助你.以下的設置一般也都先寫入配置文件中, 免得老敲.

  305. :set shiftwidth=4 設置自動縮進4 個空格, 當然要設自動縮進先.

  306. :set sts=4 即設置softtabstop 為4. 輸入tab 后就跳了4 格.

  307. :set tabstop=4 實際的tab 即為4 個空格, 而不是缺省的8 個.

  308. :set expandtab 在輸入tab 后, vim 用恰當的空格來填充這個tab.

  309. 10. autocmd

  310. 這個命令十分的強大, 可以用這個命令實現對不同的文件格式應用不同的配置; 可以

  311. 在新建文件時自動添加上版權聲明等等. 這些命令一般定義在~/.vimrc 這樣的配置文件

  312. 里面. 由于他很強大, 所以我不能給出很具體的說明, 只能舉幾個例子, 詳細的請看幫助.

  313. :autocmd! 刪除所有之前的自動命令.

  314. autocmd FileType java source ~/.vim/files/java.vim

  315. autocmd FileType java source ~/.vim/files/jcommenter.vim

  316. 以上兩條命令讓我在打開java 文件時才應用后面提到的兩個配置文件.

  317. autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel

  318. 以上這條命令讓我在新建java 文件時自動加入java.skel 文件的內容.

  319. autocmd BufNewFile *.java normal gnp

  320. 以上這條命令讓我在新建java 文件時自動運行gnp 命令, 這個命令進行一些特殊化

  321. 處理, 比如將新java 文件中的__date__ 替換成今天的日期什么的.

  322. 11. 常用腳本

  323. 在vim.sf.net 你可以發現很多腳本(script), 這些腳本常常有讓你意想不到的作用.

  324. 我常用的有:

  325. jcommenter.vim 自動加入javadoc 風格的注釋.

  326. JBrowser.vim 類資源瀏覽. C, C++ 等可以用Tlist

  327. 還有許多有用的, 比如checkstyle.vim 可以檢驗你的編程風格, jad.vim 可以直接

  328. 反編譯.class 文件等等.

  329. 12. 常用配置

  330. 在~/.vimrc 配置文件中你常常需要一些個性化配置. 比如上面寫的一些宏定義, 一些

  331. autocmd 定義等等. 比如:

  332. set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc

  333. 這樣在vim 中打開文件時, 按tab 鍵補齊文件名時它會忽略上述文件.

  334. set nu 顯示行號

  335. set ai 設置自動縮進

  336. map Y y$ 讓Y 和D 一樣, 要不然Y 的本意和yy 一樣.

  337. 13. 其他

  338. 還有許多有意思的命令, 記錄在這里免得忘記.

  339. . 重復上次編輯命令.

  340. :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) 在行首插入行號

  341. :runtime! syntax/2html.vim 轉換txt 成html, 會按照你的顏色配置來轉

原創文章,作者:NddTx99521,如若轉載,請注明出處:http://www.www58058.com/33307

(0)
NddTx99521NddTx99521
上一篇 2016-08-12
下一篇 2016-08-12

相關推薦

  • 馬哥教育網絡班21期+第12周課程練習 ?

    1、請描述一次完整的http請求處理過程;   1)客戶端和服務器端建立連接。服務器接收或者拒絕請求。   2)服務器端接收客戶端請求。接收來自于網絡的請求報文中對某資源的一次請求。對請求的處理響應,可分為單進程(啟動一個進程處理請求,一次只處理一個)和多進程(并行啟動多個進程,每個進程處理一個請求)。  &…

    Linux干貨 2016-10-09
  • Mariadb數據庫復制系列(四):復制過濾器的實現

       實驗四:復制過濾器的實現 復制過濾器的作用是讓從節點僅復制主節點的指定的庫,或指定數據庫的指定表,而不是全部復制。其配置方式有兩種,一種是在主節點上配置,通過定義主節點只記錄部分庫或表產生的二進制日志時間來實現;一種是通過從節點上配置,當復制了主節點的所有的二進制日志數據后,在SQL線程執行時,只執行指定的庫或表相關的二進制日志時間;一般采取在從節點上…

    Linux干貨 2016-11-24
  • N22-第3周作業-冥界之王

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@CentOS6 ~]# who  | cut -d " " -f1 | uniq 2、取出最后登錄到當前系統的用戶的相關信息?!?/p>

    Linux干貨 2016-09-19
  • Linux系統用戶、組

    1、資源分派:          Authentication  認證        Authorization   授權     &nbs…

    Linux干貨 2016-08-04
  • Linux基礎知識總結

    Linux基礎知識 計算機系統 計算機硬件組成 1.控制器:計算機系統的控制中心,協調各部分工作,保證計算機按照預先規定的目標和步驟進行操作及處理。 2.運算器:對數據進行算數運算,邏輯判斷以及數據的比較、移位等操作。 3.存儲器:存取程序和各種數據信息。  4.輸入設備:把信息,如數字、文字、圖像等轉換為數字形式的“編碼”的設備(鍵盤,掃描儀) …

    2017-05-18
欧美性久久久久