VIM入門
來自:http://wsztrush.github.io/工具/2015/06/10/VIM.html
剛工作時搞過一段時間的VIM和EMACS,不過作為一個JAVA程序猿,用VIM來寫JAVA代碼還是不大現實(現在用IDEA),后面也就不了了之。最近在寫前端代碼和寫博客時感覺VIM還是不錯的,于是決定再把VIM拾起來。
裸的VIM并不是太好用,需要安裝需要的插件,之前的玩法是下載對應的壓縮包并修改配置,這個過程極其考驗耐心和人品!
使用vundle管理插件
vundle讓你不需要在糾結到哪里去找插件和配置,所有的插件都以相似的方式進行管理,很大程度上降低了使用成本!
插件存放的路徑為~/.vim/bundle/,目錄建好后下載vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
以后配置都可以在~/.vimrc里面完成:
set nocompatible " 關閉所有擴展功能 filetype off " 關閉對文件類型的自動檢測 set rtp+=~/.vim/bundle/Vundle.vim " 加入運行時路徑 call vundle#begin() " 初始化 " 插件列表開始 Plugin 'VundleVim/Vundle.vim' " 插件列表結束 call vundle#end() " 完成 filetype plugin indent on " 打開文件類型檢測
常用的插件來源配置有:
來源 | 說明 |
---|---|
github.com | github上托管的插件(Plugin ‘tpope/vim-fugitive’) |
vim-scripts.org/vim/scripts.html | 在該站維護的插件(Plugin ‘L9’) |
配置完成后打開VIM就可以開始使用了,用到下面命令:
- :PluginList:打開插件列表
- :PluginInstall:安裝插件
- :PluginSearch foo:搜索插件,找到之后可以選擇安裝
- :PluginClean:清理不用的插件(這個不是太懂)
最后舉個例子,當你想安裝winmanager插件時:
- 在.vimrc中添加Plugin 'winmanager'
- 打開vim
- 執行:PluginList就可以看到winmanager插件
- 執行:PluginInstall進行安裝
是不是比以前簡單很多了?沒有插件管理的繁瑣,下面我們正式進入VIM之旅!
基本用法
剛從EditPlus切換到VIM時非常不適應,我只想簡單地編輯文件而已,居然還要去考慮切換不同的模式:
- 命令模式
- 編輯模式
- 可視模式
時間久一點就感覺這樣區分開還是很合理的,在命令模式可以通過一些簡單的命令對文本進行快速的查看、修改,比用鼠標在EditPlus里面操作會更有效率。該模式用到的命令非常多,下面分類來看!
一、移動光標
可以在各個維度上進行隨意地跳轉:
命令 | 作用 |
---|---|
h/j/k/l | 向上/向下/向上/向右移動 |
ctrl+f/b | 向上/向下翻頁 |
ctrl+d/u | 向上/向下翻半頁 |
$/0/^ | 行尾/行首/首字符 |
(/) | 上一句/下一句 |
w/b | 上一個詞/下一個詞 |
gg/G | 文檔開始/文檔結束 |
% | 括號對應的匹配處 |
ngg/nG/:n | 到第n行 |
H/M/L | 屏幕頂部/中間/底部 |
*/# | 當前字符下一次/上一次出現的位置 |
二、查找替換
命令 | 作用 |
---|---|
:s/s1/s2 | 下一個s1替換為s2 |
:%s/s1/s2 | s1全部替換為s2 |
:s/s1/s2/g | 當前行的s1替換為s2 |
:n1,n2 s/s1/s2/g | 從n1到n2行的s1替換為s2 |
/xxxx | 查找xxxx,找到以后按n向下繼續查找、N則向上繼續查找 |
mx | 插入書簽(x為小寫字母),以后可以用`x跳轉到該書簽處 |
`. | 上次編輯的位置 |
三、復制、剪切、粘貼、刪除
在VIM中存在一些寄存器用來存放復制、刪除的內容:
- ":最近刪除或復制的內容
- 0:最近復制的內容
- 1、2、、9:最近一次的刪除內容放入1,原先1的內容放入2,以此類推
- %:文件名
- ::命令
- /:查找的字符串
編輯時可以用:reg來查看各寄存器中的內容!為了方便選取文本VIM中引入了可視模式,使用時先移動光標到開始位置,然后用下面命令進入可視模式:
- ctrl+v:塊
- v:普通
- V:行
接著移動光標就可以選中文本并進行操作了!編輯時常用的命令有:
命令 | 作用 |
---|---|
y | 復制選中文本,用"ny來復制到第n號寄存器 |
x | 剪切選中文本或者刪除當前字符 |
d | 刪除選中文本 |
p | 粘貼,用"np來粘貼第n號寄存器中的內容 |
dd | 刪除當前行 |
dw | 刪除光標后的一個詞 |
dl | 刪除一個字符 |
D/C | 刪除到行尾 |
yy/Y | 復制一行 |
過程中可以使用u和ctrl+r來進行undo和redo。
四、宏
在造數據的時候常會遇到一些簡單、機械的操作,這種一般是可以用宏來搞定:
- px:開始記錄宏操作,x為小寫字母
- 操作
- q:將操作記錄到寄存器中
- @x:執行寄存器x中的操作
- @@:執行最近一次的錄制
同樣可以用:reg來查看寄存器狀態。
五、編輯
需要輸入時通過下面命令進入插入模式:
命令 | 說明 |
---|---|
i/a | 光標前/后插入 |
I/A | 在行首/尾插入 |
o/O | 后/前插入一行進行編輯 |
s/S | 刪除一個字符/一行進行編輯 |
R | 替換模式,在畫圖的時候非常好用 |
多屏操作
寫代碼的時候通過搞幾個文件是常有的事,分幾個屏幕來做非常舒服,開啟分屏方式有:
- vim -On file1 file2 ...:垂直分屏打開多個文件
- vim -on file1 file2 ...:水平分屏打開多個文件
- ctrl+w s:上下分割當前文件
- ctrl+w v:水平分割當前文件
- :sp filename:上下分割打開新文件
- :vsp filename:水平分割打開新文件
需要切換工作屏幕時可以使用命令ctrl+w h/j/k/l/w,其中h/j/k/l是按照方向移動,w是移動到下一個屏幕!當你覺得屏幕的順序有點不爽時可以使用ctrl+w H/J/K/L來移動分屏。另外也可以調整屏幕大小:
- ctrl+w =:所有屏幕都一樣的高度
- ctrl+w -:降低高度
- ctrl+w +:增加高度
在編輯的時候可以在分屏中瀏覽目錄:
- :He:上下分屏,在下面(:He!則在上面)瀏覽目錄
- :Ve:左右分屏,在左面(:Ve!則在右面)瀏覽目錄
還可以使用:E在當前的屏幕中打開目錄進行瀏覽,可以通過一些命令進行操作:
- -:到上級目錄
- s:對文件排序
- x:執行文件
- R:修改文件名稱
- D:刪除文件
- 回車:進入子目錄
邊看編寫的時候需要在多個屏幕上同步滾動,使用:set scb和:set scb來綁定和解綁(這個功能還是非常好用的)!最后,編輯完成就可以用ctrl+w c或ctrl+w q(如果是最后一個屏幕則退出VIM)來關閉分屏!
總結
掌握了這些,簡單的文本編輯應該問題不大了,后面會陸續針對更細節的東西來單獨寫。