vi指令說明(完整版)
.vi 的操作模式
==============
vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)
。當使用者進入 vi 後,即處在指令模式下,此刻鍵入之任何字元皆被視為
指令。在此模式下可進行刪除、修改等動作。若要輸入資料,則需進入輸入
模式。
.輸入模式
=========
如何進入輸入模式
a (append) 由游標之後加入資料。
A 由該行之末加入資料。
i (insert) 由游標之前加入資料。
I 由該行之首加入資料。
o (open) 新增一行於該行之下供輸入資料之用。
O 新增一行於該行之上供輸入資料之用。
如何離開輸入模式
《ESC》 結束輸入模式。
.指令模式
=========
游標之移動
h 向左移一個字元。
j 向上移一個字元。
k 向下移一個字元。
l 向右移一個字元。
0 移至該行之首
$ 移至該行之末。
^ 移至該行的第一個字元處。
H 移至視窗的第一列。
M 移至視窗的中間那列。
L 移至視窗的最後一列。
G 移至該檔案的最後一列。
+ 移至下一列的第一個字元處。
- 移至上一列的第一個字元處。
( 移至該句之首。 (註一)
) 移至該句之末。
{ 移至該段落之首。 (註二)
} 移至該段落之末。
nG 移至該檔案的第 n 列。
n+ 移至游標所在位置之後的第 n 列。
n- 移至游標所在位置之前的第 n 列。
<Ctrl><g> 會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標
所在行號佔總行號之百分比。
註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。
註二:段落(paragraph)在vi中是指以空白行隔開的文字。
.視窗的移動
===========
<Ctrl><f> 視窗往下捲一頁。
<Ctrl><b> 視窗往上捲一頁。
<Ctrl><d> 視窗往下捲半頁。
<Ctrl><u> 視窗往上捲半頁。
<Ctrl><e> 視窗往下捲一行。
<Ctrl><y> 視窗往上捲一行。
.刪除、複製及修改指令介紹 (此單元較少使用)
=========================
d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
Operator + Scope = command
(運算子) (範圍)
運算子:
d 刪除指令。刪除資料,但會將刪除資料複製到記憶體緩衝區。
y 將資料(字組、行列、句子或段落)複製到緩衝區。
p 放置(put)指令,與 d 和 y 配和使用。可將最後delete或yank的資
料放置於游標所在位置之行列下。
c 修改(change)指令,類似delete與insert的組和。刪除一個字組、句
子等之資料,並插入新鍵資料。
範圍:
e 由游標所在位置至該字串的最後一個字元。
w 由游標所在位置至下一個字串的第一個字元。
b 由游標所在位置至前一個字串的第一個字元。
$ 由游標所在位置至該行的最後一個字元。
0 由游標所在位置至該行的第一個字元。
) 由游標所在位置至下一個句子的第一個字元。
( 由游標所在位置至該句子的第一個字元。
{ 由游標所在位置至該段落的最後一個字元。
} 由游標所在位置至該段落的第一個字元。
整行動作
dd 刪除整行。
D 以行為單位,刪除游標後之所有字元。
cc 修改整行的內容。
yy yank整行,使游標所在該行複製到記憶體緩衝區。
.刪除與修改
===========
x 刪除游標所在該字元。
X 刪除游標所在之前一字元。
dd 刪除游標所在該行。
r 用接於此指令之後的字元取代(replace)游標所在字元。
如: ra 將游標所在字元以 a 取代之。
R 進入取代狀態,直到《ESC》為止。
s 刪除游標所在之字元,並進入輸入模式直到《ESC》。
S 刪除游標所在之該行資料,並進入輸入模式直到《ESC》。
.搬移與複製
==========
利用 delete 及 put 指令可完成資料搬移之目的。
利用 yank 及 put 指令可完成資料複製之目的。
yank 和 delete 可將指定的資料複製到記憶體緩衝區,而藉由 put 指令
可將緩衝區內的資料複製到螢幕上。
例:
搬移一行 ‧在該行執行 dd
‧游標移至目的地
‧執行 p
複製一行 ‧在該行執行 yy
‧游標移至目的地
‧執行 p
.指令重複
=========
在指令模式中,可在指令前面加入一數字 n,則此指令動作會重複執行 n
次。
例:
刪除10行 ‧10dd
複製10行 ‧10yy
‧游標移至目的地
‧p
指標往下移10行 ‧10j
.取消前一動作(Undo)
===================
即復原執行上一指令前的內容。
u 恢復最後一個指令之前的結果。
U 恢復游標該行之所有改變。
.搜尋
=====
在vi中可搜尋某一字串,使游標移至該處。
/字串 往游標之後尋找該字串。
?字串 往游標之前尋找該字串。
n 往下繼續尋找下一個相同的字串。
N 往上繼續尋找下一個相同的字串。
.資料的連接
===========
J 句子的連接。將游標所在之下一行連接至游標該行的後面。
若某行資料太長亦可將其分成兩行,只要將游標移至分開點,進入輸入模式
(可利用 a、i等指令)再按《Enter》即可。
.環境的設定
===========
:set nu 設定資料的行號。
:set nonu 取消行號設定。
:set ai 自動內縮。
:set noai 取消自動內縮。
自動內縮(automatic indentation)
在編輯文件或程式時,有時會遇到需要內縮的狀況,『:set ai』即提供自
動內縮的功能,用下例解釋之:
‧vi test
‧(進入編輯視窗後)
this is the test for auto indent
《Tab》start indent ← :set ai (設自動內縮)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自動內縮)
the end of auto indent.
‧註:<Ctrl><d> 可刪除《Tab》字元。
.ex指令
=======
讀寫資料
:w 將緩衝區的資料寫入磁碟中。
:10,20w test 將第10行至第20行的資料寫入test檔案。
:10,20w>>test 將第10行至第20行的資料加在test檔案之後。
:r test 將test檔案的資料讀入編輯緩衝區的最後。
刪除、複製及搬移
:10,20d 刪除第10行至第20行的資料。
:10d 刪除第10行的資料。
:%d 刪除整個編輯緩衝區。
:10,20co30 將第10行至第20行的資料複製至第30行之後。
:10,20mo30 將第10行至第20行的資料搬移至第30行之後。
字串搜尋與取代
s(substitute)指令可搜尋某行列範圍。
g(global)指令則可搜尋整個編輯緩衝區的資料。
s指令以第一個滿足該條件的字串為其取代的對象,若該行有數個滿足該條
件的字串,也僅能取代第一個,若想取代所有的字串則需加上g參數。
:1,$s/old/new/g 將檔案中所有的『old』改成『new』。
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。
:%s/old/new/g 將編輯緩衝區中所有的『old』改成『new』。
.恢復編輯時被中斷的檔案
=======================
在編輯過程中,若系統當掉或連線中斷,而緩衝區的資料並還未
被寫回磁碟時,當再度回到系統,執行下列指令即可回復中斷前
的檔案內容。
%vi -r filename
.編輯多個檔案
=============
vi亦提供同時編輯多個檔案的功能,方法如下:
%vi file1 file2 ..
當第一個檔案編修完成後,可利用『:w』將該緩衝區存檔,而後
再利用 『:n』載入下一個檔案。
分享到:
相关推荐
### vi编辑器指令详解 #### 一、基本概念与模式切换 **vi编辑器**是Unix及类Unix操作系统上的一款非常强大的文本编辑器。它具备三种主要的工作模式:命令模式(Command Mode)、插入模式(Insert Mode)以及末行...
《Intel手册完整版三册全》是一套针对底层技术人员至关重要的参考资料,涵盖了Intel处理器的详细技术规格、指令集以及系统架构等内容。这套手册是理解、优化和开发基于Intel处理器的系统与软件的基础。 第一册...
本主题主要关注Linux中的文本编辑器VI,文件权限管理,以及管道(Pipe)和常用指令的使用。下面我们将详细探讨这些知识点。 **1. VI编辑器** VI(Visual Editor)是Linux和类Unix系统中的一个强大文本编辑器。它...
- 对于初学者,建议通过实践和查阅手册逐步熟悉Vi的各种命令,同时可以尝试使用增强版的Vim(Vi IMproved),它提供了更多的特性。 Vi编辑器虽然初看起来有些复杂,但随着使用次数的增加,你会发现它的强大和效率...
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他...
为什么要学 vim linux 有大量的配置文件,所以 linux 的文本处理工具也是比较多的,常用的有 less vi head tail cat grep sed awk …. 。其中编辑一些配置文件,及查看日志时... 指令列模式 graph LR A[一般模式] --
本资料"Linux指令大全(完整)"包含了一份详尽的Linux命令集合,对于深入理解和运用Linux系统至关重要。 Linux指令是通过命令行接口与操作系统交互的方式,它们提供了丰富的功能,从基本的文件管理到复杂的系统控制...
Linux指令大全(完整篇)是Linux系统用户必备的参考资料,它涵盖了从基本操作到高级管理的所有命令,旨在帮助用户高效地在Linux环境中工作。本文将详细介绍这个资源中的关键知识点,并提供一些常用命令的解释和使用...
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在...
在Linux世界中,Vi(Visual Editor)和Vim(Vi Improved)是两款极其重要的文本编辑器,尤其对于系统管理员和开发者来说,它们是不可或缺的工具。本节将深入讲解5.6版本的Vi与Vim编辑器的环境配置,以及如何在Ubuntu...
这个压缩包文件“Linux命令大全(完整版)+小白速成+学不会来找我”提供了一套全面的Linux命令教程,旨在帮助初学者快速上手,并为面试做准备。 首先,让我们了解Linux的基础知识。Linux是一种类Unix操作系统,它...
标题中的“指令输出系统_labview_connectedvgs_”暗示了这是一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)开发的控制系统,与Connected VGS(可能是Virtual Graphic System的连接版)...
本资源“liunx操作指令.rar”包含了《跟阿铭学Linux(第二版).chm》这本书,这本书可能是对Linux初学者非常有价值的教程。现在,我们将对一些基础且重要的Linux命令进行详细讲解。 1. **ls**:列出目录内容。`ls`...
以下是对"Linux命令完整版"这个主题的详细说明: 1. **基础命令**: - `ls`:列出目录内容。 - `cd`:切换当前工作目录。 - `pwd`:显示当前工作目录路径。 - `mkdir`:创建新目录。 - `rm`:删除文件或目录...
首先,文档中提到了LabVIEW驱动程序的安装指令,这是确保开发环境能够正确加载和使用Fluke设备的前提条件。通常,安装程序会涉及将DLL文件放置在指定目录,以及可能的注册表配置。 文档接下来介绍了Fluke Palette...
### 嵌入式Linux系统开发技术详解--基于ARM(完整版) #### 一、概述 **嵌入式系统**是指用于执行特定功能的计算机系统,通常被集成在其他产品中,例如汽车、手机等。这类系统具有体积小、功耗低、可靠性高等特点。 ...
1. **VI(虚拟仪器)**:这是LabVIEW的程序模块,可能是一个完整的打印解决方案,包括串口初始化、指令生成和发送等功能。 2. **.ctl文件**:这可能是LabVIEW的控制面板文件,用于配置和显示串口设置。 3. **.txt或....
3. **setup**:通常是一个配置工具,用于设置系统的各种参数和功能,具体取决于发行版。 4. **ps**:报告当前系统中运行的进程状态,例如`ps aux`显示所有进程的详细信息。 5. **service**:管理和控制系统服务,...