Linux 文件编辑命令 详细整理

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

一、vi编辑器有3种基本工作模式

首先需要知道vi编辑器有3种基本工作模式,分别是:命令模式、文本输入模式、和末行模式。

第一:命令行模式:该模式是进入 vi 编辑器后的默认模式。

任何时候,不管用户处于何种模式,按下ESC键即可进入命令模式。在该模式下,用户可以输入vi命令,用户管理自己的文档。此时从键盘上输入的任何字符都被当作编辑命令来解释。若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的动作。但需要注意的是,所输入的命令并不回显在屏幕上。若输入的字符不是vi命令,vi会响铃报警。

 

第二:文本输入模式:在命令模式下输入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被vi当作文件内容保护起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按ESC键即可。

 

第三:末行模式:末行模式也称 ex 转义模式。

在命令模式下,用户按“:”键即可进入末行模式下,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令在执行完后,vi自动回到命令模式。如果要从命令模式转换到编辑模式,可以键入a或者i。如果需要从文本模式返回,则按ESC即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。

 

综上,一般我们使用命令打开文件的时候,是进入到命令模式。在命令模式下,可以切换到文本输入模式和末行模式,但是文本输入模式和末行模式之间是不可以直接相互切换了,因此文本输入模式切换到末行模式,需要先回到命令模式再切换,反之亦然。

此外,编辑文本可以在文本输入模式下,键盘输入对文编进行编辑,或者在命令模式下使用vi命令也是可以起到编辑效果的。

 

 

实例演示

首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 
接下来我们按i,然后键盘随便输入写内容。 
然后按ESC重新进入到命令模式。 
在命令模式的情况下,我们按:,进入到了末行模式。 
我们输入wq!,然后回车,强行保存退出。 
下次我们再打开对应文件(可用less filename命令打开),即可看到内容已经更改。

补充: 
(1)末行模式下:q! 【强制退出不保存】  q【退出不保存】  wq【退出并保存后面也可以加个!】 

(2)如果你不想保存直接退出有可以在命令模式下使用“ctrl+z”快捷键或者按住“shift”键,输入两个z即可退出。

(3)保存退出:Esc + 双击Z (大写的Z)

更多命令

进入vi的命令 
vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename….filename :打开多个文件,依次进行编辑

屏幕翻滚类命令 
Ctrl+u:向文件首翻半屏 
Ctrl+d:向文件尾翻半屏 
Ctrl+f:向文件尾翻一屏 
Ctrl+b;向文件首翻一屏 
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令 
i :在光标前 
I :在当前行首 
a:光标后 
A:在当前行尾 
o:在当前行之下新开一行 
O:在当前行之上新开一行 
r:替换当前字符 
R:替换当前字符及其后的字符,直至按ESC键 
s:从当前光标位置处开始,以输入的文本替代指定数目的字符 
S:删除指定数目的行,并以所输入文本代替之 
ncw或nCW:修改指定数目的字 
nCC:修改指定数目的行

删除命令 
ndw或ndW:删除光标处开始及其后的n-1个字 
do:删至行首 
d$:删至行尾 
ndd:删除当前行及其后n-1行 
x或X:删除一个字符,x删除光标后的,而X删除光标前的 
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令 
/pattern:从光标开始处向文件尾搜索pattern 
?pattern:从光标开始处向文件首搜索pattern 
n:在同一方向重复上一次搜索命令 
N:在反方向上重复上一次搜索命令 
:s/p1/p2/g:将当前行中所有p1均用p2替代 
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 
:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置 
all:列出所有选项设置情况 
term:设置终端类型 
ignorance:在搜索中忽略大小写 
list:显示制表位(Ctrl+I)和行尾标志($) 
number:显示行号 
report:显示由面向行的命令修改过的数目 
terse:显示简短的警告信息 
warn:在转到别的文件时若没保存当前文件则显示NO write信息 
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始 
mesg:允许vi显示其他用户用write写到自己终端上的信息

末行模式命令 
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 
:n1,n2 d :将n1行到n2行之间的内容删除 
:w :保存当前文件 
:e filename:打开文件filename进行编辑 
:x:保存当前文件并退出 
:q:退出vi 
:q!:不保存文件并退出vi 
:!command:执行shell命令command 
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 
:r!command:将命令command的输出结果放到当前行

寄存器操作 
“?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 
“?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 
“?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 
“?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 

ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

 

转自:https://blog.csdn.net/u013142781/article/details/50735470

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专访迅雷首席工程师:迅雷的下一代互联网底层技术构想

摘要:互联网合纵连横频频上演,迅雷与小米的联姻也成为了热点,有许多人为迅雷的上市和迅雷的未来担忧,这家像工程师一样的公司,命运会怎样,他们未来会如何走下去?对此CSDN专访了迅雷首席工程师刘…

YASnippet - emacs 的代码片段管理工具

添加 snippet M-x 然后输入 yas-new-snippet 回车 RET&#xff0c;会出现一个新的 buffer # -*- mode: snippet -*-# name: # key: # --在出现的 buffer 中填写相应的数据 # -*- mode: snippet -*-# name: vard# key: vard# --echo <pre>;var_dump($0);die;c-x c…

深入vuex原理(上)

前言 vuex作为vue生态的重要组成部分&#xff0c;是对store进行管理的一柄利剑。简而言之&#xff0c;vuex是vue的状态管理器。使用vuex可用使数据流变得清晰、可追踪、可预测&#xff0c;更可以简单的实现 类似时光穿梭 等高级功能&#xff0c;对于复杂的大型应用来讲&#xf…

Maven入门(含实例教程)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Maven这个个项目管理和构建自动化工具&#xff0c;越来越多的开发人员使用它来管理项目中的jar包。接下来小宝鸽&#xff0c;将从下面几个…

进阶正则表达式

本文同步自我的博客园&#xff1a;http://www.cnblogs.com/hustskyking/ 关于正则表达式&#xff0c;网上可以搜到一大片文章&#xff0c;我之前也搜集了一些资料&#xff0c;并做了排版整理&#xff0c;可以看这篇文章http://www.cnblogs.com/hustskyking/archive/2013/06/04/…

tkinter拦截关闭事件

import tkinter as tk from tkinter import messageboxroot tk.Tk()def on_closing():if messagebox.askokcancel("Quit", "Do you want to quit?"):root.destroy()root.protocol("WM_DELETE_WINDOW", on_closing) root.mainloop() 转载于:htt…

阿里云服务器一分价钱一分货,切记!

阿里云为了满足低端市场的需求&#xff0c;会推出一些价格非常便宜的机器&#xff0c;但是这些机器是为新手练手用或者做测试用的&#xff0c;性能不行。你不要指望花每月9.5元&#xff0c;买一台学生机&#xff0c;就可以放置流量大的网站还不卡&#xff0c;那个不现实。阿里云…

请记住:你的付出都会以该有的方式归来(图)

人&#xff0c;这一生就像一个耕种的农民。你不是在付出&#xff0c;就是在收获。当然&#xff0c;有人说&#xff0c;付出并不一定有回报。这是大多数人都认同的&#xff0c;也就是付出与得到不一定成正比&#xff0c;不是付出的越多就得到的越多。但我想告诉你的是&#xff0…

c++primer plus笔记

> 第六版 操作符重载 #include<iostream> using namespace std;class Time { public:Time(){hm0;}Time(int _h,int _m){h _h;m _m;}void show(){printf("%02d:%02d \n",h,m);}Time operator(const Time &t){Time result;result.m t.m m;result.h t…

Luogu P3975 [TJOI2015]弦论

题目链接 \(Click\) \(Here\) 题目大意&#xff1a; 重复子串不算的第\(k\)大子串重复子串计入的第\(k\)大子串写法&#xff1a;后缀自动机。 和\(OI\) \(Wiki\)上介绍的写法不太一样&#xff0c;因为要同时解决两个问题。 把字符串每个前缀所在等价类的\(siz\)记为\(1\)&#…

《 图解 HTTP 》读书笔记

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. TCP/IP 协议族按层次分为&#xff1a;应用层、传输层、网络层、数据链路层。 2. IP 协议的作用是把各种数据包传送给对方。 3. IP …

身体出现危险时会发出信号 这太重要了 一定收藏 !(组图)

太重要了&#xff01;真的太重要了&#xff01; 心脏有问题时———左边手臂会酸、麻、痛。 肝脏有问题时———小腿晚上睡觉时容易抽筋。 肾脏出现问题时———声音就会出不来&#xff0c;就会沙哑。 脾胃出现问题时———偏头痛。 任何试图更改生物钟的行为&#xff0c;都将给…

数据结构与算法-概念

计算机从解决数值计算问题到解决生活中的问题 现实生活中的问题涉及不同个体间的复杂联系 需要在计算机程序中描述生活中个体间的联系数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系而不是研究复杂的算法 数据结构 基本概念 数据&#xff1a;程序的操作对象…

腾讯联手联通推出车联网“网卡”,打“内容”+“流量”的组合拳

车载生态已经成为了一个兵家必争之地了&#xff0c;于商业前景而言&#xff0c;这是一个BAT都无法忽视的掘金胜地。 从市场数据来看&#xff0c;全球车联网市场年复合增长率达到25%&#xff0c;根据汽车之家大数据显示&#xff1a;自2014年以来&#xff0c;车联网上市新车型渗…

编程面试中的十个常见错误

本文由 伯乐在线 - darkinlight 翻译自 thegeekstuff。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。 身为程序员&#xff0c;你肯定知道和其他技术工作面试比起来&#xff0c;编程工作的面试流程略有不同。 这篇文章会就你在编程面试中应当避免的10个问题展开讨…

费曼技巧与博客

费曼技巧与博客 什么是费曼技巧&#xff1f; 费曼技巧是一种学习方法&#xff0c;核心是以教促学。 具体实践 以学习费曼技巧为例&#xff1a; 确定学习目标为学习费曼技巧。寻找资料&#xff08;网络、书籍、报刊等&#xff09;学习费曼技巧&#xff0c;直到自己认为已经理解了…

阿里云服务器 CentOS 7上-- Docker 安装 网关(API-Getway)--KONG

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 全程操作按官方文档来就可以了。 1.将 Kong 连接到 Cassandra 或 PostgreSQL 容器 Kong支持 2 种数据库&#xff1a;Cassandra 或 Post…

每个程序员都应该了解的内存知识

英文原文&#xff1a;lwn.net&#xff0c;翻译&#xff1a;开源中国 [编辑的话: Ulrich Drepper最近问我们&#xff0c;是不是有兴趣发表一篇他写的内存方面的长文。我们不用看太多就已经知道&#xff0c;LWN的读者们会喜欢这篇文章的。内存的使用常常是软件性能的决定性因子&…

山区建小学

题目描述 政府在某山区修建了一条道路&#xff0c;恰好穿越总共nn个村庄的每个村庄一次&#xff0c;没有回路或交叉&#xff0c;任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为d_idi​&#xff08;为正整数&#xff09;&#xff0c;其中&#xff0c;0<…

idea debugger console 不见了--还原 console 图标

1 找了好久&#xff0c;也找不到&#xff0c;调试的时候挺麻烦的。 2 最后发现 有个一个重置&#xff0c;视图的按钮。点击一下就恢复 。 如下图。转自&#xff1a;https://blog.csdn.net/changdejie/article/details/64127026