一、vim ~/.vimrc 進入配置文件 若是不知道vimrc文件在哪,可以使用 :scriptnames 來查看 set nu #行號 set tabstop=4 #一個tab爲4個空格長度 set ai #設置自動縮進 syntax on #高亮 二、基本 空格鍵 向右移動一格 x 刪除後面的字符 X 刪除前一個字符 刪除3個字符就是3x dd:刪除一行 D 刪除到行尾 caw:改寫單詞 c 至關於 d 變爲編輯模式 J:刪除換行符,使下一行並上來。 nJ:鏈接後面的n行 u:撤銷上一次操做 U:撤銷當前行的全部修改 ctrl+r:對撤消的撤消 i 在光標前插入 I 在行首插入 a 在光標後插入 A 在行末插入 o:在當前行的下面另起一行,並變爲插入模式 O:在當前行上面另起一行,變爲插入模式 Ctrl+o:臨時變成命令模式(一次而已) :e!:放棄更改,而後至關於從新打開 :help:幫助,可用ZZ退出幫助窗口 vim中Nyy能夠複製光標後的N行。有時咱們不容易得出行數,這時能夠用作標記的方法來制定複製範圍: 1. 在開始行上輸入ma做一個標記a 2. 移動到結束行,輸入y'a會複製當前行到標記a之間的文本。d'a會刪除。 或者是v進入可視模式,再13G跳轉到相應行,y便可。 :10,20y 回車便可,相應的刪除也是如此 :10,20d (此方法比上面兩種方法更簡單) :10,20 m 30 把10行到20行的內容,剪切到30行以後 :10,20 co 30 把10行到20行的內容,複製到30行以後 將光標放在 { 處,而後輸入v%就能夠把大括號中內容選定 若是光標放在第一個s上,想刪除到「(」爲止,則輸入dt(就能夠了,t(的做用是跳到下一個"("前。 ctrl +n 自動補全 ctrl + p 也同樣 :ab hw hello world 用一個縮寫字符串代替一個長的字符串,此處用 hw 代替 hello world %: 移動到與制匹配的括號上去(),{},[],<>等 ' 移動到上一次的修改行 fx 向右跳到本行字符x處(x能夠是任何字符) Fx 向左跳到本行字符x處(x能夠是任何字符) tx 和fx相同,區別是跳到字符x前 Tx 和Fx相同,區別是跳到字符x後 # 到與當前單詞相同的上一個單詞上, * 到與當前單詞相同的下一個單詞上 若是你要重複鍵入一個短語或一個句子, 也有一種快捷的方法。Vim有一種記錄宏的機制。你鍵入"qa"開始把一段宏記錄入寄存器變量`a'中。 按下來你能夠象日常同樣鍵入你要的操做, 只是這些操做都會被Vim記錄進它命名爲`a'的宏中, 再次再下"q"鍵, 就結束了宏`a'的錄製。當你要重複執行你剛纔記錄的那些操做時只要使用"@a"命令。共有26個可用的寄存器供你記錄宏。 使用宏你能夠重複多個不一樣的操做。而不只僅是插入文本了。若是你要進行某種重複的操做, 記着要用這一招呀。 :abbr hte the :abbr hw Hello World 輸入先面的單詞時,自動用後面的替換。 三、移動: b、3b、w、3w:向前\後移動幾個單詞,標點也算一個單詞。相應的大寫狀態爲不含標點,即只把空格和換行符做爲單詞間隔符。 $:移動到行尾 3$:移動到3行後的行尾 ^:移動到行首,0也是 +:移到下一行的行首 -: 移到上一行的行首 f:搜索命令,小寫時向後搜索(用來定位)如 fx:定位到下一個x上。 Fx:定位到上一個x上,重複時,可用;或, 不過 , 表示反方向 %:跳到相對應的括號上,編程時經常使用 33G:跳轉到33行 此時按``能夠返回到原來行 gg:文件頭 G: 文件尾 30%:跳轉到文件的30%處 "H"意爲Home, "M"爲Middle, "L"爲Last. 當前屏幕的上中下位置,大小寫皆可 Ctrl+G:顯示當前位置 set number:設置顯示行號,set nonumber:關閉顯示 :set ruler 設置在窗口右下角顯示行號,與上面的好處是,節省空間 ctrl+u\d 向上\下滾動半屏 ctrl+e\y 向上\下滾動一行 ctrl+b\f 向上\下滾動一屏 這個比較實用,記住。 zz:將當前行滾動於屏幕中間,方便查看上下文 zt置頂,zb置尾 /string 查找string,回車後,按n鍵能夠跳到下一個,N上一個,另外按/鍵後,按上下鍵能夠找到之前查找的記錄,一樣的 :也有記錄 ?/string 同上,默認向上查找 :set ignorecase 大小寫無關 :set noignorecase 大小寫敏感 * :查找下一個光標所在單詞 #是查找上一個 :set hlsearch 高亮顯示查找結果 :set nohlsearch 取消高亮 :nohlsearch 去掉當前顯示的高完(一次性) `` 上次光標停靠的行 % 匹配到相應括號處 >> 向右移動本行一段距離 << 向左移動本行一段距離 3<< 把下面3行(包括本行),向左移動一段距離 :20,30>> 把20行到30行向右移動一段距離 四、小幅改動: :%s/str1/str2/g 替換每一行的 str1爲 str2 :10,20s/str1/str2/g 替換從行10到行20之間的 str1爲 str2 :10,$s/str1/str2/g 替換從行10到最後一行之間的 str1爲 str2 :s/str1/str2/g 替換當前行的 str1爲 str2 . 重複執行命令 :10,$ w test2.cpp 取行10到最後一行內容,保存到test2.cpp :r class/User.hpp 讀取文件中的內容,插入到當前行的後面 dw:刪除一個單詞(光標後部分) 不如:daw實用 d4w:刪除4個單詞 d$:刪除當前光標到行尾 d^:刪除當前光標至行首 d換成c效果是同樣的,只是操做完會變成insert模式 dnw: 刪除N個單詞 dnj: 向下刪除n行 dnk: 向上刪除n行 X:刪除左邊的字符,至關於<-鍵,x刪除當前字符 D:至關於d$ C:至關於c$ s:至關於c1 S:至關於cc r:替換當前字符,但不會進入insert模式 3r:把後面3個字符替換掉 R:替換模式 .:重複上一次操做 v:進入Visual模式 V:進入可視行模式,好比 Vjjd 刪除3行 Ctrl+v:可視塊模式 P:粘貼至光標前 p:粘貼至光標後 3P:粘貼3次 "2p 粘貼最後第二次的刪除的內容 yy:複製一行 yaw: 複製一個單詞,光標在單詞任意位置 ynw: 複製N個單詞 ynj: 向下複製n行 ynk: 向上複製n行 自動縮進: :set cindent(全部的set均可以簡寫爲se,雖然只節省了一個字符, 譯者注) 須要注意的是cindent控制縮進量是經過shiftwidth選項的值, 而不是經過tabstop 的值, shiftwidth的默認值是8(也就是說, 一個縮進爲8個空格, 譯者注), 要改變默認的設置, 可使用":set shiftwidth=x"命令, 其中x是你但願一個縮進量表明的空格的數目. { = 到前一個空行上 } = 到下一個空行上 五、VIM的一些插件: c.vim :若是是用root帳號的,把文件複製到/usr/share/vim/vim70中解壓沒有用的,不存在 $HOME/.vim 這個目錄,沒辦法,只能新建個目錄,而後把壓縮包cp到這個目錄,再unzip便可。在 ~/.vimrc 中 寫入 filetype plugin on :e! 返回上次保存後的狀態 Ctrl+z:暫停vi,回到Unix提示符,再輸入fg便可回到vi。 ^回到行首,光標位於行首字母處;0回到行首,光標位於行首字母前。$回到行尾,光標位於行尾字母處。 nb:向前移動n個單詞,nw:向後移動n個單詞。光標位於單詞的第一個字母處。 nw這個操做很慢,不知何故。 以空格、標點符號與單詞的分界爲分隔符。(幾個連續的標點視爲一個單詞) 一樣的,也可使用nB,nW,只是這裏只使用空格作爲分隔符。 相換兩個相鄰字母的位置:x、p s:刪除一個字符,並進入編輯模式。 S:刪除一整行,進入編輯模式,至關於cc。 ns:刪除後面n個字符,並進入編輯模式。 ~:更改字母的大小寫,同時光標進入到下一個字符。 n~:把後面n個字母的大小寫狀態改變。 dw:刪除單詞後面部分 db:刪除單詞前面部分。 若是要刪除整個單詞(光標位於單詞中間的話),能夠 dbw\wdb de:相似於dw,刪除單詞後面的部分(只刪除到本單詞結尾,dw會刪除掉單詞後面的空格) dE:刪除的範圍包括標號在內的單詞結尾。 e:至關於w,向後移動一個單詞。不一樣的是,w移動到單詞第一個字符上,e移動到單詞最後一個字符上。 因此ea,能夠給本單詞追加內容。 D:d$ 的簡寫,一樣的,C:c$的簡寫。 U:會恢復一整行原先的面貌,即最原始的樣子。 Y:至關於yy,不一樣於D與C的操做方法。 .:重複上一個命令。 除了O/o,插入命令(A,a,I,i)接受數值參數,如:5Ihello,而後按ESE鍵。會在行首輸入5個鏈接的hello nr:替換後面n個字符。 nJ:合併下面的n行(從本行算起)。 ynl:向後複製n個字符。 e/E:到單詞的結尾。
Ctrl+p重複上一次命令 Ctrl+a跳到第一個字符前 Ctrl+x同上但再按一次會重新回到原位置 Ctrl+b前移一個字符不刪除字符狀況下 Ctrl+h刪除前一個字符 Ctrl+u刪除提示符前的全部字符 Ctrl+w同上 Ctrl+d刪除提示符後一個字符或exit或logout Ctrl+e轉到字符尾部 Ctrl+f後移一個字符 Ctrl+k刪除提示符後所有字符 Ctrl+k取消 ctrl+r向前查找用過的命令 Ctrl+o Ctrl+y Ctrl+i Crtl+m這4個沒搞清楚怎麼用 <TAB> 命令補齊 CTRL-I 等同於按製表符<TAB>鍵 CTRL-W 不是刪除光標前的全部字符, 它刪除光標前的一個單詞 CTRL-P 是recall出上一個命令 <===> CTRL-N 是recall出下一個命令 ESC-F 光標向前步進一個單詞 ESC-B 光標向後步進一個單詞 CTRL-M 等同於回車鍵 CTRL-O 等同於回車鍵 CTRL-V 使下一個特殊字符能夠插入在當前位置, 如CTRL-V <TAB> 能夠在當前位置插入一個<TAB>字符, 其ASCII是9, 不然通常狀況下按<TAB>結果是命令補齊 CTRL-C 撤消當前命令行的編輯, 另起一行. CTRL-S 暫時凍結當前shell的輸入 CTRL-Q 解凍 ESC-c 使下一個單詞首字母大寫, 同時光標前進一個單詞, 如光標停留在單詞的某個字母上, 如word中的o字母上, 則o字母變大寫. 而不是w ESC-u 使下一個單詞全部字母變大寫, 同時光標前進一個單詞, 同上, 如光標在o字母上, 則ord變大寫, w不變. ESC-l 同ESC-U, 但使之全變爲小寫. 把bash全部的ctrl組合鍵試了一遍,現總結以下(如下出現的全部鍵都是ctrl組合鍵): 1. U K Y U將光標(不包括)之前的字符刪除 K將光標(包括)之後的字符刪除 Y將剛纔刪除的字符粘出來 2. D H D將光標處的字符刪除 H將光標前的一個字符刪除 3. A E A將光標移動到行首 E將光標移動到行尾 4. F B F將光標向右移動一個字符的位置 B將光標向左移動一個字符的位置 5. N P N下一個命令 P上一個命令 6. L L清屏 7. R R搜索之前輸入過的命令 8. T T將光標處的字符和光標前一個字符替換位置 基本功: 用上下鍵看命令的歷史 左右鍵區修改內容 tab補齊命令名字或者目錄,文件名字,不是惟一的多按2次,會出來列表 !ls 重複運行最後一條以’ls’開頭的命令,若是先ls -l 而後ls -lcrt,那麼!ls,至關於ls -lcrt ls abc.txt vi !$ 第二行的vi !$至關於vi abc.txt,!$等於上一個命令的參數, ‘$’ 是根據上下文來講的最後一行,列等。 ctrl鍵組合 ctrl+a:光標移到行首。 ctrl+b:光標左移一個字母 ctrl+c:殺死當前進程。 ctrl+d:退出當前 Shell。 ctrl+e:光標移到行尾。 ctrl+h:刪除光標前一個字符,同 backspace 鍵相同。 ctrl+k:清除光標後至行尾的內容。 ctrl+l:清屏,至關於clear。 ctrl+r:搜索以前打過的命令。會有一個提示,根據你輸入的關鍵字進行搜索bash的history ctrl+u: 清除光標前至行首間的全部內容。 ctrl+w: 移除光標前的一個單詞 ctrl+t: 交換光標位置前的兩個字符 ctrl+y: 粘貼或者恢復上次的刪除 ctrl+d: 刪除光標所在字母;注意和backspace以及ctrl+h的區別,這2個是刪除光標前的字符 ctrl+f: 光標右移 ctrl+z : 把當前進程轉到後臺運行,使用’ fg ‘命令恢復。好比top -d1 而後ctrl+z ,到後臺,而後fg,從新恢復 esc組合 esc+d: 刪除光標後的一個詞 esc+f: 往右跳一個詞 esc+b: 往左跳一個詞 esc+t: 交換光標位置前的兩個單詞。
###vimdiff高級用法shell
vimdiff tokyo1.txt tokyo2.txt
一、 vimdiff file1 file2 終端下輸入該命令進入vim,垂直分隔窗口進行比較 二、 vimdiff -o file1 file2 水平分隔窗口進行比較 三、 ctrl+w (j,k,h,l) 上下左右切換光標所在的窗口(括號中表示能夠是其中之一,按下ctrl+w,放開ctrl再按j,k,h,l) 四、 ctrl+w (J,K,H,L) 上下左右移動光標所在窗口的位置 五、 zo 和 zc 打開摺疊區 和 關閉摺疊區 六、 ]c 和 [c 將光標移動到下一個不一樣區 和 上一個不一樣區 七、 do 和 dp 將光標所在不一樣區域同步爲另外一個文件該位置的內容 和 將光標所在不一樣區域內容同步到另外一個文件該位置 八、 :diffu[!] vim下更新當前比較窗口,比較狀態下修改文件後,可調用該命令[中括號不爲命令部分,若是加!表示若是外部修改了文件,則從新加載比較] 九、 :diffo[!] vim下關閉當前窗口比較狀態,若是加!則關閉全部窗口的比較狀態 十、:diffs file1 vim下加入file1和當前光標所在窗口進行比較,水平分隔窗口 十一、:vert diffs file1 vim下加入file1和當前光標所在窗口進行比較,垂直分隔窗口 十二、:difft vim下將光標所在窗口變爲比較窗口
###🔱多行首行插入編程
:%s/^/#/ :%s/^/TAB/ :% s/^/\/\//g 在所有內容的行首添加//號註釋 :2,50 s/^/\/\//g 在2~50行首添加//號註釋 :2,50 s/^\/\///g 在2~50行首刪除//號
###☋vim列模式vim
ctrl+v, 選擇行 而後shift i,A,c 進行編輯 完成後,esc 所選的列已經更新
###☪vim分屏bash
:o . //打開當前的文件目錄 :vsp //橫向拆分 :sp //縱向拆分兩個窗口
###多文件編輯spa
查看最近編輯的文件 :ls 最近文件上、下切換 :bp ## :bn 多文件分tab :h tab-page