首页 > 代码库 > 【Linux@基础篇 ~】# vi/vim 命令

【Linux@基础篇 ~】# vi/vim 命令

今天开始学习Linux,学习过程中我会在这里记下一些学习笔记,先从基础的学起,万事开头难,因此我会坚持!当下Linux系统已经有很多版本了,Linux其实就是Unix的衍生版本,以L开头是因为它的创始人Linus,Unix是Unique + X版本号的缩写...关于Unix和Linux的起源有很长的计算机史要讲,本教程不讲历史,只谈技术哦。本教程本着先易后难的原则进行的,所以基础命令篇以Red Hat 6.0 企业版为实验机器。先从基础命令和系统管理学起,循序渐进,后面会有shell脚本编程、服务器架构、嵌入式Linux开发以及各种版本Linux系统的差别等高级应用,期待一下吧,今天是第一篇,我们先介绍Linux下最常用文本编辑命令vi/vim命令, vim(vi VImproved)是vi的升级版本。在新版本的RHEL6.0 中vi命令已经集成了vim的更新功能,两个命令式完全一样的。 Hope you to enjoy it, Let‘s go...

vi/vim 命令

1、简介

1.1 命令简介

vi -h 我们可以看到如下关于vi的帮助

usage: vim [arguments] [file ..]       edit specified file(s)
   or: vim [arguments] -               read text from stdin #从标准输入中读入text shell编程中使用
   or: vim [arguments] -t tag          edit file where tag is defined #直接查找某函数或变量,并打开包含这个tag的文件。设定tag 需用ctags命令生成tags list后才能使用

   大家可以用gcc编一个c的程序测试一下,还是很好用的。
   or: vim [arguments] -q [errorfile]  edit file with first error #编辑错误文件,光标直接定位到第一个错误

Arguments:
   --                   Only file names after this
   -v                   Vi mode (like "vi")   #直接进入 vi编辑模式
   -e                   Ex mode (like "ex")  #直接进入 末行模式
   -s                   Silent (batch) mode (only for "ex")
   -d                   Diff mode (like "vimdiff")             #比较有用,可以对比两个或多个文件,具有代码对比功能
   -y                   Easy mode (like "evim", modeless)  #直接进入 vi编辑模式
   -R                   Readonly mode (like "view")  #只读模式
   -Z                   Restricted mode (like "rvim")
   -m                   Modifications (writing files) not allowed
   -M                   Modifications in text not allowed
   -b                   Binary mode
   -l                   Lisp mode
   -C                   Compatible with Vi: ‘compatible‘
   -N                   Not fully Vi compatible: ‘nocompatible‘
   -V[N][fname]         Be verbose [level N] [log messages to fname]
   -D                   Debugging mode
   -n                   No swap file, use memory only
   -r                   List swap files and exit
   -r (with file name)  Recover crashed session
   -L                   Same as -r
   -A                   start in Arabic mode
   -H                   Start in Hebrew mode
   -F                   Start in Farsi mode
   -T <terminal>        Set terminal type to <terminal>
   -u <vimrc>           Use <vimrc> instead of any .vimrc
   --noplugin           Don‘t load plugin scripts
   -p[N]                Open N tab pages (default: one for each file) #打开多个文件tab格式, 末行模式中N/n切换上一个tab或下一个tab
   -o[N]                Open N windows (default: one for each file)   #打开多个文件窗口格式, 末行模式中N/n切换上一个win或下一个win
   -O[N]                Like -o but split vertically  #打开多个文件窗口格式(竖版), 末行模式中N/n切换上一个win或下一个win
   +                    Start at end of file   #打开文件光标直接定位到文件尾
   +<lnum>              Start at line <lnum>   #打开文件光标直接定位到第<lnum>行
   --cmd <command>      Execute <command> before loading any vimrc file
   -c <command>         Execute <command> after loading the first file
   -S <session>         Source file <session> after loading the first file
   -s <scriptin>        Read Normal mode commands from file <scriptin>
   -w <scriptout>       Append all typed commands to file <scriptout>
   -W <scriptout>       Write all typed commands to file <scriptout>
   -x                   Edit encrypted files
   --startuptime <file> Write startup timing messages to <file>
   -i <viminfo>         Use <viminfo> instead of .viminfo
   -h  or  --help       Print Help (this message) and exit
   --version            Print version information and exit

1.2 常用的三种模式

vi编辑器主要有三种模式:

编辑模式:自由输入文本内容,和普通操作文本类似

命令模式:通过命令直接编辑和控制文本光标

末行模式:通过命令保存文件或退出vi编辑器,即在屏幕最下面冒号后输入的命令

1.3 模式之间的切换

命令模式 -> 编辑模式

使用命令vi filename打开vi编辑器,首先进入的是命令模式。通过使用使用编辑键(a, i, o 等后面会介绍)自动进入编辑模式。

编辑模式 -> 命令模式

按[ESC]键退出编辑模式进入命令模式

命令模式 -> 末行模式

按[:] 直接可输入末行模式中的命令

末行模式 -> 命令模式

按[ESC]键退出末行模式进入命令模式

2、命令模式

2.1 光标定位命令

H 光标前移一个字符

J 光标下移一行

K 光标上移一行

L 光标后移一个字符

0 光标移动到行的最前面

$ 光标移动到行的最后面

w 移动到下一个单词的第一个字母

e 移动到下一个单词的最后一个字母

b 移动到上一个单词的第一个字母

^ 移动到当前光标所在行的第一个非空字符

[n]- 上移n行 (不加n 上移一行)

[n]+ 下移n行 (不加 n 下移一行)

nG 移动到第n行

[ctrl] d 下移半页

[ctrl] f  下移一页

[ctrl] u 上移半页

[ctrl] b 上移一页

 

fx 向右移动到x字符

Fx 向左移动到x字符

tx 向右移动到x字符前

Tx 向左移动到x字符前

; 重复一次fx/Fx操作

, 反方向重复一次fx/Fx操作

 

按下[/]末行输入需要查找的关键词,按[Enter]查找, 操作类似于末行模式

/x 向下查找有x字符的位置

?x 向上查找有x字符的位置

n 重复一次

N 反方向重复一次

 

[n]( 移动到上一个句子的第一个字符,空白段落也会当做一个句子,以!.?作为界定

[n]) 移动到下一个句子的第一个字符,空白段落也会当做一个句子,以!.?作为界定

[n]{ 移动到上一个段落的第一个字符,空白段落也会停顿一次,以空白行作为界定

[n]} 移动到下一个段落的第一个字符,空白段落也会停顿一次,以空白行作为界定

**n可选跳转n行

 

2.2 文本修改命令

编辑插入模式与编辑替换模式通过[insert]键切换

a 从光标所在位置之后开始添加内容,进入编辑插入模式

A 从光标坐在行之后开始添加内容,进入编辑插入模式

i  从光标所在位置之前开始添加内容,进入编辑插入模式

I 从光标坐在行之前开始添加内容,进入编辑插入模式

o 在光标所在行新增一行开始添加内容,进入编辑插入模式。

O 在光标所在行上面新增一行开始添加内容,进入编辑插入模式。

x 删除光标所在字符

dd  删除光标所在行(确切的说是剪切)可以通过p粘贴 ndd 向下删除n行

cc 删除光标所在行(确切的说是剪切)可以通过p粘贴 进入编辑模式

yy 复制一行 nyy 复制光标下n行

p 粘贴缓存区的内容,复制到光标后

P 粘贴缓存区的内容,复制到光标前 (大写P)

r 进入编辑替换模式,输入内容直接替换内容,只能替换一个,替换完成后即回到命令模式

R 进入编辑替换模式,输入内容直接替换内容,替换多个,需要手动回到命令模式

s 删除光标所在字符,并进入编辑模式

S 删除光标所在行,并进入编辑模式

u 撤销最近一次修改,可操作多次

U 撤销对当前行的所有修改

[Ctrl] + R 重做撤销内容

 

d y c + 定位 组合命令

定位可以是下列几个:
    e     光标所在位置到该字的最后一个字母     ex. ye常用语复制一个单词

    w     光标所在位置到下个字的第一个字母     

    b     光标所在位置到上个字的第一个字母     

    $     光标所在位置到该列的最后一个字母     

    0     光标所在位置到该列的第一个字母     

    )     光标所在位置到下个句子的第一个字母     

    (     光标所在位置到该句子的第一个字母     

    }     光标所在位置到该段落的最后一个字母
    {    光标所在位置到该段落的第一个字母

3、末行模式(行命令模式)

3.1 保存退出命令

q!不保存退出

wq!保存退出

不加感叹号按提示信息操作确认/取消

ZZ 保存退出,无提示

3.2 文本替换

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

** n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/ 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g 替换每一行中所有 vivian 为 sky (g是贪婪匹配,正则用法)

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/ 也可以使用+ 来作为分隔符代替/(替换文本中/)

3.3 配置编辑器

在末行模式下可以使用set命令对vi做一些配置,常用的有:

:set nu显示行号 
:set nonu隐藏行号 
:set ic设置搜索时忽略大小写 
:set noic搜索时对大小写敏感 
:set list显示不可视字符 
:set nolist不显示不可视字符 
:set showmode显示当前操作模式 
:set shownomode不显示当前操作模式 
:set all显示所有的vi环境变量设置

:set fileformat=unix   #将文件修改为unix格式,如win下面的文本文件在linux下会出现^M。

在行命令模式中设置的配置都不能保存,如果需要保存我们需要在$HOME/下新增一个.vimrc的配置文件,.开头文件默认隐藏文件,ls -a查看:

echo "set nu" >> .vimrc

这样vi编辑器中就默认显示行号了

vi自定义配置文件可以扩展很多功能,大家可以参考这篇文章

http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html

 

3.4 编辑其他文件

:e otherfilename

直接切换当前编辑文件为另外一个文件,需要先保存当期文件:w

 

4、总结

本文只是简单了介绍vi编辑器常用的一些功能和操作命令,老外可以把vi编辑器写成一本书,what‘ a awesome one! 其实能熟练掌握vi常用的一切操作已经很不容易了。万事开头难,这个编辑器不像windows中的记事本那么友好,但是功能灰常强大,就像学五笔一样,刚开始很痛苦,学成了就天下无敌了!好了就到这里了,如果以后有补充的,我会继续添加内容。下一次我们学习Linux文件操作命令。

 

【Linux@基础篇 ~】# vi/vim 命令