文档章节

Linux系统中的vi/vim指令【详解】

o
 osc_gu9d45li
发布于 2019/04/09 09:21
字数 1857
阅读 15
收藏 0

精选30+云产品,助力企业轻松上云!>>>

    vi是Unix世界里极为普遍的全屏幕文本编辑器,vim是它的改进版本Vi IMproved的简称。几乎可以说任何一台Unix机器都会提供这套软件。

    只要简单的在Shell下执行vi就可以进入 vi 的编辑环境。在实际操作之前先对它有个了解会比较好。

    vi 有两种模式,输入模式以及指令模式。输入模式即是用来输入文字资料,而指令模式则是用来下达一些编排文件、存档、以及离开 vi 等等的操作指令。当执行 vi 后,会先进入指令模式,此时输入的任何字元都视为指令。

第一步:

1文本编译工具vi使用

vi的名字取自于visual,意为“直观”,它是一个全屏幕编辑程序。还有gedit、emacs在Linux系统中vi是最常用的编辑程序,它的文本编辑功能十分强大,但使用起来比较复杂。

2Linux系统中的vi其实是vim,是vi的增强版。vi编辑程序有两种工作模式:

命令模式(指令模式):此模式下的按键当作指令来处理。

输入模式:此模式的按键作为真正的输入。

 

第二步:

     vi操作模式的切换,要进入输入模式,可以按如下命令键:

新增:‘a’,从光标后开始输入文本。‘A’,从光标所在行末尾输入新的文本。

插入:‘i’,从光标前开始插入文本。‘I’,从光标行的第一个非空格字符前开始插入文本。

开始:‘o’,从光标所在行下新增一行并进入输入模式。‘O’,从光标所在行上新增一行并进入输入模式。

 

第三步: 

    从输入模式按ESC进入命令模式

 

第四步: 

    进入和退出vi

进入vi,在提示符下:

vi

vi 文件名

退出vi,在指令模式下:

:q,退出

:wq,存盘后退出

:q!,不存盘强制退出

:x,强制存盘退出

 

第五步:

     删除和修改文本

指令模式下:

x:删除光标处的一个字符

dd:删除光标所在行

r:修改光标所在字符

R:进入改写状态

s:删除光标所在字符,并进入输入状态

S:删除光标所在行,并进入输入状态

 

第六步:

     光标移动

1指令模式下:

h:向左移动一列

j 或+:向下移动一行

k 或-:向上移动一行

l:向右移动一列

组合:nh,nj,nk,nl。分别是移动n行(列)

在有方向键的键盘上,无论指令模式或输入模式都可以用方向箭头来移动光标

2光标按行移动

指令模式下:

:n回车:将光标移动到第n行

:$回车或者L:将光标移动到最后一行

M:将光标移动到中间一行

H:将光标移动到第一行

:set number:显示行号

:set nonumber:取消显示行号

  3光标按单词移动

指令模式下:

w:将光标移动到下一个单词头

b:将光标移动到前一个单词头

e:将光标移动到下一个单词尾

组合:nw、nb、ne

4光标按字符移动

指令模式下:

$:将光标移动到当前行尾

^或0:将光标移动到当前行首

n|:将光标移动到当前行的第n个字符

fm:将光标移动到当前行的下一个字符m处

光标返回原处

两个单引号‘’

 

第七步: 

    文本编辑

1翻页

指令模式下:

Ctrl+d:下翻半屏

Ctrl+u:上翻半屏

Ctrl+f:下翻一屏

Ctrl+b:上翻一屏

  2查找

指令模式下:

/string:从当前位置向前查找字符串string

?string:从当前位置向后查找字符串string

继续查找:

n:沿前述查找方向继续查找同一字符串

N:沿前述查找方向的反方向继续查找同一字符串

3删除文本

指令模式下:

x:删除字符

dw:删除单词

dd:删除行

D:删除从光标到行末所有字符

dfm:删除从光标到第一个字符m间的文本

:5d:删除第5行

:5,$d:删除从第5行到最后一行

可以和整数n组合

  4撤销和重复命令

指令模式下:

u:撤销最后一个更改操作

U:撤销对本行的所有修改

  5文本替换

指令模式下:

m:替换当前字符为m,替换后仍为命令模式

R:替换当前字符后的一系列字符,替换后变为输入模式。

s:多个字符替换单个字符

cw:单词替换

cc:行替换

C:替换当前行剩余部分

cfm:替换当前字符到指定的字符m

  6文本删除与替换对比

          命令类型           删除           替换

             字符                 x                r

             单词               dw             cw

              行                  dd              cc

   从光标到行尾         D               C

    从光标到字符m     dfm           cfm

  7全局替换

指令模式下:

搜索当前行的第一个实例

:s/bash/sch把当前行的第一个bash换为sch

搜索指定行的第一个实例

:1,10s/bash/sch 把1到10行bash换为sch

:5,$s/bash/sch 把5到末行bash换为sch

设置过滤条件进行搜索

:g/var/s/bash/sch把包含var行中的bash替换为sch

同一行中替换所有实例

:s/bash/sch/g把当前行中所有bash替换为sch

替换整个文件中的所有实例

:1,$s/bash/sch/g把整个文件中的bash替换为sch

8移动和复制文本

指令模式下:

yy:复制当前行

dd:剪切当前行(删除)

p、P:粘贴当前行

 

9复制和移动文本块

指令模式下:

把某(几)行复制并粘贴到某行后

:5 copy8 把5行复制并粘贴到第8行后

:1,5 copy$ 把1-5行复制并粘贴到末行后

.,$ copy0 把当前行到末行复制并粘贴到文件头

把copy改为move即为移动文本块(注:.表示当前行,0表示文件头,$表示文件尾)

 

第八步: 

    文件保存

    指令模式下:

:w 保存文件

:wq或者:x或者ZZ 保存并退出vi,返回linux提示符

:w f1.c 把当前文件另存为f1.c

:q! 放弃对文件的保存,直接退出

  1保存文本块

指令模式下:

:2,5 write f2 把第2到第5行另存为文件f2

保存文本块,并直接覆盖掉已有(如果有)文件

:2 write! f2 把第2行强行另存为文件f2

向文件追加文本

:2 write >> f2 把第2行追加到文件f2末尾

 

第九步: 

    与shell交互

指令模式下:

读某文件的内容到当前打开文件

:5 read a 把文件a中的内容读到当前打开文件的第5行后

在vi中执行shell命令

:!pwd

在vi中执行shell命令,并把结果添加到vi中

:5 read! pwd把pwd执行结果插入到第5行后

:e 在vi中编辑某文件时,不退出vi而建立新文件

:n 在vi中编辑某文件时,不退出vi而加载新文件

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
我,【Linux】,一个你离不开的操作系统

Linux常用命令大全:https://blog.csdn.net/qq_40181435/article/details/106031721 文章目录 Linux概述 Linux入门 Linux实操 Linux概述 什么是Linux Linux,全称GNU/Linux,是一套免费使用和...

Mr.东方老赢
05/11
0
0
VI 操作详解!!

转载:http://www.apelearn.com/study_v2/chapter10.html 前面多次提到过vi这个命令,它是linux中必不可少的一个工具。没有它很多工作都无法完成。早期的Unix都是使用的vi作为系统默认的编辑...

木木成洋
2017/07/02
0
0
vi/vim编辑器使用方法详解

vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及linux系统...

osc_bgoqj0sj
2019/02/14
2
0
linux中vi和vim操作

一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能,因此被广泛使...

osc_sw4wag84
2019/10/29
2
0
iconv,enconv,enca,convmv,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令

iconv,enconv,enca,convmv,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令 【Linux常用工具】1.1 diff命令的三种格式 摘要: 1.在Vim中查看文件编码 :set fileencodin...

laowude
2017/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

是否有可能从另一个git存储库中挑选一个提交? - Is it possible to cherry-pick a commit from another git repository?

问题: I'm working with a git repository that needs a commit from another git repository that knows nothing of the first. 我正在使用一个git存储库,需要从另一个不知道第一个存储库......

技术盛宴
昨天
0
0
【LeetCode】53 盛最多水的容器

题目 解题思路 双指针法: https://leetcode-cn.com/problems/container-with-most-water/solution/sheng-zui-duo-shui-de-rong-qi-by-leetcode-solution/ 代码 public class Solution { ......

JaneRoad
昨天
16
0
阿里云OSS配置CDN加速

首先购买CDN流量包 然后添加域名 添加好后 然后将域名OSS.xxxx.com 解析到 生成的CDN域名上 这样就完成了

可达鸭眉头一皱
昨天
11
0
js 整数与小数正则替换片段

说明 /(\d+)/g 整数 /(\d+\.\d+)rem/g 小数 /(\d+\.\d+|\d+)rem/g 其中 | 或 条件 例子 全局查找带 rem 单位的,替换成 px 单位 let text = text.replace(/(\d+\.\d+|\d+)rem/g, function(s......

DrChenXX
昨天
9
0
ubuntu下minicorba例子

一、开发环境安装 sudo apt install omniorb omniorb-idl omniidl libomniorb4-dev libomniorb4-2 omniorb-nameserver libomnithread4 libomnithread4-dev 二、源文件: Hi.idl module ......

wangxuwei
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部