vim快捷鍵 在vim下可使用經常使用的箭頭鍵 可是 還有其它鍵可讓你更快的達到目標 hjkl 這是代替箭頭鍵功能的 H M L 跳到屏幕的頂上 中間 下方 w 跳到下一個單詞的開始 e 跳到單詞的結束 b 向後跳 gg 跳到文件的開始 G 跳到文件的結束 10gg 或10G 跳到第10行 ta 跳到下一個a 前面 fa 跳到下一個a 大寫的意思相反 另外還有%(跳到文件的%多少) 和|(跳到第幾列) 不過我不多用 上面的均可以加上數字前綴 表示第幾個匹配 另外看文件時 除了pageup pagedown外還有其它的快速鍵 如CTRL-F 向前一頁 CTRL-B 向後一頁 上面不是重要的 CTRL-D 向下半頁 CTRL-U 向上半頁我以爲更實用 這樣看文章時就不會跳轉出錯 另外還有 CTRL-E 向下一行 CTRL-Y 向上一行 ^ 行首 $行尾 0 第一個字符 另外上面也做爲vim其它命令的定位符 如刪除d dt) 一直刪除到這行的) 另外 懂了跳轉鍵後 那刪除或是複製時就再也不是以行爲單位了 能夠指定到某個條件 我以爲這是新手成長的必要方法 另外還有ctrl-t ctrl-i ctrl-] 若是已經使用了ctags 或是cscope建立索引文件的話 那看代碼時非常方便 跳轉到函數、變量定義處: [+ctrl+i 跳轉到函數、變量和#define [+ctrl+d 跳轉到#define處 ctrl+i 向前跳到前幾回光標位置 ctrl+o 向後跳到後幾回光標位置 函數體跳轉: [[ ]] [] ][ {} 2009-07-07 17:31 補充 如何選中括號中的內容 進行: 將光標移至括號內,按shift+v進入行選模式,而後 i{ - 選小括號中內容,不包括小括號 a{ - 選小括號中內容,包括小括號 ib - 選中括號中內容,不包括括號 ab - 選中括號中內容,包括括號 i{ - 選大括號中內容,不包括大括號 a{ - 選大括號中內容,包括大括號 :h text-objects 下面還有些相關的tips,未所有驗證: vi{ 選中{}中間的內容,不包括{} va{ 選中{}中間內容,包括{} vi( 選中()中間內容 vi< 選中<>中間內容 vi[ 選中[]中間內容 vit 選中中間的內容 vi」 選中」"中間內容 vi’ 選中」中間的內容 vis 選中一個句子 vib 選中一個block viw選中一個單詞 vip 選中一個段落 在normal模式下光標停在某個字符上ga能夠查看該字符的ascii碼 #複製刪除粘貼的操做:按V(shift+v),進入可視模式,jk上下選擇須要的行,而後按 y 複製 d 刪除 x 剪切 p 粘貼 可視模式很好用,例如想把兩行的全部單詞變成小寫,按V而後按j或k選中這兩行,按gu便可 #跳到行首按0,但實際更好用的是^, 跳到行首非空白字符 #折行前空出4字符顯示折行標識 set foldcolumn=4 #摺疊或展開(在摺疊的那一行左右移動光標也可展開摺疊) za #刪除光標所在行所處的範圍的摺疊 zd #當在:set foldmethod=marker後,折行會把{{{和}}}之間的內容摺疊 #不在單詞中間斷行。 設置了這個選項後, 若是一行文字很是長, 沒法在一行內顯示完的話, 它會在單詞與單詞間的空白處斷開, 儘可能不會把一個單詞分紅兩截放在兩個不一樣的行裏。 set lbr #sw是shiftwidth的縮寫,表縮進列數 fx把光標移動到該行的下個x字符上,這個x也能夠是一個漢字,;重複fx操做。Fx把光標移動到該行的上一個x字符上。 gg光標定位到第一行開頭,G定位到最後一行開頭 H光標跳到當前窗口顯示文本的第一行 M光標跳到當前窗口顯示文本的中間一行 L光標跳到當前窗口顯示文本的最後一行 g*查找包含當前單詞的全部單詞(*只查找與當前單詞精確匹配的單詞), -d光標下跳半屏,文本上滾半屏 -u光標上跳半屏,文本下滾半屏 -e文本向上滾動一行 zz屏幕滾動使得當前行成爲屏幕的中間一行 normal模式下按J刪除此行末尾的換行符,從而合併兩行 :e!從新讀進上次保存的此文件內容 :ab myname william_djj 之後再編輯時鍵入myname,而後空格或回車myname串就會被william_djj代替 :r !date 在當前位置插入系統時間(linux下的date命令),同理當前位置插入某文件的內容就是 :r filename :set ignorecase 查找時取消case sensitive :set noignorecase 查找時case sensitive ############ 使用tags ################### 如下命令遞歸當前目錄下的全部文件建立tags文件 ctags -R . vim打開當前目錄下的任意一文件,命令模式下鍵入下面語句以指定剛纔建立的tags的位置,之後就能夠在不一樣文件間查閱函數 set tags=..\tags #分割窗口顯示當前函數的定義 -w ] ########################################## 若是插件目錄下有echofunc.vim,用如下命令生成tags,之後編輯代碼函數名後打「(「時有參數提示。 $ ctags -R –fields=+lS . :Tlist打開左邊一個taglist的窗口,顯示symbols。要注意的是在windows下若是tags文件路徑中有空格或中文會報找不到tags文件的錯誤, +w+w 或者+w+left/right 窗口切換 +] 進入光標所指的symbol的定義(若是用鼠標也是+鼠標左鍵,跟SI的用法同樣) +t 返回第一個用+t 跳轉位置,注意+o是跳回上一個視圖,而+t是跳回上一次按+]的位置 #如下命令分裂出一個窗口顯示定義處 ptag 函數名 #如下命令關閉剛纔打開的分裂窗口 pclose #垂直分裂窗口打開一文件 vsplit 文件名 #水平分裂窗口打開一文件 split 文件名 變量名寫成\name表示匹配模式 停在某個括號上按%,跳到匹配的括號處,#if跳到匹配的#else或#endif處 set fdm=syntax摺疊函數體 雙擊]日後逐個函數跳讀,雙擊[往前逐個函數跳讀 #解決亂碼 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 #在vim下對比兩個文件,原來打開了fnpro.c,如今和fnpro.c.bak對比 #垂直分割 :vert diffsplit fnpro.c.bak #水平分割 :diffsplit fnpro.c.bak #跳到下一個不一樣之處 :]c #跳到上一個不一樣之處 :[c #展開摺疊:zo #摺疊:zc #不論何種狀況下-o均可以上一次跳轉的地方 #查看變量和函數的申明 [i #如下爲查看vim環境參數makeprg的值的例子: :set makeprg? #從新對文件代碼進行縮進 gg=G 跳轉到函數、變量定義處: [+ctrl+i 跳轉到函數、變量和#define [+ctrl+d 跳轉到#define處 ctrl+i 向前跳到前幾回光標位置 ctrl+o 向後跳到後幾回光標位置 函數體跳轉: [[ ]] [] ][ {} 2009-07-07 17:31 補充 如何選中括號中的內容 進行: 將光標移至括號內,按shift+v進入行選模式,而後 i{ - 選小括號中內容,不包括小括號 a{ - 選小括號中內容,包括小括號 ib - 選中括號中內容,不包括括號 ab - 選中括號中內容,包括括號 i{ - 選大括號中內容,不包括大括號 a{ - 選大括號中內容,包括大括號 :h text-objects 下面還有些相關的tips,未所有驗證: vi{ 選中{}中間的內容,不包括{} va{ 選中{}中間內容,包括{} vi( 選中()中間內容 vi< 選中<>中間內容 vi[ 選中[]中間內容 vit 選中中間的內容 vi」 選中」"中間內容 vi’ 選中」中間的內容 vis 選中一個句子 vib 選中一個block viw選中一個單詞 vip 選中一個段落 vim文件跳轉 若是使用vim打開了多個文件,如vim file1 file2 ... fileN 能夠經過 :n 或 :prev來跳轉到前一個或者後一個文件 還能夠經過 :first或:last來跳轉到第一個和最後一個文件 若是你只打開一個文件,如vim file1 而後在使用過程當中,經過 :e file2編輯了第二個文件,這時, :prev是不起做用的 能夠用 :e#返回上一個編輯的文件 不管哪兩種方式均可以用 :bN跳轉到打開的第N個文件 如:b1跳轉到第一個打開的文件
快捷鍵學習2linux
1、移動光標 1、左移h、右移l、下移j、上移k 2、向下翻頁ctrl + f,向上翻頁ctrl + b 3、向下翻半頁ctrl + d,向上翻半頁ctrl + u 4、移動到行尾$,移動到行首0(數字),移動到行首第一個字符處^ 5、移動光標到下一個句子 ),移動光標到上一個句子( 6、移動到段首{,移動到段尾} 7、移動到下一個詞w,移動到上一個詞b 8、移動到文檔開始gg,移動到文檔結束G 9、移動到匹配的{}.().[]處% 10、跳到第n行 ngg 或 nG 或 :n 11、移動光標到屏幕頂端H,移動到屏幕中間M,移動到底部L 12、讀取當前字符,並移動到本屏幕內下一次出現的地方 * 13、讀取當前字符,並移動到本屏幕內上一次出現的地方 # 2、查找替換 1、光標向後查找關鍵字 #或者g# 2、光標向前查找關鍵字 *或者g* 3、當前行查找字符 fx, Fx, tx, Tx 4、基本替換 :s/s1/s2 (將下一個s1替換爲s2) 5、所有替換 :%s/s1/s2 6、只替換當前行 :s/s1/s2/g 7、替換某些行 :n1,n2 s/s1/s2/g 8、搜索模式爲 /string,搜索下一處爲n,搜索上一處爲N 9、制定書籤 mx, 可是看不到書籤標記,並且只能用小寫字母 10、移動到某標籤處 `x,1旁邊的鍵 11、移動到上次編輯文件的位置 `. PS:.表明一個任意字符 *表明一個或多個字符的重複 正則表達式的內容將會在後續文章中整理 3、編輯操做 1、光標後插入a, 行尾插入A 2、後插一行插入o,前插一行插入O 3、刪除字符插入s, 刪除正行插入S 4、光標前插入i,行首插入I 5、刪除一行dd,刪除後進入插入模式cc或者S 6、刪除一個單詞dw,刪除一個單詞進入插入模式cw 7、刪除一個字符x或者dl,刪除一個字符進入插入模式s或者cl 8、粘貼p,交換兩個字符xp,交換兩行ddp 9、複製y,複製一行yy 10、撤銷u,重作ctrl + r,重複. 11、智能提示 ctrl + n 或者 ctrl + p 12、刪除motion跨過的字符,刪除並進入插入模式 c{motion} 13、刪除到下一個字符跨過的字符,刪除並進入插入模式,不包括x字符 ctx 14、刪除當前字符到下一個字符處的全部字符,並進入插入模式,包括x字符,cfx 15、刪除motion跨過的字符,刪除但不進入插入模式 d{motion} 16、刪除motion跨過的字符,刪除但不進入插入模式,不包括x字符 dtx 17、刪除當前字符到下一個字符處的全部字符,包括x字符 dfx 18、若是隻是複製的狀況時,將12-17條中的c或d改成y 19、刪除到行尾可使用D或C 20、拷貝當前行 yy或者Y 21、刪除當前字符 x 22、粘貼 p 23、可使用多重剪切板,查看狀態使用:reg,使用剪切板使用」,例如複製到w寄存器,」wyy,或者使用可視模式v」wy 24、重複執行上一個做用使用. 25、使用數字能夠跨過n個區域,如y3x,會拷貝光標到第三個x之間的區域,3j向下移動3行 26、在編寫代碼的時候可使用]p粘貼,這樣能夠自動進行代碼縮進 27、 >> 縮進全部選擇的代碼 28、 << 反縮進全部選擇的代碼 29、gd 移動到光標所處的函數或變量的定義處 30、K 在man裏搜索光標所在的詞 31、合併兩行 J 32、若不想保存文件,而從新打開 :e! 33、若想打開新文件 :e filename,而後使用ctrl + ^進行文件切換 4、窗口操做 1、分隔一個窗口:split或者:vsplit 2、建立一個窗口:new或者:vnew 3、在新窗口打開文件:sf {filename} 4、關閉當前窗口:close 5、僅保留當前窗口:only 6、到左邊窗口 ctrl + w, h 7、到右邊窗口 ctrl + w, l 8、到上邊窗口 ctrl + w, k 9、到下邊窗口 ctrl + w, j 10、到頂部窗口 ctrl + w, t 11、到底部窗口 ctrl + w, b 5、宏操做 1、開始記錄宏操做q[a-z],按q結束,保存操做到寄存器[a-z]中 2、@[a-z]執行寄存器[a-z]中的操做 3、@@執行最近一次記錄的宏操做 6、可視操做 1、進入塊可視模式 ctrl + v 2、進入字符可視模式 v 3、進入行可視模式 V 4、刪除選定的塊 d 5、刪除選定的塊而後進入插入模式 c 6、在選中的塊同是插入相同的字符 I<String>ESC 7、跳到聲明 1、[[ 向前跳到頂格第一個{ 2、[] 向前跳到頂格第一個} 3、]] 向後跳到頂格的第一個{ 4、]] 向後跳到頂格的第一個} 5、[{ 跳到本代碼塊的開頭 6、]} 跳到本代碼塊的結尾 8、掛起操做 1、掛起Vim ctrl + z 或者 :suspend 2、查看任務 在shell中輸入 jobs 3、恢復任務 fg [job number](將後臺程序放到前臺)或者 bg [job number](將前臺程序放到後臺) 4、執行shell命令 :!command 5、開啓shell命令 :shell,退出該shell exit 6、保存vim狀態 :mksession name.vim 7、恢復vim狀態 :source name.vim 8、啓動vim時恢復狀態 vim -S name.vim
DrawIt.vim 快捷鍵學習正則表達式
Supported Features <left> move and draw left <right> move and draw right, inserting lines/space as needed <up> move and draw up, inserting lines/space as needed <down> move and draw down, inserting lines/space as needed <s-left> move left <s-right> move right, inserting lines/space as needed <s-up> move up, inserting lines/space as needed <s-down> move down, inserting lines/space as needed <space> toggle into and out of erase mode > draw -> arrow < draw <- arrow ^ draw ^ arrow v draw v arrow <pgdn> replace with a \, move down and right, and insert a \ <end> replace with a /, move down and left, and insert a / <pgup> replace with a /, move up and right, and insert a / <home> replace with a \, move up and left, and insert a \ \> draw fat -> arrow \< draw fat <- arrow \^ draw fat ^ arrow \v draw fat v arrow \a draw arrow based on corners of visual-block \b draw box using visual-block selected region \e draw an ellipse inside visual-block \f fill a figure with some character \h create a canvas for \a \b \e \l \l draw line based on corners of visual block \s adds spaces to canvas <leftmouse> select visual block <s-leftmouse> drag and draw with current brush (register) \ra ... \rz replace text with given brush/register \pa ... like \ra ... \rz, except that blanks are considered to be transparent
Gvim 刪除命令shell
刪除沒有內容的空行 g/^$/d 刪除包含有空格組成的空行 g/^\s*$/d 以空格或tab開頭到結尾的空行 g/^[ |\t]*$/d :%s/r//g 刪除DOS方式的回車^M :%s= *$== 刪除行尾空白 :%s/^(.*)n1/1$/ 刪除重複行 :%s/^.{-}pdf/new.pdf/ 只是刪除第一個pdf :%s/<!--_.{-}-->// 又是刪除多行註釋(咦?爲何要說「又」呢?) :g/s*^$/d 刪除全部空行 :這個好用有沒有人用過還有其餘的方法嗎? :g!/^dd/d 刪除不含字符串'dd'的行 :v/^dd/d 同上 (譯釋:v == g!,就是不匹配!) :g/str1/,/str2/d 刪除全部第一個含str1到第一個含str2之間的行 :v/./.,/./-1join 壓縮空行 :g/^$/,/./-j 壓縮空行 ndw 或 ndW 刪除光標處開始及其後的 n-1 個字符。 d0 刪至行首。 d$ 刪至行尾。 ndd 刪除當前行及其後 n-1 行。 x 或 X 刪除一個字符。 Ctrl+u 刪除輸入方式下所輸入的文本。 ^R 恢復u的操做 J 把下一行合併到當前行尾 V 選擇一行 ^V 按下^V後便可進行矩形的選擇了 aw 選擇單詞 iw 內部單詞(無空格) as 選擇句子 is 選擇句子(無空格) ap 選擇段落 ip 選擇段落(無空格) D 刪除到行尾 x,y 刪除與複製包含高亮區 dl 刪除當前字符(與x命令功能相同) d0 刪除到某一行的開始位置 d^ 刪除到某一行的第一個字符位置(不包括空格或TAB字符) dw 刪除到某個單詞的結尾位置 d3w 刪除到第三個單詞的結尾位置 db 刪除到某個單詞的開始位置 dW 刪除到某個以空格做爲分隔符的單詞的結尾位置 dB 刪除到某個以空格做爲分隔符的單詞的開始位置 d7B 刪除到前面7個以空格做爲分隔符的單詞的開始位置 d) 刪除到某個語句的結尾位置 d4) 刪除到第四個語句的結尾位置 d( 刪除到某個語句的開始位置 d) 刪除到某個段落的結尾位置 d{ 刪除到某個段落的開始位置 d7{ 刪除到當前段落起始位置以前的第7個段落位置 dd 刪除當前行 d/text 刪除從文本中出現「text」中所指定字樣的位置, 一直向前直到下一個該字樣所出現的位置(但不包括該字樣)之間的內容 dfc 刪除從文本中出現字符「c」的位置,一直向前直到下一個該字符所出現的位置(包括該字符)之間的內容 dtc 刪除當前行直到下一個字符「c」所出現位置之間的內容 D 刪除到某一行的結尾 d$ 刪除到某一行的結尾 5dd 刪除從當前行所開始的5行內容 dL 刪除直到屏幕上最後一行的內容 dH 刪除直到屏幕上第一行的內容 dG 刪除直到工做緩存區結尾的內容 d1G 刪除直到工做緩存區開始的內容