Vim基本使用方法

为什么要学习Vim,Vim和Vi的区别,Vim的基本使用方法(部分)

为什么很多大型网站都采用Linux作为服务器


1. 为什么要学习Vim,是为了装B吗?

在Windows操作系统横行的今天,为什么要学习使用Vim这样需要各种快捷键的文本编辑器呢?

大型网站的服务器一般是无图形化界面的Linux系统,当需要进行调试、远程处理问题的时候,只能调出terminal(终端窗口),然后用命令"vim index.html"这样的方式,调出vim编辑器,再进行更改。


引申:

为什么大型网站选择使用Linux作为服务器系统,知乎上的yegle大神给出了个人感觉很中肯的回答,Linux 作为服务器操作系统的优势是什么?


2. Vim和Vi的区别

Vim是Vi的升级版本,Vim不仅兼容所有的Vi语法,还加入一些新的特性在里面,如:语法高亮、可视化操作、多平台支持(终端、Windows、MacOS等)。总之,学习好Vi,就学会了Vim。

vim编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及 Linux系统的任何版本,vim编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vim也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。


3. Vim快捷键练习利器----VimTutor

Vimtutor是新手可以快速入门Vim的一个Vim内置应用,直接在Vim命令行下,敲Vimtutor,回车即可进入练习。


4. Vim的三种模式

Vim可以分为三种模式,分别为:

命令行模式(Command mode)

插入模式(Insert mode)

底行模式(Lastline mode)

命令行模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

插入模式

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

底行模式

将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过,一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。


5. Vim的基本操作

a) 进入Vim

在系统光标提示符后,输入vim及文件名后,回车,进入Vim编辑画面。


特别注意,进入vim之后,是处于「命令行模式(command mode)」,要切换到「插入模式(Insert mode)」才能够输入文字。

b) 切换至插入模式(Insert mode)编辑文件

「命令行模式(command mode)」按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

c) 插入模式(Insert mode)切换到命令行模式(Command mode)

在插入模式下,按一下「ESC」键即可。

d) 退出vim及保存文件 

在命令行模式(Command mode)下,按冒号「:」键,进入底行模式(Last Line mode)

常见底行模式下的命令行:

:w filename 文件以filename为文件名保存

:wq 文件存盘并退出vim

:q 文件不存盘并退出vim

:q! 文件不存盘强制退出vim


6. 命令行模式下的功能键(部分)

a) 从命令行模式切换为插入模式的三种方式

「 i 」:从当前光标位置进入插入模式

「 a 」:从当前光标位置的下一个字符进入插入模式

「 o 」:从当前光标位置的下一行进入插入模式

b) 从插入模式切换为命令行模式

按「ESC」键 

c) 移动光标

vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

d) 行尾追加

不管光标在该行的什么位置,直接按大写字母「A」即可

e) 删除单词

dw:把光标停留在需要删除的单词前面,依次按下「d」「w」,即可

de:把光标停留在需要删除的单词前面(无视单词前面的空格),依次按下「d」「e」,即可

f) 从当前光标处删除到行末

把光标停留在需要删除的句子前面,依次按下「d」「$」,即可

g) 快速跳转到行首

按下数字「0」,即可

h) 使用计数以删除单词

示例:this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.

依次将鼠标定位到ABC前,按「d」「2」「w」,可以删除:ABC DE

将鼠标定位到FGHI前,按「d」「4」「w」,可以删除:FGHI JK LMN OP

将鼠标定位到Q前,按「d」「3」「w」,可以删除:Q RS TUV

得到句子:

this line of words is cleaned up.

i) 删除当前行

鉴于删除当前行这一操作的高频性,vim设计者简化了快捷键,按「d」「d」即可。

连续删除两行,从当前行开始,则为:「2」「d」「d」

j) 撤销更改

a. 按小写字母「u」,撤销上一步的更改操作;

b. 按大写字母「U」,撤销整行的更改操作;

c. 「Ctrl+R」撤销上一步「撤销操作」。

k) 将刚删除的内容置入其他行

之前刚刚删除的内容,会放入Vim编辑器的寄存器中。基于如此原理,可以将之认为成Windows操作系统的「剪切」操作。

先在想删除的行,按「d」「d」,进行删除操作;

再在想插入那行的前一行按「p」键即可。

l) 替换

将光标放到需要改的字符前,先按「r」键,再输入想更改的字符即可。

m) 跳转

顶部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入「g」「g」即可;

底部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入大写字母「g」即可;

特定行跳转命令:直接输入行号,然后输入大写字母「g」即可。

n) 查找命令

字符串查找:

输入英文斜杠「/」,后面紧接需要搜索的字符串即可。

查找下一个相同字符串,就紧接着按小写字母「n」;

查找上一个相同字符串,就紧接着按大写字母「N」。

配对括号查找:

在编程语言里,配对括号「 ( 」「 ) 」「 { 」「 } 」很常见,当定位到一个配对括号的一半时(注意光标要定位在该括号之前),按「%」,即可自动跳转到与之匹配的第一个配对括号处。

o) 替换字符串

当前行替换命令

在标准命令行模式下,光标定位到当前行,按英文冒号「 :」,再输入s/oldstring/newstring/g 回车,即可。

完整语句为:

:s/dogg/dog/g

特定几行替换命令

在标准命令行模式下,按英文冒号「 :」,再输入#,#s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。

完整语句为:

:5,8s/dogg/dog/g

全文替换命令

在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。

完整语句为:

:%s/dogg/dog/g

全文替换命令(每个匹配项替换前需确认)

在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/gc 回车,即可(其中#代表特定的首尾两行的行号)。

完整语句为:

:%s/dogg/dog/gc

推荐阅读更多精彩内容

  • Vim几句话介绍Vim是Unix系统上的文本编辑软件(你该不会不知道什么是文本编辑软件吧!),在windows上也...
    何必遠方阅读 2,010评论 0 3
  • 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令...
    im蚂蚁阅读 27,606评论 3 47
  • dpkg 学习 安装mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji阅读 205评论 0 0
  • 支持text文本根据内容显示,显示不了的进行滚动显示http://www.cnblogs.com/Cocomo/p...
    好怕怕阅读 1,760评论 1 1
  • 转眼间,大学的第一个学期就要结束,时间总是在不经意间就这样偷偷的溜走。大学和我无数次憧憬的不太一样,开学前定...
    亚玮呀阅读 1,862评论 7 6