VIM 学习笔记
====VIM簡介====
我們使用的大多數編輯器,都可以直接在編輯區輸入字符,并且能夠通過一些快捷鍵來完成一些控制功能,比如使用方向鍵移動光標,使用 BackSpack 或者 Delete 鍵刪除文字,使用 PgUp 和 PgDn 翻頁,使用Home 和 End 來定位行首和行末??
而Vim是一個帶模式的編輯器,同樣的按鍵,在不同模式下,具有不同的功能定義。例如 h j k l 在 編輯模式下輸入相應的字符,在 普通模式 下卻相當于方向鍵的作用。
由于需要切換模式,Vim的使用起來略顯繁瑣。不過優點也顯而易見:您只要把手安安穩穩的放在打字區就可以了,而不需要使用諸如方向鍵、排版鍵、小鍵盤等需要挪開雙手的鍵位,從而提高了您的效率和專注程度。事實上,Vim的前身Vi誕生的時候,鍵盤上還沒有方向鍵、排版鍵和小鍵盤。
====命令====
使用Vim編輯文件:
??? vi [文件名]
??? vim [文件名] vimtutor [語言]:教學模式 vimdiff [文件1] [文件2] [其它文件]?? :使用Vim比較文件區別 ====VIM配置==== 配置文件
Vim的全局配置文件為 /etc/vim/vimrc ,用戶配置文件為 ~/.vimrc , " 起始的行為注釋行。我們提供的配置
項,您直接加入配置文件就可以了
可以先對Vim進行一些簡單的配置:
??? "設定文件編碼
??? set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
??? "開啟語法加亮
??? syntax on
??? "配色風格
??? colorscheme pablo
??? "設定行距 GUI界面中生效
??? set linespace=4
??? "設定GUI選項
??? "set guioptions=gmrLtT m:菜單 T:工具欄
??? set guioptions=gmrLt
??? "設定Tab鍵縮進的空格數
??? set tabstop=4
??? "設定編輯器將多少空格視為一個縮進
??? set shiftwidth=4
??? "將縮進轉換為空格
??? "set expandtab
??? "設定折疊方式
??? "set foldmethod=indent
??? "以下字符將被視為單詞的一部分 (ASCII):
??? "set iskeyword+=33-47,58-64,91-96,123-128 ====模式介紹==== Vim常見的模式有: 普通模式 、 插入模式(也叫編輯模式) 、 命令模式 ,另外我們也會經常用到 可視模式?
模式,您可以按下Esc鍵 ====模式切換====
????w 下一個單詞詞首 W 將特殊符號視為單詞的一部分
??? b 上一個單詞詞首 B 同上
??? e 單詞末尾 E 同上
????0 行首 ^ 行首文字(行首空格之后)
??? $ 行末
??? H 頁面頂部
??? M 頁面中部
??? L 頁面底部 在配置文件中綁定插入模式下的功能鍵: noremap! <M-j> <Down>
??? noremap! <M-k> <Up>
??? noremap! <M-h> <left>
??? noremap! <M-l> <Right>
??? ??????
??? <作用范圍> <鍵位> <功能>
? 其中,map!綁定的鍵盤映射,作用于所有模式;inoremap!綁定的映射,僅作用于插入模式 標記:您可以在當前光標處作一個標記,以便快速返回
??? m<標記名稱> 定義標記。標記名稱為一個字符
??? `<標記名稱> 返回標記 例子:
? ??? ? ??mx 將當前光標處定義為標記 x `x 返回標記 x 瀏覽
??? <Ctrl+f> 下翻一頁 <Ctrl+d> 下翻半頁
??? <Ctrl+b> 上翻一頁 <Ctrl+u> 上翻半頁
??? gg 文件首行
??? G 文件末行
??? <行號>G 按行號轉到相應行
??? <1~100>% 按百分比轉到相應的行數
??? zz 將光標所在行調整至頁面中間
??? <Ctrl+e> 下卷一行
??? <Ctrl+y> 上卷一行 編輯
????x 剪切當前字符
??? dd 剪切當前行
??? y 復制可視模式選取字符
??? yy 復制當前行
??? p 在光標后粘貼 P 在光標前粘貼
????u 撤消
??? <ctrl+r> 重做
????<Ctrl+y> 逐字克隆上一行內容
??? <Ctrl+e> 逐字克隆下一行內容 寄存器操作 Vim可以將不同字段剪切或復制到不同寄存器中,您可以從不同寄存器中取出內容后粘貼 "<寄存器名稱> 按下“"”鍵和另一個字符鍵,便可以定義一個寄存器 定義寄存器后直接進行操作
??? "ayy 將當前行復制到寄存器 a 中
??? "ap 將寄存器 a 中的內容粘貼到光標之后 在插入模式下,使用快捷鍵:<Ctrl+r><寄存器名稱> 輸入指定寄存器內容 通常情況下,寄存器 + ( " + Shift+= )對應X下的剪貼板。您在其它程序中復制的內容,可以使用?"+p?粘貼
到Vim中;您在Vim中,可以使用?"+y?將內容復制到剪貼板,再粘貼到其它程序中 搜索和替換:按下 / 鍵,編輯器底部會出現 / 符號,接著輸入字符串,便可以進行搜索 n 搜索下一個 N 搜索上一個 :s/vivian/sky/ 替換當前行第一個 vivian 為 sky :s/vivian/sky/g 替換當前行所有 vivian 為 sky :n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky :n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky (n 為數字,若 n 為 .,表示從當前行開始到最后一行) :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符 :s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/ 刪除文本中的^M 在vi中處理:首先使用vi打開文件,然后按ESC鍵,接著輸入命令:%s/^V^M//。? 或者寫一個shell程序:cat filename | tr -d"^V^M" > newfile。其中,^V和^M指的是Ctrl+V和Ctrl+M。必須要手工進行輸入 命令模式下:
我們使用的大多數編輯器,都可以直接在編輯區輸入字符,并且能夠通過一些快捷鍵來完成一些控制功能,比如使用方向鍵移動光標,使用 BackSpack 或者 Delete 鍵刪除文字,使用 PgUp 和 PgDn 翻頁,使用Home 和 End 來定位行首和行末??
而Vim是一個帶模式的編輯器,同樣的按鍵,在不同模式下,具有不同的功能定義。例如 h j k l 在 編輯模式下輸入相應的字符,在 普通模式 下卻相當于方向鍵的作用。
由于需要切換模式,Vim的使用起來略顯繁瑣。不過優點也顯而易見:您只要把手安安穩穩的放在打字區就可以了,而不需要使用諸如方向鍵、排版鍵、小鍵盤等需要挪開雙手的鍵位,從而提高了您的效率和專注程度。事實上,Vim的前身Vi誕生的時候,鍵盤上還沒有方向鍵、排版鍵和小鍵盤。
====命令====
使用Vim編輯文件:
??? vi [文件名]
??? vim [文件名] vimtutor [語言]:教學模式 vimdiff [文件1] [文件2] [其它文件]?? :使用Vim比較文件區別 ====VIM配置==== 配置文件
Vim的全局配置文件為 /etc/vim/vimrc ,用戶配置文件為 ~/.vimrc , " 起始的行為注釋行。我們提供的配置
項,您直接加入配置文件就可以了
可以先對Vim進行一些簡單的配置:
??? "設定文件編碼
??? set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
??? "開啟語法加亮
??? syntax on
??? "配色風格
??? colorscheme pablo
??? "設定行距 GUI界面中生效
??? set linespace=4
??? "設定GUI選項
??? "set guioptions=gmrLtT m:菜單 T:工具欄
??? set guioptions=gmrLt
??? "設定Tab鍵縮進的空格數
??? set tabstop=4
??? "設定編輯器將多少空格視為一個縮進
??? set shiftwidth=4
??? "將縮進轉換為空格
??? "set expandtab
??? "設定折疊方式
??? "set foldmethod=indent
??? "以下字符將被視為單詞的一部分 (ASCII):
??? "set iskeyword+=33-47,58-64,91-96,123-128 ====模式介紹==== Vim常見的模式有: 普通模式 、 插入模式(也叫編輯模式) 、 命令模式 ,另外我們也會經常用到 可視模式?
- Vim啟動時進入?普通模式?;或者在其它模式下,按下 Esc 鍵,便可以回到普通模式
- 按下 i 鍵,編輯器底部出現了 -- 插入 -- 或者 -- insert -- ,進入插入模式(編輯模式)
- 在普通模式下,按下 : 鍵(也就是 Shift+; ),在編輯器底部出現了一個 : ,您進入了命令模式在 : 后輸入一個命令 new ,回車后,編輯器被分割為上下兩欄。為了方便起見,我們在命令前加一個 : 來表示命令模式下輸入的命令
- 在普通模式下,按下v,進入可視模式,使用 h/j/k/l來移動光標,高亮選取文本
模式,您可以按下Esc鍵 ====模式切換====
- 其它模式==>普通模式:Esc
- 普通模式==>插入模式
-
- i 在光標前插入?
- I 在行首插入
- a 在光標后插入?
- A 在行末插入
- o 在當前行之下新建行?
- O 在當前行之上新建行
- r 替換當前字符?
- R 從當前字符開始替換
- ? ? 普通模式==>命令模式 :使用" : "
- ? ? 普通模式==>可視模式
-
- v 可視模式
- V 可視塊模式
- <Ctrl+v> 可視塊模式
????w 下一個單詞詞首 W 將特殊符號視為單詞的一部分
??? b 上一個單詞詞首 B 同上
??? e 單詞末尾 E 同上
????0 行首 ^ 行首文字(行首空格之后)
??? $ 行末
??? H 頁面頂部
??? M 頁面中部
??? L 頁面底部 在配置文件中綁定插入模式下的功能鍵: noremap! <M-j> <Down>
??? noremap! <M-k> <Up>
??? noremap! <M-h> <left>
??? noremap! <M-l> <Right>
??? ??????
??? <作用范圍> <鍵位> <功能>
? 其中,map!綁定的鍵盤映射,作用于所有模式;inoremap!綁定的映射,僅作用于插入模式 標記:您可以在當前光標處作一個標記,以便快速返回
??? m<標記名稱> 定義標記。標記名稱為一個字符
??? `<標記名稱> 返回標記 例子:
? ??? ? ??mx 將當前光標處定義為標記 x `x 返回標記 x 瀏覽
??? <Ctrl+f> 下翻一頁 <Ctrl+d> 下翻半頁
??? <Ctrl+b> 上翻一頁 <Ctrl+u> 上翻半頁
??? gg 文件首行
??? G 文件末行
??? <行號>G 按行號轉到相應行
??? <1~100>% 按百分比轉到相應的行數
??? zz 將光標所在行調整至頁面中間
??? <Ctrl+e> 下卷一行
??? <Ctrl+y> 上卷一行 編輯
????x 剪切當前字符
??? dd 剪切當前行
??? y 復制可視模式選取字符
??? yy 復制當前行
??? p 在光標后粘貼 P 在光標前粘貼
????u 撤消
??? <ctrl+r> 重做
????<Ctrl+y> 逐字克隆上一行內容
??? <Ctrl+e> 逐字克隆下一行內容 寄存器操作 Vim可以將不同字段剪切或復制到不同寄存器中,您可以從不同寄存器中取出內容后粘貼 "<寄存器名稱> 按下“"”鍵和另一個字符鍵,便可以定義一個寄存器 定義寄存器后直接進行操作
??? "ayy 將當前行復制到寄存器 a 中
??? "ap 將寄存器 a 中的內容粘貼到光標之后 在插入模式下,使用快捷鍵:<Ctrl+r><寄存器名稱> 輸入指定寄存器內容 通常情況下,寄存器 + ( " + Shift+= )對應X下的剪貼板。您在其它程序中復制的內容,可以使用?"+p?粘貼
到Vim中;您在Vim中,可以使用?"+y?將內容復制到剪貼板,再粘貼到其它程序中 搜索和替換:按下 / 鍵,編輯器底部會出現 / 符號,接著輸入字符串,便可以進行搜索 n 搜索下一個 N 搜索上一個 :s/vivian/sky/ 替換當前行第一個 vivian 為 sky :s/vivian/sky/g 替換當前行所有 vivian 為 sky :n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky :n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky (n 為數字,若 n 為 .,表示從當前行開始到最后一行) :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符 :s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/ 刪除文本中的^M 在vi中處理:首先使用vi打開文件,然后按ESC鍵,接著輸入命令:%s/^V^M//。? 或者寫一個shell程序:cat filename | tr -d"^V^M" > newfile。其中,^V和^M指的是Ctrl+V和Ctrl+M。必須要手工進行輸入 命令模式下:
- :w 可以將更改寫入文件
- :q 可以退出編輯器
- 在命令后面追加一個!可以用來強制執行命令,比如變修改后不想保存直接退出
- 用!引導一個shell命令,則可以從vim臨時切換到shell中,執行一個shell,比如 ?:!ls
- :new 可以新建一個窗口,相當于新建一個新文本,用:vnew則是垂直方向新建一個
- :split 可以將當前文件分為兩欄,用:vsplit則是垂直分為兩欄
- 先按下 <ctrl+w> 鍵,再按下方向鍵 j 、 k 、 l 、 h ,您可以切換到其它欄;在當前欄中使用 :q 命令,可
以退出當前欄,也可以使用其它命令,對當前欄作出修改 - 希望當前命令在所有欄中生效,您可以在命令的末尾追加 all,例如?:<命令>all
- :file filename可以用來給新生成的窗口文件命名
vim 豎向分割窗口時調整窗口大小的操作
看過的教程中,關于分割窗口的操作,一般都只說到橫向分割窗口的各種操作:
CTRL_W + 窗口邊界上移
CTRL_W - 窗口邊界下移
CTRL_W _ 將當前窗口調到最大
CTRL_W = 平分窗口
可是我多數時候傾向用vsp。這時,按鍵是不同的:
CTRL_W < 窗口邊界左移
CTRL_W > 窗口邊界右移
CTRL_W | 將當前窗口調到最大
CTRL_W = 平分窗口,這個快捷鍵是通用的。
轉載于:https://www.cnblogs.com/amghost/p/3572167.html
總結
- 上一篇: ReportViewer不连接数据库,自
- 下一篇: 一个经典实例理解继承与多态原理与优点(附