linux学习整理之vim编辑器的使用

vim编辑器

感谢鸟哥


索引说明
基础一般模式,切换,指令
vim高级特性多文件编辑,多视窗编辑,区块选择,文件恢复
vim配置文件 
中文编码乱码分析解决
dos与linux换行符问题,及转换dos2unix,unix2dos
字符编码文件转换iconv

概念:一般模式,编辑模式,指令模式

基本的vi功能

一般模式下:

光标移动类:
h,j,k,l移动光标向左,下,上,右例如向下移動 30 行,可以使用 "30j" 
也可以使用方向键来进行移动(可以加上数字移动5h移动5个字符)
翻页:ctrl+f(forward),ctrl+b(behind)
HOME或0/END或$移动到行首、尾
H,M,L分别表示光标移动到屏幕上嘴上,最中,最下的一行
G移动到这个文件的最后一行
nG移动到第n行 gg移动到第一行
n<Enter>游标向下移动n行
查找类:
/ 向下查找; ?向上查找
n,N分别表示向下,上重复前一个查找或替换动作
:n1,n2s/word1/word2/g在第n1至n2行搜寻字符串word1并用word2取代它
:1,$s/word1/word2/g在第一行至最后一行搜寻字符串word1并用word2取代它
:1,$s/word1/word2/gc相对于上面的,这个会在替换前进行询问。
复制,粘贴,删除:
x,X分别表示向后,向前删除一个字符
nx,向后删除n个字符
dd删除一行
ndd删除光标向下的n行,
d1G删除光标所在行至第一行的所有行 dG则刪除游標所在到最後一行的所有資料
d0删除到行首 d$删除到行末
yy 複製游標所在的那一行
nyy ,y1G,yG,y0,y$
p, P 粘贴到下一行、上一行
J 合并当前行与下一行
u undo ctrl+r redo
. 小数点,即重复前一个动作

一般模式切换到编辑模式:
i,I; i光标处插入,I行首插入
a,光标处追加,A行末插入
o,O;o,向下插入一行,O向上插入一行
r,R:取代模式(Replace mode):r 只會取代游標所在的那一個字元一次;R會一直取代游標所在的文字,直到按下 ESC 為止;

指令模式:
:w ,:w!; :q,:q! , :wq
:w [filename]另存为
:r [filename]将另一个文件的内容加入到当前文件
:n1,n2 w [filename] 將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command 暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如
『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案資訊!
:set nu 显示行号; :set nonu取消显示行号
在 vi 中,『數字』是很有意義的!數字通常代表重複做幾次的意思! 
ZZ 這是大寫的 Z 喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開!

vim特有的高级功能

1.vim临时文件的恢复功能: vim 會在與被編輯的檔案的目錄下,再建立一個名為 .filename.swp 的檔案。 如果你的系統因為某些原因斷線了, 導致你編輯的檔案還沒有儲存,這個時候 .man.config.swp 就能夠發會救援的功能了!记住在恢复之后记得手动删除这个swap文件,否则你本次的编辑就会失效,下次任然会出现这个警告。

2. vim高级特性之区块选择
區塊選擇的按鍵意義
v 字元選擇,會將游標經過的地方反白選擇!
V 行選擇,會將游標經過的行反白選擇!
[Ctrl]+v 區塊選擇,可以用長方形的方式選擇資料
y 將反白的地方複製起來
d 將反白的地方刪除掉

3. vim高级特性之多档案编辑:
:n 編輯下一個檔案
:N 編輯上一個檔案
:files 列出目前這個 vim 的開啟的所有檔案
举例: vim hosts /etc/hosts打开两个文件

4.vim高级特性之多视窗编辑
:sp [filename]打开一个新窗口,可以不输入文件名
ctrl+W+k/j(或者方向键上下)切换到上、下一个视窗。
ctrl+w+q(或者:q)离开关闭视窗

vim配置文件:

/etc/vimrc,~/.vimrc或者~/.viminfo
配置文件一些参数:
:set all 顯示目前所有的環境參數設定值。
:set nu 
:set nonu 就是設定與取消行號啊!
:set hlsearch
:set nohlsearch hlsearch 就是 high light search(高亮度搜尋)。 這個就是設定是否將搜尋的字串反白的設定值。預設值是 hlsearch
:set autoindent
:set noautoindent 是否自動縮排?autoindent 就是自動縮排。
:set backup 是否自動儲存備份檔?一般是 nobackup 的, 如果設定 backup 的話,那麼當你更動任何一個檔案時,則原始檔案會被另存成一個檔名為 filename~ 的檔案。
:set backspace=(012) 一般來說, 如果我們按下 i 進入編輯模式後,可以利用倒退鍵 (backspace) 來刪除任意字元的。 但是,某些 distribution 則不許如此。此時,我們就可以透過 backspace 來設定囉~ 當 backspace 為 2 時,就是可以刪除任意值;0 或 1 時,僅可刪除剛剛輸入的字元, 而無法刪除原本就已經存在的文字了!

:set 顯示與系統預設值不同的設定參數,
:syntax on
:syntax off 是否依據程式相關語法顯示不同顏色?
:set bg=dark
:set bg=light 可用以顯示不同的顏色色調,預設是『 light 』

vim ~/.vimrc
"這個檔案的雙引號 (") 是註解
set hlsearch            "高亮度反白
set backspace=2         "可隨時用倒退鍵刪除
set autoindent          "自動縮排
set ruler               "可顯示最後一行的狀態
set showmode            "左下角那一行的狀態
set nu                  "可以在每一行的最前面顯示行號啦!
set bg=dark             "顯示不同的底色色調
syntax on               "進行語法檢驗,顏色顯示。

关于中文编码的问题:

中文编码有以下几个方面:
1.系统编码:/etc/sysconfig/i18n
2.终端的语系:LANG
3.开启终端的软件的语系
4.文档的语系

主要是下面两点有影响。
比如我的是使用xShell链接远程ubuntu主机。
ubuntu系统的语系设定不是在上面说的那里。ubuntu系统语系在/var/lib/locales/supported.d/local文件中。语系的支持说明在/usr/share/i18n/SUPPORTED文件中
如果我们需要添加语系,可以编辑这个文件添加:zh_CN.UTF-8 UTF-8
也可以这样:
# locale-gen zh_CN.UTF-8 ; locale-gen zh_CN 
# cat /var/lib/locales/supported.d/local是不是多了语系了。
然后使之生效:# locale-gen
之后就是关于环境变量LANG的设定,我们可以采取设置/etc/environment
vi /etc/environment
加入LANG="zh_CN.UTF-8"
保存.使之生效: source /etc/environment
然后就是设定我们打开终端软件的编码。
由于我是采用使用xShell在windows下连接远程linux主机,所以此时我的显示仍然乱码,我需要将xShell中关于终端字符编码的设定为UTF-8即可。
现在就正常了。

dos与linux的换行指令问题dos2unix,unix2dos。

我们可以将他们进行相互转换。:
dos2unix [-kn] file [newfile]
[root@www ~]# unix2dos [-kn] file [newfile]
選項與參數:
-k  :保留該檔案原本的 mtime 時間格式 (不更新檔案上次內容經過修訂的時間)
-n  :保留原本的舊檔,將轉換後的內容輸出到新檔案,如: dos2unix -n old new

语系编码的转换iconv:

iconv -f 原本編碼 -t 新編碼 filename [-o newfile]
iconv -f big5 -t utf8 vi.big5 -o vi.utf8
不過如果是要將正體中文的 utf8 轉成簡體中文的 utf8 編碼時,那就得費些功夫了!
iconv -f utf8 -t big5 vi.utf8 | \
> iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8

你也可以参考我的博客小站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值