Vi學習

趁著臺風,在家學習學習vi

vim的配置

  1. .vimrc文件是vim的配置文件,位于~/.vimrc, vim的字體 快捷鍵 插件 均可通過配置文件配置
    前綴鍵;各類 vim 插件幫助文檔中經常出現 <leader>,即,前綴鍵。vim 自帶有很多快捷鍵,再加上各類插件的快捷鍵,大量快捷鍵出現在單層空間中難免引起沖突,為緩解該問題,引入了前綴鍵 <leader> , 默認的前綴鍵是\
  " 定義快捷鍵的前綴,即<Leader>
  let mapleader=";"
  1. 插件管理
    .vim/ 目錄是存放所有插件的地方。vim 有一套自己的腳本語言 vimscript,通過這種腳本語言可以實現與 vim 交互,達到功能擴展的目的。一組 vimscript 就是一個 vim 插件,vim 的很多功能都由各式插件實現。
    vim 插件目前分為 *.vim 和 *.vba 兩類,前者是傳統格式的插件,實際上就是一個文本文件,通常 someplugin.vim(插件腳本)與 someplugin.txt(插件幫助文件)并存在一個打包文件中,解包后將 someplugin.vim 拷貝到 ~/.vim/plugin/ 目錄,someplugin.txt 拷貝到 ~/.vim/doc/ 目錄即可完成安裝,重啟 vim 后剛安裝的插件就已經生效,但幫助文件需執行 :helptags ~/.vim/doc/ 才能生效,可通過 :h someplugin 查看插件幫助信息。傳統格式插件需要解包和兩次拷貝才能完成安裝,相對較繁瑣,所以后來又出現了 *.vba 格式插件,安裝便捷,只需在 shell 中依次執行如下命令即可
vim someplugin.vba
:so %
:q

不論是直接拷貝插件到目錄,還是通過 *.vba 安裝,都不便于插件卸載、升級,后來又出現了管理插件的插件 vundle。

我希望每個插件在 .vim/ 下都有各自獨立子目錄,這樣需要升級、卸載插件時,直接找到對應插件目錄變更即可;另外,我希望所有插件清單能在某個配置文件中集中羅列,通過某種機制實現批量自動安裝/更新/升級所有插件。vundle(https://github.com/VundleVim/Vundle.vim )為此而生,它讓管理插件變得更清晰、智能。
vundle 會接管 .vim/ 下的所有原生目錄,所以先清空該目錄,再通過如下命令安裝 vundle

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

接下來在 .vimrc 增加相關配置信息

" vundle 環境設置
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
" vundle 管理的插件列表必須位于 vundle#begin() 和 vundle#end() 之間
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'altercation/vim-colors-solarized'
" 插件列表結束
call vundle#end()
filetype plugin indent on

其中,每項
Plugin 'altercation/vim-colors-solarized'
對應一個插件,后續若有新增插件,只需追加至該列表中即可;
需要安裝插件,先找到其在 github.com 的地址,再將配置信息其加入 .vimrc 中的call vundle#begin() 和 call vundle#end() 之間,最后進入 vim 執行
:PluginInstall
便可通知 vundle 自動安裝該插件及其幫助文檔。

要卸載插件,先在 .vimrc 中注釋或者刪除對應插件配置信息,然后在 vim 中執行
:PluginClean

即可刪除對應插件。插件更新頻率較高,差不多每隔一個月你應該看看哪些插件有推出新版本,批量更新,只需執行
:PluginUpdate

Vim操作

移動

  • hjkl
  • gg 文件第一行
  • G 文件最后一行
  • 123+G 跳轉到指定行 ( 4% 數字+% 按百分比跳轉 )
  • H/M/L 跳轉到當前屏幕的 頂部/中間/底部
  • ^ 移動到行首第一個非空白, 0 移動到行首
  • $ 移動到行尾 (^ $ 和正則一樣)
  • % 移動到當前代碼區塊的開始/結尾(匹配(),[],{})
  • ctrl + g 查看當前文件總行數
按單詞移動
  • w / b 下一個/上一個 單詞詞首
  • W / B 下一個/上一個 字符串頭
  • e / ge 下一個/下一個 單詞詞尾
  • E / gE 下一個/上一個 字符串尾部

上面這些命令都使用’iskeyword‘選項中的字符來確定單詞的分界,還有幾個命令,只把空白字符當做”單詞“的分界。當然,這里說的”單詞“已經不是傳統意義上的單詞了,而是由非空白字符構成一串字串

查找

  • /xxx 查找光標后的單詞 xxx
  • ?xxx 查找光標前的單詞 xxx
  • n / N 移動到下一個/上一個 匹配
  • ftext 在當前行向前查找text
  • Ftext 在當前行向后查找text
  • :g/text/command 在所有包含text的行運行command所表示的命令
  • :v/text/command 在所有不包含text的行運行command所表示的命令

vim保存了查找歷史, 在輸入 / 或 ? 后, 可以通過 <C-p> 和 <C-n> 或者上下光標鍵, 翻看歷史記錄, 再次查找

另外你還可以使用 q/ 和 q? 命令,在vim窗口最下面打開一個新的窗口,這個窗口會列出你的查找歷史記錄,你可以使用任何vim編輯命令對此窗口的內容進行編輯,然后再按回車,就會對光標所在的行的內容進行查找。

vim中有許多與查找相關的選項設置,其中最常用的是incsearch(輸入內容時, 即對輸入的內容開始匹配) ,hlsearch(高亮), ignorecase(忽略大小寫)。

替換 ( :s 命令)

:[range]s/from/to/[flags]

range:范圍,如果沒有指定范圍,則作用于但前行。

  • :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之間搜索替換;
  • :10s/from/to/ 表示只在第10行搜索替換;
  • :%s/from/to/ 表示在所有行中搜索替換;
  • 1,$s/from/to/ 同上。

flags 有如下四個選項

  • c confirm,每次替換前詢問;
  • e error, 不顯示錯誤;
  • g globle,不詢問,全部替換。如果不加 g 選項,則只替換每行的第一個匹配到的字符串;
  • i ignore,忽略大小寫。

這些選項可以合并使用,如 cgi 表示不區分大小寫,全部替換,替換前詢問。

  • & 重復執行最后的 :s (替換)命令

執行Shell命令

:!ls -al

撤銷

  • u 撤銷上一次操作
  • Ctrl+r 恢復上一步被撤銷的操作

刪除

  • x 刪除當前字符
  • X 刪除光標前的字符, 前面可以加數字
  • dw 刪除一個詞
  • dd 刪除當前行

復制, 粘貼, 剪切

選中文字
  • v+光標移動 (按字符選擇)高亮選中所要的文本,然后進行各種操作(比如,d表示刪除)。
  • V (按行選擇)
  • v+選中的內容+c 更改選中的文字
復制 :y(ank)
  • y 用v命令選中文本后,用y進行復制
  • yy 復制當前行, 等同于(Y)
  • y0 復制當前位置到行首
  • y$ 復制當前位置到行末
粘貼
  • p 在光標位置之后粘貼
  • P 在光標位置之前粘貼
剪切
  • v + 選中的內容 + d 剪切

剪切板

  1. 簡單的復制粘貼
    vim提供12個剪貼板,它們的名字分別為vim有11個粘貼板,分別0,1, 2 ... 9, a, "; 如果開啟了系統剪貼板,則會另外多出兩個 + 和 *。使用 :reg 命令,可以查看各個粘貼板里的內容。
    :reg
    在vim中簡單用y只是復制到 " (雙引號)粘貼板里,同樣用p粘貼的也是這個粘貼板里的內容。

  2. 復制和粘貼到指定剪貼板
    要將vim的內容復制到某個粘貼板,需要退出編輯模式,進入正常模式后,選擇要復制的內容,然后按 "Ny 完成復制,其中N為粘貼板號(注意是按一下雙引號然后按粘貼板號最后按y),例如要把內容復制到粘貼板a,選中內容后按 "ay 就可以了。
    要將vim某個粘貼板里的內容粘貼進來,需要退出編輯模式,在正常模式按 "Np ,其中N為粘貼板號。比如,可以按 "5p 將5號粘貼板里的內容粘貼進來,也可以按 "+p 將系統全局粘貼板里的內容粘貼進來。

  3. 系統剪切板
    Vim支持系統剪貼板,需要打開clipboard功能。使用下面的命令,檢查當前版本的Vim,是否支持clipboard。
    $ vim --version
    如果不支持的話,需要安裝圖形化界面的vim(即gvim),或者重新編譯vim。
    $ sudo apt-get install vim-gnome
    另一種方法,是安裝vim-gui-common。
    $ sudo apt-get install vim-gui-common

縮進文本

選項 作用
^i(ctrl+i)或tab 插入文本時,插入移動的寬度,移動寬度是事先定義好的
:set ai 打開自動縮進
:set sw=n 將移動寬度設置為n個字符
n<< 使n行都向左移動一個寬度
n>> 使n行都向右移動一個寬度,例如 3>> 就將接下來的三行每行都向右移動一個移動寬度

多窗口

參考:
[https://github.com/yangyangwithgnu/use_vim_as_ide#0.1]
[http://easwy.com/blog/archives/advanced-vim-skills-basic-move-method/]
[https://github.com/ruanyf/articles/blob/master/dev/vim/operation.md]
[http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容