Linux--vim的使用
?
1、概述:
Vim 是從 vi 發展出來的一個文本編輯器。具有代碼補全、編譯及錯誤跳轉等功能
2、vim編輯器的常用命令:
?圖源:https://vimsky.com/article/1894.html
2.1 vim鍵盤圖:
2.2 vim的三種模式:
圖源:https://www.runoob.com/linux/linux-vim.html
3、vim的環境設置參數:
(在一般命令模式下的常用操作):
| :set nu :set nonu | 設置與取消行號顯示 |
| :set hlsearch :set nohlsearch | hlsearch就是 high light search(高亮度搜尋)。這個就是設置是否將搜尋的字串反白的設置值。默認值是 hlsearch |
| :set autoindent :set noautoindent | 是否自動縮排?autoindent就是自動縮排 |
| :set backup | 是否自動儲存備份文件?一般是 nobackup 的,如果設置 backup的話,那么當你更動任何一個文件時,則原始文件會被另存成一個文件名為filename~的文件。舉例來說,我們編輯 hosts,設置 :set backup,那么當更動 hosts時,在同目錄下,就會產生 hosts~文件名的文件,記錄原始的 hosts文件內容 |
| :set ruler | 還記得我們提到的右下角的一些狀態列說明嗎?這個 ruler就是在顯示或不顯示該設置值的 |
| :set showmode | 是否要顯示 --INSERT--之類的字眼在左下角的狀態列。 |
| :set backspace=(012) | 一般來說,如果我們按下 i進入編輯模式后,可以利用倒退鍵 (backspace) 來刪除任意字符的。但是,某些 distribution則不許如此。此時,我們就可以通過 backspace 來設置啰~ 當backspace為 2時,就是可以刪除任意值;0或 1時,僅可刪除剛剛輸入的字符,而無法刪除原本就已經存在的文字了! |
| :set all | 顯示目前所有的環境參數設置值 |
| :set? | 顯示與系統默認值不同的設置參數,一般來說就 是你有自行變動過的設置參數啦! |
| :syntax on :syntax off | 是否依據程序相關語法顯示不同顏色?舉例來說,在編輯一個純文本文件時,如果開頭是以 # 開始,那么該列就會變成藍色。如果你懂得寫程序,那么這個 :syntax on 還會主動的幫你除錯 呢!但是,如果你僅是編寫純文本,要避免顏色對你的屏幕產生的干擾,則可以取消這個設置。 |
| :set bg=dark :set bg=light | 可用以顯示不同的顏色色調,默認是“ light”。如果你常常發現注解的字體深藍色實在很不容易看,那么這里可以設置為 dark |
.vimrc的完整配置文件可參考github項目https://github.com/amix/vimrc
3.1 omnifunc設置:
注:與4.4一致
當使用vi 自動補全時 CTRL+x -> CTRL+o 報錯:omnifunc is not set
原因:vim默認情況下不啟用 Omni 補全。要打開全向補全,需要在你的.vimrc文件中加入如下語句:
| filetype plugin on | |
| set omnifunc=syntaxcomplete#Complete |
注:~/.vimrc文件中默認注釋格式是"此為注釋內容"。
4、vim中的額外功能
4.1 區塊選擇(visual block)
| #實現整個區塊的復制、選擇、移動、操作 | |
| v 字符選擇,會將光標經過的地方反白選擇! | |
| V 列選擇,會將光標經過的列反白選擇! | |
| [Ctrl]+v 區塊選擇,可以用長方形的方式選擇數據 | |
| y 將反白的地方復制起來 | |
| d 將反白的地方刪除掉 | |
| p 將剛剛復制的區塊,在光標所在處貼上! |
4.2 多文件編輯
| #同時編輯多個文件 | |
| #vim后接多個文件名 | |
| :n 編輯下一個文件 | |
| :N 編輯上一個文件 | |
| :files 列出目前這個 vim的打開的所有文件 |
4.3 多窗口功能
| #在命令行界面輸入“:sp {filename}”即可!那個filename可有可無。 | |
| #如果想要在新窗口啟動另一個文件,就加入文件名,否則僅輸入:sp時,出現的則是同一個文件在兩個窗口間! | |
| #用[ctrl]+w+↑”及“[ctrl]+w+↓”在兩個窗口之間移動 | |
| :sp [filename] | |
| #打開一個新窗口,如果有加 filename, 表示在新窗口打開一個新文件,否 | |
| #則表示兩個窗口為同一個文件內容(同步顯示)。 | |
| [ctrl]+w+j或[ctrl]+w+↓ | |
| #按鍵的按法是:先按下 [ctrl]不放,再按下 w后放開所有的按鍵,然后再 | |
| #按下 j(或向下方向鍵),則光標可移動到下方的窗口。 | |
| [ctrl]+w+k或[ctrl]+w+↑ | |
| #同上,不過光標移動到上面的窗口。 | |
| [ctrl]+w+q | |
| #其實就是 :q結束離開啦!舉例來說,如果我想要結束下方的窗口, | |
| #那么利用 [ctrl]+w+↓ 移動到下方窗口后,按下 :q 即可離開, 也可以按下 | |
| #[ctrl]+w+q啊! |
4.4 vim的挑字補全功能
| #程序語言的語法以及特定的語法關鍵字的補全 | |
| [ctrl]+x -> [ctrl]+n #通過目前正在編輯的這個“文件的內容文字”作為關鍵字,予以補齊 | |
| [ctrl]+x -> [ctrl]+f #以當前目錄內的“文件名”作為關鍵字,予以補齊 | |
| [ctrl]+x -> [ctrl]+o #以擴展名作為語法補充,以 vim內置的關鍵字,予以補齊 |
5、關于Linux中的換行問題:
參考:"\n,\r,\r\n"的區別
回車、換行的區別
在Windows中:
‘\r’ (回車):即將光標回到當前行的行首(而不會換到下一行),之后的輸出會把之前的輸出覆蓋
‘\n’ 換行,換到當前位置的下一位置,而不會回到行首;
Unix系統里,每行結尾只有“<換行>”,即"\n";
Windows系統里面,每行結尾是“<回車><換行>”,即“\r\n”;
Mac系統里,每行結尾是“<回車>”,即"\r";
也就是說:
Linux中遇到換行符("\n")會進行回車+換行的操作,回車符(“\r”)反而只會作為控制字符("^M")顯示,不發生回車的操作。
而windows中要回車符+換行符("\r\n")才會回車+換行,缺少一個控制符或者順序不對都不能正確的另起一行。
一個直接后果是:
Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;
Windows里的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
因為斷行字符以及 DOS與 Linux操作系統下面一些字符的定義不同,因此,不
建議在 Windows系統當中將文件編輯好之后,才上傳到 Linux系統,會容易發生錯誤
問題。
5.1 斷行符轉換:
解決方法:使用DOS與UNIX字符轉換命令unix2dos?和?dos2unix
類似的還有?mac2unix,?unix2mac?適用于mac系統和unix系統編碼轉換;?
字符轉換命令一般默認沒有安裝,因此使用時需要自行安裝:
查看命令
| yum -y install [需要安裝的命令*] | |
| su #使用root權限 | |
| yum -y install unix2dos* | |
| yum -y install dos2unix* | |
| #DOS編碼轉為UNIX編碼 | |
| dos2unix filename newfile | |
| #UNIX編碼轉DOS編碼 | |
| unix2dos filename newfile | |
| #選項與參數 | |
| -k :保留該文件原本的 mtime時間格式(不更新文件上次內容經過修訂的時間) | |
| -n :保留原本的舊文件,將轉換后的內容輸出到新文件,如:dos2unix -n old new | |
| #有些機器上沒有安裝dos2unix命令,也可以使用vim命令修改編碼 | |
| vim filename | |
| #vim打開文件后執行下列命令即可轉為unix編碼 | |
| :set fileformat=unix |
6、vim中的編碼問題:
需要注意如果你的文件是使用?ANSI碼編碼制作的,但在 vim的終端接口中你使用的是萬國碼(utf8),
由于編碼的不同,你的中文文件內容當然就是一堆亂碼了
1.你的 Linux系統默認支持的語系數據:這與?/etc/locale.conf有關;
2.你的終端接口(bash)的語系:這與?LANG, LC_ALL這幾個變量有關;
3.你的文件原本的編碼;
4.打開終端機的軟件,例如在?Terminal下面的窗口接口。事實上最重要的是第三與第四點,
只要這兩點的編碼一致,你就能夠正確的看到與編輯你的中文文件。否則就會看到一堆亂碼啦!
編輯?~/.vimrc文件,插入以下內容,更改編碼相關信息。
| set encoding=utf-8 | |
| set termencoding=utf-8 | |
| set fileencoding=utf-8 | |
| set fileencodings=ucs-bom,utf-8,cp936,gb18030 | |
| set imcmdline | |
| source $VIMRUNTIME/delmenu.vim | |
| source $VIMRUNTIME/menu.vim |
注:關于vim中的編碼問題:https://www.jianshu.com/p/44691357c8ee
6.1 編碼語系轉換:iconv命令
選項與參數
| -f 輸入編碼 | |
| -t 輸出編碼 | |
| -c 忽略不可轉換的字符 | |
| --unicode-subst=FORMATSTRING 替代不可轉換的 Unicode 字符 | |
| --byte-subst=FORMATSTRING 替代不可轉換的字節 | |
| --widechar-subst=FORMATSTRING 替代不可轉換的寬字符 | |
| -s 不顯示有關轉換出錯的信息 | |
| -l 列出支持的編碼 | |
| --version 顯示版本信息并退出 | |
| #使用:iconv -f ENCODING -t ENCODING INPUTFILE |
作者:相遂
?
?
總結
以上是生活随笔為你收集整理的Linux--vim的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 系统的备份恢复
- 下一篇: 交换机端口安全如何部署