关于vi替换命令的使用说明(ZZ)

 vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。

: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/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

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

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

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

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

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

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

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

3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

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

5. 删除文本中的^M

问题描述:对于换行,window下用回车换行(0A0D)来表示,linux 下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。

· 使用命令:cat filename1 | tr -d “^V^M” > newfile;

· 使用命令:sed -e “s/^V^M//” filename > outputfilename。需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。

· 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//。

· :%s/^M$//g

如果上述方法无用,则正确的解决办法是:

· tr -d "/r" < src >dest

· tr -d "/015" dest

· strings A>B

6. 其它

利用 :s 命令可以实现字符串的替换。具体的用法包括:

:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

:g/str1/s//str2/g 功能同上

从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索

字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

<think>好的,我现在需要帮助用户解决关于如何使用vi编辑器的问题。用户提到想查找vi命令使用方法或教程,所以我得先回顾一下vi的基本操作和常用命令。 首先,根据提供的引用内容,vi编辑器有几种模式,主要是命令模式、编辑模式和末行模式。用户启动vi时默认进入命令模式,这时候输入的按键会被当作命令而不是文本。要进入编辑模式,可以按i、a、o等键,不同按键会影响光标的位置和插入方式。例如,按i进入插入模式,光标在当前位置插入;按a则是在光标后插入,而o会在当前行下方新开一行。 接下来,保存和退出的命令是在末行模式下执行的。用户需要从命令模式切换到末行模式,按Esc回到命令模式,然后输入冒号:,接着输入wq保存并退出,或者q!强制退出不保存。这部分需要详细说明步骤,避免用户混淆。 然后,关于移动光标的命令,比如在命令模式下使用h、j、k、l来左、下、上、右移动,或者使用方向键。其他快捷键如gg到文件开头,G到文件末尾,这些对于导航很有帮助。 文本操作命令如复制(yy)、粘贴(p)、删除(dd)也是基础内容。替换和查找功能,比如在命令模式下输入/进行搜索,或者使用:s/old/new/g替换当前行的内容,这些可能需要更多的例子来说明。 用户可能还需要知道如何打开和关闭行号显示,这在调试或查看文件结构时有用,可以通过:set nu和:set nonu来实现。 另外,引用中提到viLinux系统中的重要性,特别是在没有GUI的情况下,vi是唯一选择。所以需要强调其高效性和必要性,鼓励用户熟悉基本命令。 最后,需要确保回答结构清晰,分步骤讲解,每个部分用标题分隔,方便用户逐步学习。同时,生成的相关问题要围绕用户可能遇到的进一步疑问,比如模式切换问题、保存退出问题、常用操作等。</think>### 如何使用 vi 编辑器命令 vi 编辑器是 Linux 系统中功能强大的文本编辑器,掌握其基本操作对命令行环境下的文件编辑至关重要。以下是详细的使用方法: --- #### **1. 启动与退出 vi 编辑器** - **启动 vi**: 在终端输入 `vi [文件名]`,例如 `vi test.txt`。若文件不存在,vi 会新建该文件[^4]。 - **退出 vi**: - 在命令模式下按 `:` 进入末行模式,输入 `q` 退出(无修改时)。 - 输入 `q!` 强制退出(不保存修改)。 - 输入 `wq` 保存并退出。 --- #### **2. vi 的三种模式** - **命令模式**(默认模式): 启动 vi 后自动进入此模式。所有按键动作视为命令,例如: - `i`:切换到编辑模式(在光标前插入)。 - `a`:切换到编辑模式(在光标后插入)。 - `o`:在当前行下方插入新行[^2]。 - **编辑模式**: 可自由输入或修改文本,按 `Esc` 返回命令模式。 - **末行模式**: 在命令模式下按 `:` 进入,用于执行保存、退出等操作。 --- #### **3. 常用命令** - **移动光标**(命令模式下): - `h`(左)、`j`(下)、`k`(上)、`l`(右)或方向键。 - `gg`:跳转到文件开头。 - `G`:跳转到文件末尾。 - `Ctrl + f`:向下翻页,`Ctrl + b`:向上翻页。 - **文本操作**(命令模式下): - `yy`:复制当前行。 - `p`:粘贴已复制内容。 - `dd`:删除当前行。 - `u`:撤销上一次操作。 - **查找与替换**: - `/关键词`:在命令模式下查找内容,按 `n` 跳转到下一个匹配项。 - `:%s/旧文本/新文本/g`:全局替换所有匹配的旧文本[^3]。 --- #### **4. 实用技巧** - **显示行号**: 在末行模式输入 `:set nu`,取消显示用 `:set nonu`。 - **多文件编辑**: 使用 `:e [文件名]` 切换编辑的文件。 - **快速保存**: 在命令模式下按 `ZZ`(大写)可直接保存并退出。 --- #### **示例:编辑并保存文件** 1. 输入 `vi demo.txt` 打开文件。 2. 按 `i` 进入编辑模式,输入文本。 3. 按 `Esc` 返回命令模式,输入 `:wq` 保存并退出。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值