Vim編輯器簡(jiǎn)單使用

Vim Logo

自己根據(jù)馬哥教程總結(jié)的部分Vim基礎(chǔ)使用
Vim是一款很強(qiáng)大的文本編輯工具.如果你常需要書(shū)寫(xiě)或編輯大量文本,那學(xué)會(huì)它絕對(duì)會(huì)讓你的工作與學(xué)習(xí)如虎添翼.

幾種模式:

1.命令 : 默認(rèn)進(jìn)入顯示的為命令模式,光標(biāo)為粗豎線涵防。按[aAiIoO..]等字母可切換到編輯模式.
2.編輯 : 光標(biāo)為細(xì)豎線。別的模式按‘Esc’或'Ctrl+c'可以切換到命令模式.
3.末行 : 在命令模式下輸入‘:’號(hào)可以切換到末行.
4.可視 : 在命令模式下輸入v或V可切換到可視模式.

打開(kāi)文件:

    vim +num file : 打開(kāi)文件后光標(biāo)處于第num行第一個(gè)字符處.
    vim + file: 打開(kāi)文件后光標(biāo)在最后一行沪铭。
    vim +/PATTERN file : 打開(kāi)文件后光標(biāo)處于第一個(gè)被PATTERN匹配到的地方

同時(shí)打開(kāi)多個(gè)文件:

    用法 :vim file1 file2 ... (默認(rèn)只顯示第一個(gè)打開(kāi)的文件,因?yàn)橹挥幸粋€(gè)窗口)
        :next 打開(kāi)下個(gè)file
        :prev 打開(kāi)上個(gè)file
        :first 打開(kāi)第一個(gè)file
        :last 打開(kāi)最后一個(gè)file
    退出所有文件:
        :wall 保存所有文件
        :qall 退出所有文件
        :wqall 保存退出所有文件匹配到的行的行首

多窗口操作多個(gè)文件

多窗口同時(shí)顯示多個(gè)文件:
vim -o file1 file2  水平分割窗口(即file1在上file2在下)    Ctrl+w 松開(kāi)后再   按上下方向鍵切換光標(biāo)所在窗口
vim -O file1 file2  垂直分割窗口(即file1在左file2在右)    Ctrl+w 松開(kāi)后再按左右方向鍵切換光標(biāo)所在窗口
再切分文件:
    Ctrl+w,s: 水平分割光標(biāo)所在的窗口,即上下顯示同一個(gè)文件(逗號(hào)處表松開(kāi)前兩鍵) 
    Ctrl+w,v: 垂直分割光標(biāo)所在的窗口,即左右顯示當(dāng)前文件的兩份相同的內(nèi)容(同上)      
    Ctrl+w,c: 在光標(biāo)所在的窗口中依次取消多窗口(同Ctrl + w,q功能一致) 
    Ctrl+w,x: 交換同一文件但多個(gè)窗口中的內(nèi)容(即窗口位置互相調(diào)換)

命令模式下的光標(biāo)跳轉(zhuǎn)操作

    #G : #號(hào)用數(shù)字替代,表示跳至第#行,這個(gè)功能還可以用末行模式來(lái)完成:按':'號(hào)然后輸入想查找的行號(hào)回車(chē)即可.如 :25
    + : 光標(biāo)移動(dòng)到非空格符的下一列
    - : 光標(biāo)移動(dòng)到非空格符的上一列
    H : 光標(biāo)移動(dòng)到當(dāng)前屏第一行第一個(gè)字符
    M : 光標(biāo)移到當(dāng)前屏中間行第一個(gè)字符
    L : 光標(biāo)移動(dòng)至當(dāng)前屏最后一行第一個(gè)字符

行首行尾跳轉(zhuǎn):
    ^ : 跳轉(zhuǎn)至行首第一個(gè)非空白字符
    $ : 中轉(zhuǎn)至行尾最后一個(gè)非空白字符
    0 : 中轉(zhuǎn)至絕對(duì)行首
句間跳轉(zhuǎn):vim -R file: 以只讀模式打開(kāi)file文件壮池。

單詞間跳轉(zhuǎn):
    w : 下一個(gè)單詞的詞首
    b : 上一個(gè)單詞的詞首
    e : 下一個(gè)單詞的詞尾    
    n <space> : 光標(biāo)向右偏移n個(gè)字符
行間跳轉(zhuǎn):
    gg: 跳至文件第一行
    G : 跳至文件最后一行
    
    n <enter> : 光標(biāo)向下移動(dòng)n行
行內(nèi)跳轉(zhuǎn):
    0: 絕對(duì)行首
    ^: 行內(nèi)第一個(gè)非空白字符
    $: 絕對(duì)行尾
句子跳轉(zhuǎn):
    ) : 句子間跳轉(zhuǎn),用得少
    ( : 
段間跳轉(zhuǎn):
    } :
    { :
翻屏:
    Ctrl + f: 文件后翻一屏
    Ctrl + d:        半屏
    Ctrl + b: 文件前翻一屏
    Ctrl + u:        半屏

命令模式下的編輯操作

編輯(支持前面加數(shù)字):
    刪除:
        x,X(向前刪一個(gè)字符), xp(對(duì)調(diào)) 
        dd,db,de,d^,d$,...
    改變:會(huì)切換到輸入模式
        c, cc, cw, c$, c^
    替換:
        r : 替換光標(biāo)當(dāng)前那個(gè)字符
        R : 會(huì)一直替換光標(biāo)所指的文字,直到按下ESC為止
    復(fù)制:(yank)
        y (用法同刪除d類(lèi)似) 如yy即復(fù)制一行 
    粘貼:
        P(當(dāng)前行上一行), p(往當(dāng)前行下一行)
        如果復(fù)制或刪除的不是整行則
            P --> 粘貼在光標(biāo)所在字符的前面
            p -->                  后
    撤銷(xiāo):
        u : 撤銷(xiāo)此前的操作
        #u: 撤銷(xiāo)此前#個(gè)操作
    撤銷(xiāo)此前的撤銷(xiāo): Ctrl + r
    
    重復(fù)執(zhí)行此前的命令: .
    插入: i I
    添加: a A
    插入新一行: o O

可視模式(相當(dāng)于窗口界面上用鼠標(biāo)選中一段內(nèi)容):

    v : 按字符選定
    V : 按行選定
    對(duì)選定的內(nèi)容可結(jié)合上述編輯命令進(jìn)行操作

末行模式:

    1. 地址定界
        %: 表示全文
        .: 表示當(dāng)前行
        $: 表示最后一行    
        +#: 向下的#行
        strart_pos[,end_pos]:
            例如:5 第5行  
                :5,10 從第5行到第10行                                # 示例刪除5至99行內(nèi)容   :5,99d  
                :5,+10 從第5行開(kāi)始往后加10行 

        /pattern/: 光標(biāo)所在處起始向文件尾部第一次被模式所匹配到的行       # :/
            如 :/first/,$
        :/pattern1/,/pattern2/  表示從光標(biāo)所在處起始,第一次由pat1匹配到的行開(kāi)始,至第一次由pat2匹配到的行結(jié)束.
        同地址定界符配合使用的命令:
            d,y,c,
            w /PATH/TO/SOMEFILE: 將范圍內(nèi)的文本保存至指寶的文件中.
            r /PATH/TO/SOMEFILE: 將指定的文件中的文件讀取并插入至指定的位置.
    2.查找(這個(gè)方法同Linux man手冊(cè)是一樣的)
        /PATTERN: 從當(dāng)前光標(biāo)所在處向文件尾部查找能夠被當(dāng)前模式匹配到的所有字符串
            n 下一個(gè)
            N 上一個(gè)
        ?PATTERN: 從當(dāng)前光標(biāo)所在處向文件首部查找能夠被當(dāng)前模式匹配到的所有字符串
            n與N的用法與上面相反
    3.查找并替換
        格式:
            :s/old/new/修飾符   其中old可使得正則表達(dá)式,new不能使用正則表達(dá)式但可以引用.
                修飾符:
                    i : 查找時(shí)忽略大小寫(xiě)
                    g : 全局替換,意味著一行中如果匹配到多次則均替換
    4. 常用示例:
        :g/^$/d  刪除空白行
    5. 寫(xiě)輸出(拷貝 保存)保存到其他文件
        :35,46 w /root/new.txt
    6. 在當(dāng)前光標(biāo)后 讀(插)入新內(nèi)容
        :r /home/james/books.txt

Vim配置文件常用功能配置指令:


        vim FILE +NUM:      定位具體某行打開(kāi)FILE    
        set nocompatible    " 關(guān)閉 vi 兼容模式
        syntax on           " 自動(dòng)語(yǔ)法高亮
        set list            " 顯示tab與換行符"$"
        
        set number          " 顯示行號(hào)
        set cursorline      " 突出顯示當(dāng)前行
        set ruler           " 打開(kāi)狀態(tài)欄標(biāo)尺
        set shiftwidth=4    " 設(shè)定 << 和 >> 命令移動(dòng)時(shí)的寬度為 4
        set softtabstop=4   " 使得按退格鍵時(shí)可以一次刪掉 4 個(gè)空格
        
        set nobackup        " 覆蓋文件時(shí)不備份
        set autochdir       " 自動(dòng)切換當(dāng)前目錄為當(dāng)前文件所在的目錄
        filetype plugin indent on  " 開(kāi)啟插件
        set backupcopy=yes  " 設(shè)置備份時(shí)的行為為覆蓋
        set ignorecase smartcase   " 搜索時(shí)忽略大小寫(xiě),但在有一個(gè)或以上大寫(xiě)字母時(shí)仍保持對(duì)大小寫(xiě)敏感
        set nowrapscan      " 禁止在搜索到文件兩端時(shí)重新搜索
        set incsearch       " 輸入搜索內(nèi)容時(shí)就顯示搜索結(jié)果
        set hlsearch        " 搜索時(shí)高亮顯示被找到的文本
        set noerrorbells    " 關(guān)閉錯(cuò)誤信息響鈴
        set novisualbell    " 關(guān)閉使用可視響鈴代替呼叫
        set t_vb=           " 置空錯(cuò)誤鈴聲的終端代碼
        " set showmatch     " 插入括號(hào)時(shí)伦意,短暫地跳轉(zhuǎn)到匹配的對(duì)應(yīng)括號(hào)
        " set matchtime=2   " 短暫跳轉(zhuǎn)到匹配括號(hào)的時(shí)間
        set magic           " 設(shè)置魔術(shù)
        set hidden          " 允許在有未保存的修改時(shí)切換緩沖區(qū)火窒,此時(shí)的修改由 vim 負(fù)責(zé)保存
        set guioptions-=T   " 隱藏工具欄
        set guioptions-=m   " 隱藏菜單欄
        set smartindent     " 開(kāi)啟新行時(shí)使用智能自動(dòng)縮進(jìn)
        set backspace=indent,eol,start  " 不設(shè)定在插入狀態(tài)無(wú)法用退格鍵和 Delete 鍵刪除回車(chē)符
        set cmdheight=1     " 設(shè)定命令行的行數(shù)為 1
        set laststatus=2    " 顯示狀態(tài)欄 (默認(rèn)值為 1, 無(wú)法顯示狀態(tài)欄)
        set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
        " 設(shè)置在狀態(tài)行顯示的信息
        set foldenable      " 開(kāi)始折疊
        set foldmethod=syntax " 設(shè)置語(yǔ)法折疊
        set foldcolumn=0    " 設(shè)置折疊區(qū)域的寬度
        setlocal foldlevel=1 " 設(shè)置折疊層數(shù)為
        " set foldclose=all " 設(shè)置為自動(dòng)關(guān)閉折疊
        " nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
        " 用空格鍵來(lái)開(kāi)關(guān)折疊
        set nocompatible           " 去掉有關(guān)vi一致性模式,避免以前版本的bug和局限"    
        set guifont=Luxi/ Mono/ 9  " 設(shè)置字體驮肉,字體名稱(chēng)和字號(hào)"
        filetype on                " 檢測(cè)文件的類(lèi)型"    
        set history=1000           " 記錄歷史的行數(shù)"
        set background=dark        " 背景使用黑色"
        syntax on                  " 語(yǔ)法高亮度顯示
        set autoindent             " vim使用自動(dòng)對(duì)齊熏矿,也就是把當(dāng)前行的對(duì)齊格式應(yīng)用到下一行(自動(dòng)縮進(jìn))"
        set cindent                " (cindent是特別針對(duì) C語(yǔ)言語(yǔ)法自動(dòng)縮進(jìn))"
        set smartindent            " 依據(jù)上面的對(duì)齊格式,智能的選擇對(duì)齊方式离钝,對(duì)于類(lèi)似C語(yǔ)言編寫(xiě)上有用"   
        set tabstop=4              " 設(shè)置tab鍵為4個(gè)空格"
        set shiftwidth =4          " 設(shè)置當(dāng)行之間交錯(cuò)時(shí)使用4個(gè)空格"     
        set ai!                    " 設(shè)置自動(dòng)縮進(jìn)" 
        colorscheme molokai " 設(shè)定配色方案
        set showmatch              " 設(shè)置匹配模式票编,類(lèi)似當(dāng)輸入一個(gè)左括號(hào)時(shí)會(huì)匹配相應(yīng)的右括號(hào)"      
        set guioptions-=T          " 去除vim的GUI版本中得toolbar"   
        set vb t_vb=               " 當(dāng)vim進(jìn)行編輯時(shí),如果命令錯(cuò)誤卵渴,會(huì)發(fā)出警報(bào)慧域,該設(shè)置去掉警報(bào)"       
        set ruler                  " 在編輯過(guò)程中,在右下角顯示光標(biāo)位置的狀態(tài)行"     
        set nohls                  " 默認(rèn)情況下浪读,尋找匹配是高亮度顯示昔榴,該設(shè)置關(guān)閉高亮顯示"     
        set incsearch              " 在程序中查詢(xún)一單詞辛藻,自動(dòng)匹配單詞的位置;如查詢(xún)desk單詞互订,當(dāng)輸?shù)?d時(shí)吱肌,會(huì)自動(dòng)找到第一個(gè)d開(kāi)頭的單詞,當(dāng)輸入到/de時(shí)仰禽,會(huì)自動(dòng)找到第一個(gè)以ds開(kāi)頭的單詞氮墨,以此類(lèi)推,進(jìn)行查找吐葵;當(dāng)找到要匹配的單詞時(shí)规揪,別忘記回車(chē)" 
        set backspace=2            " 設(shè)置退格鍵可用"

vim中切換模式時(shí)顯示不同的光標(biāo)形狀(放置在家目錄中的.vimrc文件中即可):
if has("autocmd")
  au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
  au InsertEnter,InsertChange *
    \ if v:insertmode == 'i' | 
    \   silent execute '!echo -ne "\e[6 q"' | redraw! |
    \ elseif v:insertmode == 'r' |
    \   silent execute '!echo -ne "\e[4 q"' | redraw! |
    \ endif
  au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif

最后分享個(gè)不錯(cuò)的VIM思維導(dǎo)圖概覽

會(huì)用這些功能就夠了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市温峭,隨后出現(xiàn)的幾起案子猛铅,更是在濱河造成了極大的恐慌,老刑警劉巖诚镰,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奕坟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡清笨,警方通過(guò)查閱死者的電腦和手機(jī)月杉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抠艾,“玉大人苛萎,你說(shuō)我怎么就攤上這事〖旌牛” “怎么了腌歉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)齐苛。 經(jīng)常有香客問(wèn)我翘盖,道長(zhǎng),這世上最難降的妖魔是什么凹蜂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任馍驯,我火速辦了婚禮,結(jié)果婚禮上玛痊,老公的妹妹穿的比我還像新娘汰瘫。我一直安慰自己,他們只是感情好擂煞,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布混弥。 她就那樣靜靜地躺著,像睡著了一般对省。 火紅的嫁衣襯著肌膚如雪蝗拿。 梳的紋絲不亂的頭發(fā)上晾捏,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音哀托,去河邊找鬼粟瞬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的永罚。 我是一名探鬼主播淳附,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼溶诞!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辛慰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后干像,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體帅腌,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年麻汰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了速客。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡五鲫,死狀恐怖溺职,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情位喂,我是刑警寧澤浪耘,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站塑崖,受9級(jí)特大地震影響七冲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜规婆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一澜躺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聋呢,春花似錦苗踪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至器贩,卻和暖如春颅夺,著一層夾襖步出監(jiān)牢的瞬間朋截,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工吧黄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留部服,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓拗慨,卻偏偏與公主長(zhǎng)得像廓八,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赵抢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言其爵,發(fā)作 oo-boon-too 的音冒冬。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 99,367評(píng)論 9 467
  • vim是由vi發(fā)展來(lái)的一個(gè)強(qiáng)大的文本編輯器,代碼補(bǔ)完摩渺、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富简烤,在程序員中被廣泛使用...
    dxldeng閱讀 764評(píng)論 0 1
  • Vim幾句話介紹Vim是Unix系統(tǒng)上的文本編輯軟件(你該不會(huì)不知道什么是文本編輯軟件吧!)摇幻,在windows上也...
    何必遠(yuǎn)方閱讀 3,152評(píng)論 0 3
  • 有人說(shuō)每一個(gè)去西藏的人乐埠,心底都有一段不予人訴說(shuō)的故事,認(rèn)識(shí)你便是去西藏的那一年囚企,或許是那里的陽(yáng)光太過(guò)干凈丈咐,你...
    薇薇安的小調(diào)閱讀 264評(píng)論 0 0
  • 半夏防風(fēng)當(dāng)歸至,“李謝桃將”有果鮮龙宏。 一日四季眨眼過(guò)棵逊,睡醒不二都如幻。
    真如自在閱讀 153評(píng)論 7 5