一、什么是vim
vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
Linux下的文本编辑器还有Emacs、Notepad++、TextMate、Sublime Text 等等,vim编辑器是使用最广泛的一个,功能也很强大,今天我们就来介绍下vim编辑器
Vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的 Vi 编辑器的加强版,而 gVim 则是其 Windows 版。它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘流的各种巧妙组合操作却能带来极为大幅的效率提升。

因此 Vim 和现代的编辑器(如 Sublime Text)有着非常巨大的差异,而且入门学习曲线陡峭,需要记住很多按键组合和命令,如今被看作是高手、Geek们专用的编辑器。尽管 Vim 已经是古董级的软件,但还是有无数新人迎着困难去学习使用,可见其经典与受欢迎程度。另外,由于 Vim 的可配置性非常强,各种插件、语法高亮配色方案等多不胜数,无论作为代码编辑器或是文稿撰写工具都非常给力,那么学习好 Vim 的操作绝对能让你的工作轻松百倍!!因为很多时候, Linux 作为服务器是不会开启图形界面,当需要远程操作时,你只能利用 SSH“命令字符式”的 Shell 界面对其进行操作,这时如果你需要修改服务器上的网页代码或配置文件,VI 或 VIM 命令就是你最佳最方便也是最强大的伙伴了!相信我,学好 数理化 VIM,走遍天下也不怕…...
二、vim的使用
vim编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vim编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vim编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。
当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:

启 动Vim后,vim在 Normal 模式下。
让我们进入 Insert 模式,请按下键 i 。(陈皓注:你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了)
此时,你可以输入文本了,就像你用“记事本”一样。
如果你想返回 Normal 模式,请按 ESC 键。

现在,你知道如何在 Insert 和 Normal 模式下切换了。下面是一些命令,可以让你在 Normal 模式下幸存下来:

    i → Insert 模式,按 ESC 回到 Normal 模式.
    x → 删当前光标所在的一个字符。
    :wq → 存盘 + 退出 (:w 存盘, :q 退出)   (:w 后可以跟文件名)
    dd → 删除当前行,并把删除的行存到剪贴板里
    p → 粘贴剪贴板

推荐:

    hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
    :help  → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)

vim 的模式图
vim文本编辑器_第1张图片
vim的内置命令
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前文件所做的修改后退出vi;
:行号:光标跳转到指定行的行首;
:$:光标跳转到最后一行的行首;
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符;
dd:删除光标行正行内容;
ndd:删除当前行及其后n-1行;
nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
a:在当前字符后添加文本;
A:在行末添加文本;
i:在当前字符前插入文本;
I:在行首插入文本;
o:在当前行后面插入一空行;
O:在当前行前面插入一空行;
:wq:在命令模式下,执行存盘退出操作;
:w:在命令模式下,执行存盘操作;
:w!:在命令模式下,执行强制存盘操作;
:q:在命令模式下,执行退出vi操作;
:q!:在命令模式下,执行强制退出vi操作;
:e文件名:在命令模式下,打开并编辑指定名称的文件;
:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
:set number:在命令模式下,用于在最左端显示行号;
:set nonumber:在命令模式下,用于在最左端不显示行号;
我们也可以在配置文件中设置行号永久生效
全局:/etc/vimrc
个人:~/.vimrc

vim 的一些扩展命令
. → (小数点) 可以重复上一次的命令
N → 重复某个命令N次

下面是一个示例,找开一个文件你可以试试下面的命令:

    2dd → 删除2行
    3p → 粘贴文本3次
    100idesu [ESC] → 会写下 “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu “
    . → 重复上一个命令—— 100 “desu “.
    3. → 重复 3 次 “desu” (注意:不是 300,你看,VIM多聪明啊).

你要让你的光标移动更有效率,你一定要了解下面的这些命令,千万别跳过。

NG → 到第 N 行 (注意命令中的G是大写的,另我一般使用 : N 到第N行,如 :137 到第137行)
gg → 到第一行。(相当于1G,或 :1)
G → 到最后一行。
按单词移动:

        w → 到下一个单词的开头。
        e → 到下一个单词的结尾。

    > 如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(程序变量)

    > 如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(程序语句)

    % : 匹配括号移动,包括 (, {, [. (你需要把光标先移到括号上)
    * 和 #:匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

0y$ 命令意味着:

0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符

你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。

你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。

还有很多时间并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:

d (删除 )
v (可视化的选择)
gU (变大写)
gu (变小写)
等等

(可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等)
掌握这些命令,你就可以很舒服的使用vim了。
下面我给大家讲些vim的高级用法
在当前行上移动光标: 0 ^ $ f F t T , ;

    0 → 到行头
    ^ → 到本行的第一个非blank字符
    $ → 到行尾
    g_ → 到本行最后一个不是blank字符的位置。
    fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。
    t, → 到逗号前的第一个字符。逗号可以变成其它字符。
    3fa → 在当前行查找第三个出现的a。
    F 和 T → 和 f 和 t 一样,只不过是相反方向。

vim文本编辑器_第2张图片

一般模式下的查找与替换
/word:向光标之后寻找一个字符串为word的字符串,当找到第一个word后,按“n”继续搜后一个
?word:向光标之前寻找一个字符串名为word的字符串,当找到第一个word后,按“n”继续搜前一个
:n1,n2s/word1/word2/g:在n1和n2行间查找word1这个字符并替换为word2,你也可以把“/”换成“#”
:1,$s/word1/word2/g:从第一行到最末行,查找word1并替换成word2
:1,$s/word1/word2/gc:加上c的作用是,在替换前需要用户确认

vim批量添加注释
1、ctrl+v使用方向键上下选择范围;

2、shift+i进入编辑模式,添加“#”。随后按esc退出(也可理解为运行批量添加);此时批注已加好

批量删除添加的注释行.

ctrl+v使用方向键上下选择去除批注的范围,按“x”;

1.括号成对匹配
匹配:set showmatch,简写为set sm
取消:set nosm
2.自动缩进
启用:set ai
禁用:set noai
3.高亮搜索
启用:set hlsearch
禁用:set nohlsearch
4.语法高亮
启用:syntax on
禁用:syntax off
5.忽略字符的大小写
启用:set ic
禁用:set noic
6.文件格式
启用Windows格式:set fileformat=dos
启用Unix格式:set fileformat=unix
7.设置文本宽度
:set textwidth=65(vim only)
:set wrapmargin=15
这些都是临时生效 ,要想永久生效都可以写到配置文件中
全局:/etc/vimrc
个人:~/.vimrc


上面就是一些Vim的常用命令,我建议大家对这些命令多多练习,有时候学习vim就像是在死背一些东西,多练多用就能熟练掌握。