Vim编辑器入门
vim编辑器较vi的显著优势:vim可以用颜色或底线等方式来显示一些特殊的信息。
Vim有三种工作模式:
-
一般模式:以vim打开一个文件默认进入一般模式(若指定文件不存在,vim会开辟一段新的缓冲区域来编辑),可进行光标移动。复制、粘贴、删除、等功能。
一般模式中常用的一些命令(注意区分命令的大小写)
命令 |
作用 |
X |
向前删除一个字符(相当于退格Back键) |
x |
向后(光标所在处)删除一个字符(相当于Delete键) |
dd |
删除(剪切)光标所在整行(delete删除) |
5dd |
删除(剪切)从光标处开始的5行 |
yy |
复制光标所在整行(yank onto猛拉到) |
5yy |
复制从光标处开始的5行 |
p(小写) |
将之前剪切(dd)或复制(yy)过的数据粘贴到光标后(paste粘贴) |
P(大写) |
将之前剪切(dd)或复制(yy)过的数据粘贴到光标前 |
/word |
向下搜索"word"字符串 |
?word |
向上搜索"word"字符串 |
n |
显示搜索命令定位到的下一个字符串(next下一个) |
N |
显示搜索命令定位到的上一个字符串 |
u |
撤销上一步的操作,可多次使用(如uu表示撤销两步操作)(undo撤销) |
ctrl+r |
复原/反撤销(redo恢复) |
5→ |
向右移动5个字符(↑、↓。←、→均可操作) |
G |
移动到文件最后一行(goto转到) |
5G |
移动到文件的第5行 |
gg |
移动到文件的第一行(相当于1G) |
dG |
删除光标所在行到最后一行的所有数据(复制:yG) |
d1G |
删除光标所在行到第一行的所数据(复制:y1G) |
d$ |
删除光标所在处到该行尾("删右")的所有数据(复制:y$) |
d0 |
删除光标所在处到该行首("删左")的所有数据(复制:y0) |
ZZ |
保存并退出(若文件内容未发生修改,mtime不变) |
-
输入模式:从一般模式切换到输入模式可通过a、i、o等键(退出输入模式,返回一般模式:Esc键)
命令 |
作用 |
i |
在光标所在处(向后)输入(insert插入) |
I |
在当前行的行首处输入 |
a |
在光标下一个字符处输入(append追加) |
A |
在当前行的行尾处输入 |
o |
在当前行的下一行插入新的一行并输入(open new line开启新一行) |
O |
在当前行的上一行插入新的一行并输入 |
ctrl+n |
补全已出现过的单词 |
[ctrl+x]+[ctrl+f] |
补全当前目录下的文件名 |
-
命令(末行)模式:可通过:冒号从一般模式切换到命令(末行)模式(退出命令模式,返回一般模式:Esc键)
命令(末行)模式中常用的命令
命令 |
作用 |
:q |
退出(quit) |
:q! |
强制退出(放弃对文档的修改内容) |
:w |
保存(write file写入文件) |
:w! |
强制保存(若文件属性为"只读",强制写入该文件) |
:wq |
保存并退出(文件的修改时间mtime一定会变化) |
:wq! |
强制保存退出 |
:x |
保存并退出(若文件内容未发生修改,mtime不变) |
:w a.txt |
另存为a.txt文件 |
:n1,n2 w b.txt |
将第n1行到n2行的内容另存为b.txt文件 |
:r c.txt |
在当前行的下一行追加读入c.txt(read读取) |
:整数 |
跳转到该行 |
:s/one/two |
将当前光标所在行的第一个one替换成two(substitute替换) |
:s/one/two/g |
将当前光标所在行的所有one替换成two(global全局的) |
:%s/one/two/gc |
将全文中的所有one替换成two,并提示是否确认替换(confirm确认) |
:n1,n2s/one/two/g |
将第n1行到n2行(包括第n1、n2行)的所有one替换为two |
:命令 |
执行该命令 |
:!命令 |
暂时离开Vim跳转去执行命令,执行命令完成后按Enter建可返回Vim编辑器 |
:set nu |
显示行号(下一次重新打开后会不存在)(number编号) |
:set nonu |
不显示行号 |
:nohlsearch |
消除当次搜索后的关键字的高亮 |
:set hlsearch |
(默认)将查找到的关键字高亮显示(high light search高亮度查找) |
:set nohlsearch |
取消将查找到的关键字高亮的效果 |
:syntax on |
根据程序相关语法显示不同的颜色(syntax语法) |
:syntax off |
取消语法颜色显示 |
:set ignorecase |
忽略大小写 |
:set autoindent |
自动缩排 |
:set noautoindent |
取消自动缩排 |
在一般模式下误触q键,会进入"录制"宏模式,此时可再按q键退出切换回一般模式
来自 <http://www.netingcn.com/vim-recording-function.html>
搜索字符串的时候在底部出现"Search it Bottom, Continuing at Top" 或 "Search hit Top, Continuing at Bottom" (正则模式)
- Search it Bottom, Continuing at Top:当按"n"键进行向下重复搜索,并且已经搜索到文件的末尾,如果继续按"n"键,则从文件头继续搜索。
- Search hit Top, Continuing at Bottom:正好相反,按"N"键向上重复搜索,到达文件头继续从文件尾开始继续搜索。
来自 <https://www.cnblogs.com/orientsun/archive/2012/11/19/2778021.html>
在使用vim打开编辑文件时,vim会主动创建一个暂存文件,防止操作数据丢失。
通过ctrl+z将vim进程放置后台挂起后,再重新使用vim编辑此文件
Open read-only:以只读方式打开此文件(不能编辑)
Edit anyway:以正常的方式编辑此文件,不载入暂存文件的内容(容易出现两个用户互相改变对方的文件内容等问题)
Recover:加载暂存文件的内容(恢复之前未保存的工作)
Quit:退出vim,不进行任何操作回到命令提示符
Abort:终止忽略这个编辑行为,类似于quit返回命令提示符
Visual可视模式:可通过v或V从一般模式切换到可视模式(退出可视模式,返回一般模式:Esc键)
命令 |
作用 |
v |
字符选择(visual),会将光标经过的地方反白选择 |
V |
行选择(visual line),会将光标经过的行反白选择 |
ctrl+v |
块选择(visual block),用长方形块的方式选择数据 |
y |
复制反白的选择 |
d |
删除(剪切)反白的选择 |
p |
将之前剪切(dd)或复制(yy)过的数据粘贴到光标后 |
多窗口编辑
命令 |
作用 |
:split 2.txt |
(水平)分割窗口打开2.txt新文件(若不加文件名,表示两个窗口均为当前文件的内容)(split拆分) |
[ctrl+w]+↑/↓/←/→ |
切换到上/上/左/右方的窗口(先按组合键ctrl+w,松开后再按方向键) |
:vsplit |
垂直分割窗口(vertical垂直的) |
:q |
退出当前窗口(须先切换到对应窗口) |
修改vim的操作环境 :修改~/.vimrc(默认不存在,须手动创建)文件,将设置值写入
Vim显示中文乱码问题
修改~/.vimrc文件,添加语句:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936(自动识别UTF-8或GBK编码的文件)
来自 <http://blog.csdn.net/jnbbwyth/article/details/6991425/>
Vim编辑器设置制表tab键为4个空格(Linux下tab键默认为8个空格长度,windows下默认为4个空格长度)
修改/etc/vimrc,添加语句:
set ts=4
来自 <http://bbs.csdn.net/topics/220068519>
参考资料:
vim中文手册:<http://vimcdoc.sourceforge.net/doc/help.html>
vim命令英语解析:<http://glaciated.org/vi/>
超级齐全的vim命令备忘录(英语全称解析):<http://www.fprintf.net/vimCheatSheet.html>