一. vim簡介
vim 是linux系統自帶的文本編輯器。
vim 共有三種模式:
命令模式:用vim打開文件就進入了命令模式;輸入模式:在命令模式輸入i/I/a/A/o/O就進入輸入模式;
在輸入模式下按鍵esc,則退出輸入模式進入命令模式底線模式:在命令模式按下英文冒號:就進入了底線模式;
二. vim命令使用總結
2.1 光標移動
(1)光標上下左右移動(鍵盤的上下左右四個鍵):
向上、向下同理。
(2)行首、行尾:
(3)移動到具體的某一行
(4)移動到單詞
2.2 查找
在命令模式下輸入以下命令進行查找,光標會跳轉到第一個匹配的字符,此時按下n 代表重複前一個搜索動作;按下N代表反向重複前一個搜索動作 。
2.2.1 Vim查找支持正則表達式
例如/vim$匹配行尾的"vim"。需要查找特殊字符需要轉義,例如/vim\$匹配"vim$"。
注意:查找回車應當用\n,而替換為回車應當用\r(相當於<CR>)。
2.2.2 vim查找默認是大小寫敏感查找
在查找模式中加入\c表示大小寫不敏感查找,\C表示大小寫敏感查找
例如:/foo\c 會查找所有foo、FOO、fOOD等
2.2.3 查找光標所在單詞
在命令模式下按下:
*:匹配當前光標所在的單詞(這裡的單詞是指前後為空白字符或者點號,例如當前為foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。這在查找函數名、變量名時非常有用),並將光標移動到下一個單詞
#:匹配當前光標所在的單詞,並將光標移動到上一個單詞
g*:查找光標所在單詞的字符序列,每次出現前後字符無要求,例如當前為foo,那麼foo bar和foobar中的foo均可被匹配到。
2.3 替換
替換的語法如下::{作用範圍}s/{目標}/{替換}/{替換標誌}
% :代表在全文範圍內查找並替換
g:所有的出現都會被替換
i:i表示大小寫不敏感
I:I表示大小寫敏感
2.4 刪除
2.5 複製粘貼
2.6 縱向編輯
塊操作也叫縱向編輯模式。
縱向編輯不僅是編輯器的一種功能,更是人們思考問題的一種方式,項目符號、段落編號,都是縱向編輯的體現
2.6.1 進入縱向編輯模式
在 Vim 命令模式下,移動遊標定位於某一個位置,鍵入 ctrl-v後狀態欄上出現 VISUAL BLOCK 字樣,即進入縱向編輯模式。移動光標以按需選擇待編輯的區域。
2.6.2 批量修改
第一步:將光標定位於想要修改的字符
第二步:ctrl-v 進入縱向編輯模式
第三步:移動光標選中需要修改的修改的區域 (鍵入G:移動光標至最後一行;鍵入gg:移動光標至第一行)
第四步:鍵入r進入修改模式
第五步:鍵入想改成為的字母(貌似只支持英文,中文不支持)的同時完成修改
說明:這種方式只支持單字符的修改的修改,如果一次選中多個字符比如「12」,想要修改為「ab」,按下a的時候「12」已經改為「aa」了。
2.6.3 批量插入
第一步:將光標定位於想要修改的字符
第二步:ctrl-v 進入縱向編輯模式
第三步:移動光標選中需要修改的修改的區域 (鍵入G:移動光標至最後一行;鍵入gg:移動光標至第一行)
第四步:鍵入I或者A進入插入模式(I:在光標之前插入;A:在光標之後插入)
第五步:鍵入想插入的字符串
第六步:ESC 退出縱向編輯模式的同時所有選中的字符後都添加了想要插入的內容
2.6.4 批量刪除
第一步:將光標定位於想要修改的字符
第二步:ctrl-v 進入縱向編輯模式
第三步:移動光標選中需要修改的修改的區域 (鍵入G:移動光標至最後一行;鍵入gg:移動光標至第一行)
第四步:鍵入d的同時完成選中內容的刪除
2.6.5 vim插件VisIncr
Vim 的縱向編輯模式還可以通過插件 VisIncr 的擴展,實現更豐富的功能,如縱向的生成數列,這裡暫未探究。
2.7 其他命令
2.8 vim 打開文件後顯示亂碼
Vim 有四個跟字符編碼方式有關的選項,encoding、fileencoding、fileencodings、termencoding ,它們的意義如下:
encoding—— Vim 內部使用的字符編碼方式,包括 Vim 的 buffer (緩衝區)、菜單文本、消息文本等。如你的vim的encoding為utf-8,所編輯的文件採用cp936編碼,vim會自動將讀入的文件轉成utf-8(vim的能 讀懂的方式),而當你寫入文件時,又會自動轉回成cp936(文件的保存編碼)。
fileencoding —— Vim 中當前編輯的文件的字符編碼方式,Vim 保存文件時也會將文件保存為這種字符編碼方式 (不管是否新文件都如此)。
fileencodings —— Vim自動探測fileencoding的順序列表, 啟動時會按照它所列出的字符編碼方式 從前到後,逐一探測 即將打開的文件的字符編碼方式。因此最好將Unicode 編碼方式放到這個列表的最前面,如果都找不到,那麼就會以 latin1 (ASCII)的方式打開。
termencoding—— Vim 所工作的終端 (或者 Windows 的 Console 窗口) 的字符編碼方式。如果vim所在的term與vim編碼相同,則無需設置。如其不然,你可以用vim的termencoding選項將自動轉換成 term的編碼.這個選項在 Windows 下對我們常用的 GUI 模式的 gVim 無效,而對 Console 模式的Vim 而言就是 Windows 控制臺的代碼頁,通常我們不需要改變它。
註:Vim 在線幫助 :help encoding-names
2.9 windows與linux系統互傳文件問題分析解決
2.9.1 vim打開文件後出現^M的解決方法
在linux下,不可避免的會用VIM打開一些windows下編輯過的文本文件。我們會發現文件的每行結尾都會有一個^M符號,這是因為 windows編輯器和 Linux編輯器對文件行末的回車符處理不一致,對於回車符的定義:
windows:0D0Aunix\linux:0AMAC:0D解決方法:
2.9.2 windows文件上傳到linux之後無法解析
(1)unix2dos filename
將unix中文件轉換為windows可查看的格式(主要是非可見字符)
(2)dos2unix filename
將windows中的文件轉換為unix可查看的格式 (主要是非可見字符)