38、Vi编辑器:高效文本编辑指南

Vi编辑器:高效文本编辑指南

1. 行与逻辑行的概念

在Vi编辑器中,屏幕上显示的物理行通常限制为80个字符。而逻辑行是指两次回车之间输入的所有文本。例如,在按下回车键之前输入了200个字符,Vi会将这200个字符视为一行,即便在屏幕上它们看起来像几行物理行。

有两个在行移动中非常有用的命令:
- 0 (零):移动到行首。
- $ :移动到行尾。

若要在屏幕上显示行号,可输入 :set nu 。以下是一个示例文件,展示了行号的显示:

1 With the screen editor you can scroll the page,
2 move the cursor, delete lines, and insert characters,
3 Screen editors are very popular.
while seeing the results of edits as you make them.

这里逻辑行有3个,但屏幕上显示的物理行有4个。若光标位于 delete 一词的 d 上,输入 $ ,光标会移动到 them 一词后面的句号处;若输入 0 ,光标会移回到行首 the 一词的 t 处。

如果不使用Vi中的自动换行选项( : set wm=10 ),则必须使用回车键来换行,以保持每行长度易于管理。

2. 按文本块移动光标

除了按行移动,还可以按文本块(单词、句子或段落)来移动光标。
- w 命令:每次将光标向前移动一个单词,将符号和标点视为单词。例如,连续输入10次 w 命令,光标会按如下方式移动:

move the cursor,
delete lines,
and insert characters,
  • W 命令(大写):每次向前移动一个单词,忽略符号和标点,使光标移动到空格后的第一个字符。示例如下:
move the cursor,
delete lines, and insert characters,
  • b 命令:每次将光标向后移动一个单词。
  • B 命令:每次向后移动一个单词,忽略标点。

这些命令都可以与数字结合使用,以实现多次移动。例如, 2w 向前移动两个单词, 5B 向后移动五个单词(忽略标点)。

3. 基本编辑命令概述

在文件中输入文本时,很少能一次就达到完美,通常需要进行编辑。编辑主要包括插入、删除、更改、移动和复制文本等操作。Vi中有四个基本编辑命令:
- i :插入。
- c :更改。
- d :删除。
- d 然后 p :移动(删除并放置)。
- y :复制(yank)。

以下是基本编辑命令的简单示例表格:
| 对象 | 更改 | 删除 | 复制(Yank) |
| ---- | ---- | ---- | ---- |
| 一个单词 | cw | dw | yw |
| 两个单词 | 2cw | 2dW | 2YW |
| 向后三个单词 | 3cb | 3db | 3Yb |
| 一行 | cc | dd | YY Y |
| 到行首 | c0 | d0 | Y0 |
| 单个字符 | r | x | Yl |
| 到行尾 | c$ C | d$ D | y$ |

4. 插入新文本

在创建新文件或编辑现有文本时,都可以使用插入命令 i 来添加字符、单词和句子。例如,要在句子开头插入 Today, ,可按以下步骤操作:

I'll start putting
together a written
plan that shows
different strategies
iToday, <ESC>

在智能终端上,插入新文本时,现有文本会向右移动;而在“哑终端”(如 adm3a )上,输入时会覆盖现有文本,按下 ESC 后,行会立即调整,使缺失的字符重新出现。

5. 更改文本

5.1 更改单词

使用 cw 命令可以用更长、更短或任意数量的文本替换一个单词。例如,将 designing 更改为 putting together

I'll start
designing a
cw
designin$ a
putting
together <ESC>
putting together a

cw 命令也适用于单词的一部分。例如,将 putting 改为 puts ,可将光标置于第二个 t 上,输入 cw ,然后输入 s 并按 ESC 。还可以使用数字前缀来一次性更改多个单词或字符,如 3cw 更改光标右侧的三个单词, 5cl 更改光标右侧的五个字母。

5.2 更改行

cc 命令用于替换当前整行,无论光标位于该行的何处,都会用输入的文本替换整行。 C 命令则从当前光标位置替换到行尾,与 c$ 效果相同。

5.3 更改字符

r 命令用于将单个字符替换为另一个字符,常用于纠正拼写错误。例如,将 Yasterday 中的 a 替换为 e

Yasterday, I received
re
Yesterday, I received

使用 r 命令后,无需按 ESC 即可完成编辑,会自动返回命令模式。

6. 删除文本

6.1 删除单词

dw 命令从光标位置删除到单词末尾,也可用于删除单词的一部分。例如,删除 Today, I'll start start putting together 中的一个 start

Today, I'll start
start putting together
dw
Today, I'll -
start putting together

若要保留单词间的空格,可使用 de 命令。还可以使用 db 向后删除单词, d$ d0 删除到行尾或行首。

6.2 删除行

dd 命令删除当前整行。例如,删除示例文件中的前两行:

Today, I'll start
putting together a
written plan
that shows different
2dd
written plan
that shows different

在“哑终端”或波特率低于1200的终端上,行删除的显示不同,删除的行位置会用 @ 符号占位,直到屏幕重新绘制。 D 命令从光标位置删除到行尾,且不能使用数字前缀。

6.3 删除字符

x 命令删除光标所在的字符, X 命令删除光标前的字符。可以在命令前加数字来删除指定数量的字符,如 5X 删除光标左侧的五个字符。

graph LR
    A[开始编辑] --> B{选择操作}
    B --> |插入| C[使用i命令插入文本]
    B --> |更改| D{选择更改对象}
    D --> |单词| E[使用cw等命令更改单词]
    D --> |行| F[使用cc或C命令更改行]
    D --> |字符| G[使用r命令更改字符]
    B --> |删除| H{选择删除对象}
    H --> |单词| I[使用dw等命令删除单词]
    H --> |行| J[使用dd或D命令删除行]
    H --> |字符| K[使用x或X命令删除字符]
    B --> |移动| L[使用d和p命令移动文本]
    B --> |复制| M[使用y和p命令复制文本]

通过以上操作,你可以在Vi编辑器中高效地进行文本编辑。在实际使用中,建议多进行练习,熟练掌握这些命令,以提高编辑效率。

7. 移动文本

移动文本就像“剪切和粘贴”操作,通过删除文本并将其放置到文件的其他位置。每次删除一个文本块时,该删除内容会临时保存在一个缓冲区中。可以移动到文件的另一个位置,使用 put 命令将文本放置到新位置。这个命令序列对行的操作比对单词更有用。
- p 命令:将保存或删除的文本(在缓冲区中)放置在光标位置之后。
- P 命令(大写):将文本放置在光标之前。

如果删除一行或多行, p 会将删除的文本放置在光标下方的新行;如果删除一个单词, p 会将删除的文本放置在光标所在行的后面。

例如,要移动文件中的第四行文本,先删除该行:

Today, I'll start
putting together a
plan for documenting
the Alcuin product
that shows
dd
Today, I'll start
putting together a
plan for documenting
that shows

然后使用 p 将删除的行恢复到光标下方的下一行:

Today,
I'll start
putting together a
plan for documenting
that shows
p
Today,
I'll start
putting together a
plan for documenting
that shows
the Alcuin product

还可以使用 xp (删除字符并放置在光标之后)来交换两个字母。例如,在单词 mvoe 中,将光标置于 v 上,按下 x 然后 p ,可将字母 vo 交换。

需要注意的是,删除文本后,必须在进行下一个更改或删除命令之前恢复它。如果进行了影响缓冲区的其他编辑,删除的文本将丢失。只要不进行新的编辑,就可以反复使用 put 命令。

8. 复制文本

使用 y (yank)和 p (put)命令可以复制文件中的部分文本并将其放置到其他位置。 yank 命令用于将文本的副本保存到缓冲区,而不改变原始文本,然后使用 put 命令将副本放置到文件的其他位置。

yank 可以与任何移动命令结合使用,如 yw y$ 4yy yank 最常用于一行或多行文本,因为复制和粘贴一个单词通常比直接插入该单词花费的时间更长。

例如,要复制五行文本:

on the Alcuin product.
Yesterday, I received
the product demo
and other materials
that you sent me.
5YY
on the Alcuin product.
Yesterday, I received
the product demo
and other materials
that you sent me.

要放置复制的文本,将光标移动到想要放置的位置,使用 p 命令将其插入到当前行下方,或使用 P 命令将其插入到当前行上方。

that you sent me.
P
that you sent me.
on the Alcuin product.
Yesterday, I received
the product demo
and other materials
that you sent me.

删除和复制使用相同的缓冲区,每次新的删除或复制操作都会替换缓冲区中的先前内容。后续可以使用 put 命令最多召回九次之前的复制或删除操作。

9. 使用上一个命令

每个输入的命令都会临时保存在一个缓冲区中,直到输入下一个命令。如果多次执行相同的编辑命令,可以使用 . (点)来重复上一个命令,从而节省时间。要重复命令,将光标置于屏幕上的任意位置,按下 . 即可重复上一个命令(如插入或删除)。还可以使用数字参数,如 2. 来多次重复上一个命令。

例如,要删除文件中的某一行:

Yesterday, I received
the product demo.
other materials
dd
Yesterday, I received
the product demo.
.
Yesterday, I received

在某些版本的 Vi 中, CTRL - @ "e )命令重复上一个插入或追加命令,而 . 命令重复上一个更改文本的命令,包括删除或更改命令。

如果操作出错,可以撤销上一个命令。将光标置于屏幕上的任意位置,按下 u 即可撤销上一个命令(如插入或删除)。 U 命令(大写)可以撤销一行上的所有编辑,但前提是光标必须保持在该行上,一旦离开该行,就不能再使用 U 命令。

the product demo.
U
Yesterday, I received
the product demo.
other materials

总结

Vi 编辑器提供了丰富的文本编辑功能,通过各种命令可以高效地进行文本的插入、更改、删除、移动和复制操作。以下是对这些操作的总结表格:
| 操作类型 | 命令 | 说明 |
| ---- | ---- | ---- |
| 插入 | i | 在光标前插入文本 |
| 更改 | cw cc C r | 分别用于更改单词、整行、从光标到行尾、单个字符 |
| 删除 | dw dd D x X | 分别用于删除单词、整行、从光标到行尾、光标所在字符、光标前字符 |
| 移动 | d 然后 p | 删除并放置文本到新位置 |
| 复制 | y 然后 p | 复制文本到新位置 |
| 重复命令 | . | 重复上一个命令 |
| 撤销命令 | u U | 分别撤销上一个命令、一行上的所有编辑 |

graph LR
    A[文本编辑操作] --> B[插入]
    A --> C[更改]
    A --> D[删除]
    A --> E[移动]
    A --> F[复制]
    A --> G[重复命令]
    A --> H[撤销命令]
    B --> B1[i命令]
    C --> C1[cw命令]
    C --> C2[cc命令]
    C --> C3[C命令]
    C --> C4[r命令]
    D --> D1[dw命令]
    D --> D2[dd命令]
    D --> D3[D命令]
    D --> D4[x命令]
    D --> D5[X命令]
    E --> E1[d和p命令]
    F --> F1[y和p命令]
    G --> G1[.命令]
    H --> H1[u命令]
    H --> H2[U命令]

通过不断练习和熟练掌握这些命令,你可以在 Vi 编辑器中更加高效地完成各种文本编辑任务,提高工作效率。希望这些内容对你在使用 Vi 编辑器时有所帮助。

一、 内容概要 本资源提供了一个完整的“金属板材压弯成型”非线性仿真案例,基于ABAQUS/Explicit或Standard求解器完成。案例精确模拟了模具(凸模、凹模)与金属板材之间的接触、压合过程,直至板材发生塑性弯曲成型。 模型特点:包含完整的模具-工件装配体,定义了刚体约束、通用接触(或面面接触)及摩擦系数。 材料定义:金属板材采用弹塑性材料模型,定义了完整的屈服强度、塑性应变等真实应力-应变数据。 关键结果:提供了成型过程中的板材应力(Mises应力)、塑性应变(PE)、厚度变化​ 云图,以及模具受力(接触力)曲线,完整再现了压弯工艺的力学状态。 二、 适用人群 CAE工程师/工艺工程师:从事钣金冲压、模具设计、金属成型工艺分析与优化的专业人员。 高校师生:学习ABAQUS非线性分析、金属塑性成形理论,或从事相关课题研究的硕士/博士生。 结构设计工程师:需要评估钣金件可制造性(DFM)或预测成型回弹的设计人员。 三、 使用场景及目标 学习目标: 掌握在ABAQUS中设置金属塑性成形仿真的全流程,包括材料定义、复杂接触设置、边界条件与载荷步。 学习如何调试和分析大变形、非线性接触问题的收敛性技巧。 理解如何通过仿真预测成型缺陷(如减薄、破裂、回弹),并与理论或实验进行对比验证。 应用价值:本案例的建模方法与分析思路可直接应用于汽车覆盖件、电器外壳、结构件等钣金产品的冲压工艺开发与模具设计优化,减少试模成本。 四、 其他说明 资源包内包含参数化的INP文件、CAE模型文件、材料数据参考及一份简要的操作要点说明文档。INP文件便于用户直接修改关键参数(如压边力、摩擦系数、行程)进行自主研究。 建议使用ABAQUS 2022或更高版本打开。显式动力学分析(如用Explicit)对计算资源有一定要求。 本案例为教学与工程参考目的提供,用户可基于此框架进行拓展,应用于V型弯曲
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值