摘要:什么是是從發(fā)展出來的一個文本編輯器。依次沿著你的跳轉記錄向回跳依次沿著你的跳轉記錄向前跳命令當輸入會進入命令行編輯,在編輯器的最下邊,出現(xiàn),其中命令被稱作命令。選項,設置當前打開的編輯器的選項,例如是否展示行號,自動縮進等。
什么是Vim
Vim是從 vi 發(fā)展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs(夸張的說法是偽裝成編輯器的操作系統(tǒng))并列成為類Unix系統(tǒng)用戶最喜歡的文本編輯器。Bram Moolenaar 從一個開源的vi開發(fā)了1.0的Vim,并且在1992 年 1.22 版本的 Vim 被移植到了 UNIX 和MS-DOS上。自vim發(fā)布有很多程序員使用,到2010年vim發(fā)布7.3版本,目前最新的一個版本。
安裝VimMac下可以直接使用brew安裝:
brew install macvim
其他系統(tǒng)下的安裝可查看官方網(wǎng)站http://www.vim.org/download.p...
基本概念 普通( Normal )模式當我們通過vim 文件或文件夾進入編輯器時,默認的就是普通模式,或者叫做命令模式,在這種模式下,鍵盤上的大部分輸入會被認作是快捷鍵。普通模式也是vim使用中最多使用的模式,能很大的提高編輯效率。
命令解釋中的參數(shù):
CHAR 任何非空白字符
WORD 非空白字符的序列 (字串)
N 命令前輸入的數(shù)值
{motion} 光標移動命令
Nmove {motion} 移動經過的文本
當進入普通模式時左下角顯示--INSERT--,下面介紹一些常用的快捷鍵:
1.模式轉換基本的模式轉換快捷鍵,對于進入編輯模式,下面還有其他快捷鍵在完成后也會進入編輯模式。
普通模式進入編輯模式
i 在當前位置生前插入N次 I 在當前行首插入N次 a 在當前位置后插入N次 A 在當前行尾插入N次 o 在當前行之后插入一行N次 O 在當前行之前插入一行N次
普通模式進入可視化模式
v 開始面向字符的可視 (Visual) 模式 V 進入面向行的可視 (Visual) 模式 CTRL+v 進入面向列的可視 (Visual) 模式2.光標移動及屏幕調整
通過快捷鍵我們可以完成光標的快速移動.
h 光標左移 N 個字符 l 光標右移 N 個字符,這個命令很少用,一般用w代替。 k 光標上移 N 行 j 光標下移 N 行 w 光標向前移動 N 個 WORD,停留在該 WORD 的第一個字符,當?shù)竭_該行行尾時,會自動換行。 e 光標向前移動 N 個 WORD,停留在該 WORD 的最后一個字符,當?shù)竭_該行行尾時,會自動換行。 b 光標向后移動 N 個 WORD,停留在該 WORD 的第一個字符,當?shù)竭_該行行首時,會自動換行。 W,E,B 與w,e,b 功能是一致的,但是在區(qū)分 WORD 上是不同的,對于parent.child這種,大寫的快捷鍵會忽略標點符號。 ^ 移動到本行第一個非空白字符上。 0(數(shù)字0)移動到本行第一個字符上,HOME鍵也可。 $ 移動到當前行,下 N 行行尾。 | 移到當前行的第 N 個字符。 gg 移動到文件的第一行,同 [[。 G 移動到文件的最后一行,同 ]]。(NG會移動到第 N 行) f 也可用于移動光標,fx會查找光標后的字符x,3fx會查找光標后的第三個字符x。但f只局限與當前行不會跨行。 F 同f,反向查找。 ; 重復前面的f、F、t或T查找命令。 , 以相反的方向重復前面的f、F、t或T查找命令。 z將當前行下的第 N 行置為屏幕的頂行(即z+ENTER) 或者zt z. 將當前行上的第 N 行置為屏幕的中央 或者zz z- 將當前行上的第 N 行置為屏幕的底行 或者zb H 移動到當前屏幕的開頭下 N 行。 M 移動到當前屏幕的中間。 L 移動到當前屏幕的結尾上 N 行。 gm 移動到屏幕中間 + 移動到下一行的第一個非空字符 - 移動到上一行的第一個非空字符 % 光標會移動后面的第一個小括號中括號大括號 ,所匹配的小括號中括號大括號,即成對出現(xiàn)的符號。
書簽
m[a-zA-Z] 在光標所在行定義書簽,使用"+書簽名 跳轉。例如 ma,"a。
組合鍵
Ctrl + e 向下滾動一行 Ctrl + y 向上滾動一行 Ctrl + d 向下滾動半屏 Ctrl + u 向上滾動半屏 Ctrl + f 向下滾動一屏,同 PAGEDOWN。 Ctrl + b 向上滾動一屏,同 PAGEUP。 Ctrl + o 依次沿著你的跳轉記錄向回跳 Ctrl + i 依次沿著你的跳轉記錄向前跳
EX命令 當輸入: / ? 會進入命令行編輯,在編輯器的最下邊,出現(xiàn) : / ? ,其中: + 命令 被稱作EX命令。
:+行號 可以直接跳到該行 ,當輸入行號大于最大行號時,會跳到最后一行。在便器展示行號的情況下,這個命令被經常使用。 :ju 列出跳轉歷史。3.查找及替換
查找,vim中可以通過EX命令 :set + 選項 ,去設置一些選項來影響查找。輸入/ ? 時,會在底行出現(xiàn)該命令,然后可以輸入字符,輸入ENTER開始查找,支持正則表達式,并且支持歷史操作。
/{查找的內容}[/偏移量] 光標處向下查找指定內容 ?{查找的內容}[/偏移量] 光標處向上查找指定內容 /和? 在開始查找時可使用n或者N在找到的內容之間跳轉。 n 重復前一個查找的動作 N 與 n 剛好相反,反向進行前一個查找動作 :set ignorecase 忽略大小寫的查找 :set noignorecase 不忽略大小寫的查找 :set hlsearch 高亮搜索結果,所有結果都高亮顯示,而不是只顯示一個匹配。 :set nohlsearch 關閉高亮搜索顯示 :nohlsearch 關閉當前的高亮顯示,如果再次搜索或者按下n或N鍵,則會再次高亮。 :set incsearch 逐步搜索模式,對當前鍵入的字符進行搜索而不必等待鍵入完成。 :set wrapscan 重新搜索,在搜索到文件頭或尾時,返回繼續(xù)搜索,默認開啟。 *或者# 會選中光標處的WORD,然后 直接輸入N/n,開始查找。
替換,替換操作可以實現(xiàn)縮進,注釋。
r{CHAR} 替換光標處的字符。 R{WORD} 替換光標處的字符,直到輸入或者CTRL+[為止。 :s/old/new/ 用old替換new,替換當前行的第一個匹配 :s/old/new/c 用old替換new,替換當前行的第一個匹配 帶確認選項的刪除(選項y[es] ,n[o] ,a[ll] ,q[uit],l[ast]替換完當前退出,Ctrl+e ,Ctrl+y) :%s/s+$// 刪除行尾空格 :s/old/new/g 用old替換new,替換當前行的所有匹配 :%s/old/new/ 用old替換new,替換所有行的第一個匹配 :%s/old/new/g 用old替換new,替換所有行的所有匹配 :%s/([^,]*), (.*)/2 1/ :n,m s/old/new/g 在第n行到第m行之間,用old替換new,替換所有匹配。 & 重復最后的:s命令 :10,20 s/^/ /g 在第10行知第20行每行前面加四個空格,用于縮進。 :起始行號,結束行號s/^/注釋符/g :起始行號,結束行號s/^注釋符//g
查找并執(zhí)行命令
:g/text1/s/text2/text3 查找包含text1的行,用text3替換text2 :g/text/command 在所有包含text的行運行command所表示的命令 :g/^/m 0 :v/text/command 在所有不包含text的行運行command所表示的命令4.刪除 剪切 拷貝 粘貼
vim是不支持系統(tǒng)的剪切板,linux中,通常通過vim的寄存器來實現(xiàn),"+y 復制到系統(tǒng)剪切板 ,"+p 把系統(tǒng)粘貼板里的內容粘貼到vim,對于mac,macvim是command+c 和command+v
x 刪除光標后 N 個字符 d{motion} 刪除移動命令經過的字符,例如 dj 刪除當前行及下面一行。 dd 刪除當前行 d$ 刪除光標到行尾的內容 同D。 Ndd 刪除當前行開始的N行。 dG 刪除當前行之后所有行 dgg 刪除當前行之前所有行 :1,10d 刪除1-10行 :11,$d 刪除11行及以后所有的行 :1,$d 刪除所有行 J 合并當前行及下面 N 行。即刪除空格。 s 刪除光標處的 N 個字符并進入插入模式 S 刪除光標下的 N 行并進入插入模式 c{motion} 改變移動命令經過的字符,同d 命令,并進入插入模式。 y 拷貝當前光標選中部分,常在可視模式中使用。 yy 拷貝當前行下 N 行 :1,10y 復制1-10行 :,10y 復制光標所在行到10行 p 在當前光標后粘貼 N 次,如果之前使用了yy命令來復制一行,那么就在當前行的下一行粘貼。 P 在當前行前粘貼 N 次 :1,n co m 將1-n行插入到第m行之后。 :1,$ co $ 將整個文件復制一份并添加到文件尾部。5.撤銷 重復
u 撤銷(Undo) U 撤銷對整行的操作 Ctrl + r ,即撤銷的撤銷。 . 重復上次修改,包含你在插入模式的插入。許多如果想多次使用的修改命令,可以它代替。6.EX命令
當輸入:會在底行出現(xiàn):,再次輸入的內容都會出現(xiàn)在:之后,這些輸入的內容,會被認作EX命令。
通過EX命令設置的vim選項,都只在當前編輯窗中有效,退出后,則消失,如需永久有效,需修改vim的配置文件.vimrc。
常使用的EX命令:
:q 退出文件 :w 保存文件 (或者+ filename 另存為) :wq 保存退出文件(也可在普通模式下使用 ZZ 快捷鍵) :x 保存退出 與wq的區(qū)別是保存退出時,如果該文件沒有修改,則不會修改文件的時間戳,wq則一定會。 :q! 強制退出 :help+命令 查看幫助 :e 后接文件名,打開文件,支持ftp,不接文件名時,直接刷新當前文件。 :e!放棄所有修改,重新打開文件。 :open+7.其他打開file #可通過:files或者:ls或者:buffers,來查看vim緩沖區(qū),即可跳轉文件。 :bn 切換到下一個文件 :n 編輯下一個文件 :bp 切換到上一個文件 :new 打開個新窗口或者在新窗口打開文件 :split 打開個新窗口或者在新窗口打開文件(vsplit也可以,split打開的窗口都是橫向的,使用vsplit可以縱向打開窗口。) :!command 在當前目錄下執(zhí)行shell命令。 :sh 打開子shell,ctrl+d或者exit退出 (或者使用Ctrl+z 掛起 ,fg返回) :r 文件名 在光標所在處插入一個文件的內容。 :10r 文件名 將文件插入至 10 行之后。 :r! {command} 將命令 {command} 的標準輸出插入到光標之下 :10,29write [!或者>>]name 將10-29 行的內容保存到文件name中。!表示強制 >> 表示追加 :f 顯示文件名、當前的行號、文件的總行數(shù)和文件位置的百分比,是否修改。 :f+ 改變編輯中的文件名。 :iab[breviate] re React 定義插入模式下縮寫。 :abclear #set 選項 :set+
:ls 查看緩存區(qū) q: 查看命令窗口 :reg 查看寄存器 :marks 查看書簽 :delm[ark] + 書簽名 刪除書簽。 <{motion} 將動作 {motion} 覆蓋的所有行向左移動 1個移位寬度 >{motion} 將動作 {motion} 覆蓋的所有行向右移動 1個移位寬度 >> 向右移動一個移位寬度 << 向左移動一個移位寬度 :n,m>> ,n到m行右移一個移位寬度 CTRL+g 顯示文件名、當前的行號、文件的總行數(shù)和文件位置的百分比,是否修改。 := 打印文件中的行數(shù) gf 打開光標處文件,文件要在當前目錄內。 gd 到達光標所在處函數(shù)或者變量的定義處。 :". 它移動光標到上一次的修改行 K 看光標所指標識符的 man 幫助頁 ~ 大小寫替換,同時光標前移 gu{motion} 經過的位置內容小寫(guu 當前行) gU{motion} 經過的位置內容大寫(gUU 當前行) g~{motion} 經過的位置內容大小寫互換。 zfap 按段落折疊 zo 打開折疊插入模式
只有在插入模式下,才可以做文字輸入,不會被認為是快捷鍵,在普通模式下可以通過i進入插入模式。
CTRL+c 同可視模式離開插入模式 CTRL+o {command}短暫離開插入模式,執(zhí)行命令command后回到插入。
可視模式下可以使用普通模式的大部分快捷鍵,當進入可視模式時左下角顯示--VISUAL--,具體細節(jié)可查看vim的文檔
可視模式主要是做選擇操作,此時移動光標的操作都會把光標經過的部分選中。
CTRL+c 同常用插件 NERDTree離開可視模式 ab 選擇 "一個塊" (從 "[(" 至 "])") (block) ib 選擇 "內含塊" (從 "[(" 到 "])") aB 選擇 "一個大塊" (從 "[{" 到 "]}") (Block) iB 選擇 "內含大塊" (從 "[{" 到 "]}") U 選中部分大寫 u 選中部分小寫
NERDTree最常用的插件之一,以樹形結構展示文件夾,實現(xiàn)我們在IDE的項目視圖??梢匀ス俜骄W(wǎng)站https://github.com/scrooloose...查看如何下載安裝。
主要快捷鍵:
ctrl + w + h 工作窗口左移 ctrl + w + l 工作窗口右移 ctrl + w + w 光標自動在左右側窗口切換 ctrl + w + r 移動當前窗口的布局位置 o 在已有窗口中打開文件、目錄或書簽,并跳到該窗口 go 在已有窗口 中打開文件、目錄或書簽,但不跳到該窗口 t 在新 Tab 中打開選中文件/書簽,并跳到新 Tab T 在新 Tab 中打開選中文件/書簽,但不跳到新 Tab i split 一個新窗口打開選中文件,并跳到該窗口 gi split 一個新窗口打開選中文件,但不跳到該窗口 s vsplit 一個新窗口打開選中文件,并跳到該窗口 gs vsplit 一個新 窗口打開選中文件,但不跳到該窗口 ! 執(zhí)行當前文件 O 遞歸打開選中 結點下的所有目錄 x 合攏選中結點的父目錄 X 遞歸 合攏選中結點下的所有目錄 e Edit the current dif 雙擊 相當于 NERDTree-o 中鍵 對文件相當于 NERDTree-i,對目錄相當于 NERDTree-e D 刪除當前書簽 P 跳到根結點 p 跳到父結點 K 跳到當前目錄下同級的第一個結點 J 跳到當前目錄下同級的最后一個結點 k 跳到當前目錄下同級的前一個結點 j 跳到當前目錄下同級的后一個結點 C 將選中目錄或選中文件的父目錄設為根結點 u 將當前根結點的父目錄設為根目錄,并變成合攏原根結點 U 將當前根結點的父目錄設為根目錄,但保持展開原根結點 r 遞歸刷新選中目錄 R 遞歸刷新根結點 m 顯示文件系統(tǒng)菜單 cd 將 CWD 設為選中目錄 I 切換是否顯示隱藏文件 f 切換是否使用文件過濾器 F 切換是否顯示文件 B 切換是否顯示書簽 q 關閉 NerdTree 窗口 ? 切換是否顯示 Quick Help #切換標簽頁 :tabnew [++opt選項] [+cmd] 文件 建立對指定文件新的tab :tabc 關閉當前的 tab :tabo 關閉所有其他的 tab :tabs 查看所有打開的 tab :tabp 前一個 tab :tabn 后一個 tabpathogen
插件管理工具,vim有很多插件可供我們使用,當插件數(shù)量大的時候就需要一個專門的工具去管理,pathogen就是實現(xiàn)功能,下載安裝https://github.com/tpope/vim-...
其他vim 有很多有用的插件,像ctags、taglist、foldmethod、xmledit、visualmark、vim-markdown等。當然也有一些人把一些好的配置分享出來,比較受歡迎的有:
https://github.com/spf13/spf1...
https://github.com/carlhuda/j...
最近發(fā)現(xiàn)個,可以看看試著去配置自己的vim
https://github.com/square/max...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/24843.html
摘要:概述用戶經常需要對系統(tǒng)配置文件進行文本編輯,所以至少掌握一種文本編輯器,首選編輯器是。的命令幾乎全部都可以在上使用,安裝了的系統(tǒng),在命令行輸入,實際啟動的是編輯器。 Vi/Vim概述 Linux用戶經常需要對系統(tǒng)配置文件進行文本編輯,所以至少掌握一種文本編輯器,首選編輯器是Vi/Vim。幾乎任何一個發(fā)行版都有Vi或者Vim編輯器。 Vi編輯器可以對文本進行編輯、刪除、查找和替...
摘要:在這樣一個時代,還要學這種中古的技能嗎我來討論一下為什么要,不但要,而且必須要。其實要說功能強大,的產品無疑都很牛。這也是造成它學習成本高,被人吐槽多的原因。出現(xiàn)之后,包括等等在內的各種創(chuàng)新涌現(xiàn)了出來。 曾經有一段時間,編輯器領域的創(chuàng)新停滯了。在web編程走紅,尤其是electron出現(xiàn)之后,這個領域又上了一個新臺階。Atom, VsCode等等替代了之前唯一的但是臃腫的跨平臺選擇 -...
摘要:點擊原文鏈接體驗更佳哦優(yōu)測優(yōu)社區(qū)干貨精選老司機亂談編輯器之神騰訊優(yōu)測騰訊優(yōu)測是專業(yè)的移動云測試平臺,為應用游戲,混合應用的研發(fā)團隊提供產品質量檢測與問題解決服務。 文 / 騰訊 吳雙 前言 優(yōu)測小優(yōu) 有話說: 騰訊優(yōu)測只有應用測試大神?不不不,我們還有各種研發(fā)大牛! vim 是一種信仰,我自從2004年有了這個信仰,已經12個年頭了。本文介紹了學習vim的方法以及一些vim常用的插件...
閱讀 1513·2021-10-11 10:58
閱讀 1535·2021-09-04 16:41
閱讀 747·2019-08-30 15:55
閱讀 852·2019-08-29 18:46
閱讀 3201·2019-08-29 14:05
閱讀 3592·2019-08-26 14:00
閱讀 2525·2019-08-26 13:53
閱讀 3261·2019-08-26 13:29