vi 和 vim

vi:linux下的文本编辑器,所有的linux distribution 都会默认带的。
vim:vi的加强版,它能够根据文件的后缀名或文件开头的信息判断该文件的内容而自动呼叫该程序的语法判断式,再以颜色显示程序代码与一般信息。
vi分为三种模式:指令模式,编辑模式,指令列模式

指令模式:使用vi + 文档名 打开文档后默认进入的模式
可以使用的命令如下:
h : 光标向左移动一个字符
j : 光标向下移动一个字符
k : 光标向上移动一个字符
l :(小写的L)光标向右移动一个字符
30j :光标向下移动30行
ctrl+f :屏幕向下移动一页,相当于Page Down 按键
ctrl+b :屏幕向上移动一页,相当于Page Up 按键
Home按键:光标移动到这一行最前面的字符处
End :光标移动到这一行最后面的字符处
n<Enter>:n为数字,光标向下移动n行。
G : 移动到这个文件的最后一行(最后一行的第一列)
nG :移动到该文件的第n行
gg : 移动到这个文件的第一行(第一行的第一列)
/word : 向光标之下寻找一个名称为word的字符串
?word :向光标之上寻找一个名称为word的字符串
n :这个是指英文字母n,意思是在/word和?word搜索中继续进行下一个字符串匹配
N : 和小n刚好相反,进行向上搜索
x :在一行当中,x是向后删除一个字符,相当于del键
X :在一行当中,X是向前删除一个字符,相当于backspace键
nx :n为数字,连续向后删除n个字符
dd :删除光标所在行
ndd :删除光标所在行向下的连续n行
d1G :删除光标所在行到第一行的所有数据
dG :删除光标所在行到最后一行的所有数据
d$ :删除光标所在处到行末的所有字符
d0 :删除光标所在处到行首的所有字符
yy :复制光标所在行
nyy :复制光标所在行向下的连续n行
y1G :复制光标所在行到第一行的所有数据
yG :复制光标所在行到文件最后一行的所有数据
p :将复制的数据粘贴到光标所在行的下边
P:将复制的数据粘贴到光标所在行的上边
J :将光标所在行和下一行合并为一行
u :复原前一个动作
ctrl+r:重做前一个动作

:n1,n2s/word1/word2/g  :n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串取代为字符串Word2!
:1,$s/word1/word2/g     :从第一行到最后一行需找word1字符串,并将该字符串取代为word2!
:1,$s/word1/word2/gc    :从第一行到最后一行需找word1字符串,且在取代前显示提示符给用户确认(confirm)是否需要取代!

编辑模式下的可用的命令:

i:从光标所在处开始插入
I:从光标所在行的第一个非空字符开始插入
a:从光标所在处的下一个字符开始插入
A:从光标所在行的最后一个字符开始插入
o:在光标所在行的下一行插入新的一行
O :在光标所在行的上一行插入新的一行
r :取代光标所在的那个字符一次
R :连续取代光标所在字符,直到按下Esc键
Esc:退出编辑模式,回到命令行模式

指令列模式下可用的命令:
:w :将编辑的数据写入硬盘文件
:w!:强制写入文件,到底能不能写入与你自身对该文件的权限有关
:q :离开vi
:q!:强制离开,如修改过文件,不会生效
:wq:保存退出
:wq!:强制保存退出
ZZ :若文件没有更动,则不存储离开,若文件更动过,存储离开
:w filename:将编辑的数据存储为另一个文件
:r filename:将filename文件中的内容读取到光标所在行的后面
:n1,n2 w filename:将n1,n2行之间的数据存储到filename文件中
:! command :暂时离开vi到指令列模式下执行command命令的显示结果
:set nu : 显示行号
:set nonu :取消行号

vim编辑的文件恢复:
当我们使用vim编辑时,vim会在被编辑的文件的目录下建立一个.filename.swap文件,
你对filename文件的动作会被记录在.filename.swap文件中,如果你的系统因为某些
原因断线了,导致你编辑的文件还没有存储,可以从.filename.swap文件中恢复。

vim的额外功能:
(1)
在命令行输入alias命令,如果出现 alias vi=vim 表示当你执行vi这个命令时就是在执行vim,alias是别名的意思。
使用vim打开文件时(vim + filename),文档右下角会有光标当前所在行列的指示,会有当前画面占整个文件的百分比,
会有颜色显示,会有文档属性的一般文字说明,如:"/etc/services" [readonly] 11176L, 670293C
(2)
区块选择:使用vim 打开文件后
按下v:字符选择,会将光标经过的地方反白选择。
按下V:行选择,会将光标经过的行反白选择。
按下ctrl+v:长方形选择,
按下y:对反白的地方进行复制。
按下d:将反白的地方删除掉。
按下p:将刚复制的内容在光标处进行粘贴。
(3)多文件编辑:使用vim同时打开多个文件,如:vim 1.c 2.c
在第一个文件中按下:files(冒号的意思是进入指令列模式),可以查看当前使用vim打开了那些文件。
按下:n 可以切换到下一个文件。
按下:N 可以切换到上一个文件。
(4)多窗口功能:
:sp [filename] : 开启一个新的窗口,如果有加filename,表示在新窗口开启一个新的文件,否则表示两个窗口为同一个文件内容。
ctrl + w +j或者向下的箭头 :按键的方法是先按下ctrl不放,再按下w后放开所有按键,然后再按下j或向下的箭头,则光标可以移动到下方的窗口。
ctrl + w + k 或者向上的箭头 :同上,不过光标移动到上方的窗口。
ctrl + w + q :结束打开的新窗口。
(5)挑字补全功能:
ctrl +x -> ctrl +n :透过目前正在编辑的这个文件的内容文字作为关键字,予以补齐。
ctrl +x -> ctrl +o :以扩展名作为语法补充,以vim内建的关键字,予以补齐。
(6)vim环境设定与记录:在用户家目录下会有两个文件 .vimrc(默认不存在,需要自己手动创建)和.viminfo(记录你曾使用vim的各种动作)

在用vim打开的文件的指令列模式输入:
:set all :查看vim的所有设定值
:set nu :显示行号
:set nonu :取消行号
:set hlsearch :高亮度搜寻
:set nohlsearch :取消高亮度搜寻
:set autoindent :自动缩排(所谓缩排就是当你按下Enter键开始新的一行时,光标不会再行首,而是与上一行的第一个非空字符对齐。)
:set noautoindent :取消缩排
:set backup :是否自动存储备份档,一般是nobackup。如果设定backup,那么当你更动任何一个文件时,则源文件会被存储为一个档名为filename~ 的文件。
set ruler :显示右下角状态栏
:set showmode:显示--INSERT--之类的字样在左下角的状态栏
:set :显示与系统默认值不同的设定参数。
:syntax on:是否根据程序相关语法显示不同颜色。
:syntax off:取消相关语法颜色显示。
:set bg=dark :显示不同的颜色色调
:set bg=light:预设是light。

时间: 2024-12-15 20:26:02

vi 和 vim的相关文章

学习vi和vim编辑器(16):vim的多窗口功能(1)

vim默认是在一个窗口中编辑所有文件,在文件间移动或者移动到文件的不同部分时只显示一个缓冲区.但vim也提供了多窗口编辑功能,可以简化复合的编辑任务.这篇文章将学习如何在一个运行的vim进程里使用多窗口,包括多窗口编辑工作的初始化与启动,在窗口间移动光标,在显示区中移动窗口等. 启动多窗口编辑: 可以在打开vim时启动多窗口编辑,也可以在编辑会话中分割窗口. 从命令行(shell)启动多窗口: 默认情况下,vim为一个会话只打开一个窗口,即使打开时已经指定多个文件.如果想从命令行中打开多个窗口,

vi与vim的抓狂

1. vi和vim的关系:    vim可以理解是vi的升级版,支持shell script编程:    vi存在原因:所有Unix Like系统均内建vi编辑器,同时个别工具会主动呼叫vi,如crontab.    2. 关于vi的三种模式:    一般模式    编辑模式    命令模式 3. vi的一般模式命令:    1)光标移动:        单个字符:h(左).l(右).k(上).j(下):        行头:^/0/Home,行尾:$/End:        多行:nk.nj.

vi和vim区别及命令详解

vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding.     现将vim的命令行收集于下: vi有3个模式:插入模式.命令模式.低行模式. 插入模式:在此模式下可以输入字符,按ESC将回到命令模式.     命令模式:可以移动光标.删除字符等.     低行模式:可以保存文件.退出vi.设置vi.查找等功能(低行模式也可以看作是命令模式里的). 一.打开文件.保存.关闭文件(vi命令模式下使用) vi file

每天liunx命令,vi和vim的使用

纵然今天是国庆,但是学习不能停,今天学习的是liunx中,比较重要的2个编辑器,vi和vim,也许会有人问为什么要学习这2个呢?不是有简单好用的nano么. 主要还是因为有一些别的liunx版本,是没有内置的nano的,这个如果你突然接触就不能很快入手,而vi是每个liunx版本都内置有的,所有这个学习是很必要的, vi的一些基本应用,如用vi新建一个文件,并打开: vi /tmp/testing    #新建一个testing文件,并打开 vi分成三种基本的模式: 1.一般模式(默认) 2.编

学习vi和vim编辑器(15):vim对vi的主要改进

vim对vi做了大量改进,本章将讨论在vim中添加的主要功能:包括内置帮助功能.启动与初始化选项.新的移动命令.扩展的正则表达式.扩展的撤销.自定义可执行文件等. 内置帮助功能: vim的说明文档超过10万行,几乎所有的说明都可以通过vim内置的帮助工具取得,使用它最简单的形式就是调用" :help "命令.使用内置的帮助功能需要了解vi的导航技巧,知道如何在标签间前进与后退.当光标处于某个标签上时,按下" CTRL+] "前往该标签,按下" CTRL+T

学习vi和vim编辑器(13):vi同类品的功能总览

本章将学习vi同类品提供的相关功能. 它们都是我兄弟: 有许多可以自由取得的vi编辑器同类品.<vi和vim编辑器>重点介绍了vim编辑器,也简要地介绍了另外三种常用的同类品:nvi,elvis,vile.这些同类品都提供了vi之外的许多扩展功能,尽管方式可能不同,但这些同类品通常会提供相同的扩展功能.本篇文章将总体介绍这些同类品提供的扩展功能. 多窗口编辑:可以将屏幕分割成多个"窗口",从而在每个窗口编辑不同的文件,或者观察同一文件的不同部分.这使得同时在多个文件中工作更

Linux学习笔记之VI(VIM)编辑器

百度关于vi的资料 http://baike.baidu.com/view/908054.htm 关于vi 和vim的介绍可以在上面的网址看到. 1   进入和退出vi 进入:在终端命令行输入 vi 文件名   就会进入vi,并且建立了一个空的名字为刚才输入的文件,假如进入vi的时候不加文件名,那么进入vi后系统会自动建立一个空文件,你可以在命令模式下给这个文件改名. 退出:按ESC切换到命令模式下,输入 :q   这是没有保存就退出,一般系统会提示你要不要保存 :q!  强制退出,不保存 :w

学习vi和vim编辑器(11):高级编辑方法(2)

本章学习在vi编辑器中如何保存命令. 保存命令: vi和ex中提供了许多方法来保存一长串命令序列,这样当调用已保存的序列时,只需要输入几个字符即可. 单词缩写: 可以定义缩写,让vi在处于插入模式时替你自动将输入展开成原文.定义缩写的命令为:"  ab abbr phrase ",其中abbr就是给phrase指定的缩写.注意,在插入模式中,只有将缩写当成单个单词输入时,缩写才会被展开,单词内的abbr不会被展开.如下图所示,将"vi"定义为"visual

学习vi和vim编辑器(9):全局替换(2)

上一篇文章已经学习了如何通过vi编辑器中" :s "命令进行全局替换,而且可以在替换命令中使用正则表达式以进行强大的模式匹配.这一篇文章将学习模式匹配的更多范例,以进一步熟悉正则表达式. 模式匹配的范例: (1)匹配一个完整的单词:如下图所示,如果需要将文本里所有的child单词替换成为children,可能最先想到的就是下图所示的替换命令: 但是这个命令会把childrendish,Fabrichild这两个单词中的child都做替换,这不是我们想要的.替换的关键就是child要是一

vi和vim编辑器中上下左右变成了ABCD

[问题] 一次在使用普通用户在redhat中使用vi和vim编辑器时,发现在vi和vim编辑器中:在命令行模式下能够正常使用上下左右键,但是在非命令行模式下不能正常使用上下左右方向键 [网上解决办法] 1)在/etc/vim/vimrc 中加入以下内容: set nocompatible  //支持方向键 set backspace=2   //支持backsapce前删键 2)在vi和vim的命令行模式下输入:set nocompatible [最后没办法的办法(不是最好)] 由于当前是普通用