Linux系统:VI/VIM使用指南

news/2024/7/21 15:03:33 标签: linux, vi, vim
views" class="htmledit_views">

目录

一、三种模式

二、VI/VIM的使用

1、命令模式下的常用指令

2、进入与退出插入模式的命令

3、底行命令模式的退出等操作

三、Vim的额外功能

1、命令模式下的区块选择

2、底行命令模式下的多文档编辑

3、底行命令模式下的多窗口功能

4、插入模式下的单词补全功能


一、三种模式

在使用VI/VIM编辑文件之前,我们需要了解Vim/Vi下的三种模式:

1、命令模式:用户对一个文件启动 Vim/Vi,便进入了命令模式(也称为一般模式)。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。在此模式下,可以通过命令对文件内容进行删除,复制,粘贴等行为。

2、插入模式:在命令模式下,输入i, I, o, O, a, A, r, R等任意命令,便会立即进入插入模式(也称之编辑模式),在这个模式下,我们才可以对文件进行详细的编辑,比如使用退格键,删除键,回车键等各式各样的文本编辑了。按 ESC 键回到命令模式。

3、底线命令模式:在命令模式下,输入字符【:?/】三个中的任意一个,就会来到底线命令模式下。在这个模式下,我们可以完成搜索、读取、存档、离开Vim/Vi等很多行为。按【ESC】键回到命令模式。

以图形来表示三种模式的关系:

二、VI/VIM的使用

1、命令模式下的常用指令

a)移动游标

h 、 向左方向鍵(←)游标向左移动一个字符
j 、向下方向鍵(↓)游标向下移动一个字符
k 、 向上方向鍵(↑)游标向上移动一个字符
l 、 向右方向鍵(→)游标向右移动一个字符
如果想要进行多次移动的话,比如向下移动 30 列,可以使用 "30j" 或 "30↓" 的组合按键, 也就是加上想要进行的次数,按下指令即可!
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + [u]屏幕『向上』移动半页
+游标移动到下一行的行首
-游标移动到上一行的行首
n<space>n 表示『数字』,例如 20 。按下数字后再按空格键,游标会向后移动n个字符的距离。例如 20<space> 则游标向右移动20个字符
0 或功能键[Home]数字『 0 』:移动到这一行的行首
$ 或功能鍵[End]移动到这一行的行尾
H移动到当前屏幕的最上一行的行首
M移动到当前屏幕的中间一行的行首
L移动到当前屏幕的最下一行的行首
G移动到这个文件的最后一行(常用)
nG

n 为数字。移动到这个文件的第n行。例如 20G 则会移动到这个文档的20第20行(可配合 :set nu)

相当于[:n]

gg移动到这个文件的第一行,相当于1G (常用)
n<Enter>n 为数字。游标向下移动n行(常用)

b)搜索、替换

/word向游标之下查询一个名为word的字串,回车后,就移至到其位置! (常用)
?word向游标之上查询一个名为word的字串
n这个n是英文按键。代表重复执行前一个搜寻的动作。表示下一个next
N这个N与n的方向相反,表示上一个
:n1,n2s/word1/word2/gn1 与 n2 均表示数字。表示在第 n1 与 n2 行之间寻找word1字符串,并使用word2字符串进行替换(常用)
:1,$s/word1/word2/g从第一行到最后一行搜寻word1字符串,使用word2字符串进行替换(常用) 相当于[:%s/word1/word2/g]
:1,$s/word1/word2/gc从第一行到最后一行搜寻word1字符串,使用word2字符串进行替换!并且在取代前询问使用者来确认是否需要取代!(常用)  

常用:

  :n1,n2s/^/#/g        使用#连续注释

  :n1,n2s/^#//g       取消#的连续注释

  :n1,n2s/^/\/\//g     使用//连续注释

c)删除、复制与粘贴

x, X在一行字符中,x表示向后删除一个字符(相当于del键),X为向前删除一个字符(相当于退格键) (常用)
nxn 为数字,连续向后删除n个字符。
dd刪除游标所在的那一行(常用)
nddn 为数字。删除游标所在的向下n行(常用)
:n1,n2dn1和n2都是数字,表示删除第n1行到第n2行的数据
d1G刪除游标所在到第一行的所有行数据
dG刪除游标所在到最后一行的所有行数据
d$刪除游标所在行,到该行的行尾
d00为数字 ,刪除游标所在行,到该行的行首
yy,Y复制游标所在的那一行数据(常用)
nyy,nYn 为数字。复制游标所在的向下n行(常用)
y1G复制游标所在行,到第一行的所有数据
yG复制游标所在行,到最后一行的所有数据
y0复制游标所在行,到行首的所有数据
y$复制游标所在行,到行尾的所有数据
p, Pp表示将复制的数据粘贴到游标所在行的下一行,P表示将复制的数据粘贴到游标所在行的上一行 (常用)
J将游标所在行与下一行结合成同一行
c重复删除多行数据,例如向下刪除 10 列,[ 10cj ]
u撤销前一个动作。(常用)
.小数点,重复前一个动作

 

2、进入与退出插入模式的命令

a)进入插入模式

进入插入模式后, vi 界面的左下角处会出现 [--INSERT--] 或 [--REPLACE--] 的字样。此时才能在文件里面输入字符时。

i, Ii 为从目前游标所在处插入, I 为在游标所在行的行首插入 (常用)
a, Aa 为在游标所在处的下一个字符开始插入,A为在游标所在行的行尾插入(常用)
o, Oo为英文字母。o为在游标所在的下一行插入新的一行,O为在游标所在行的上一行插入新行(常用)
r, Rr只会替换游标所在处的那一个字符;R会一直取代游标所在处的字符(常用)

b)退出插入模式

[Esc]退出插入模式,回到命令模式中(常用)

 

3、底行命令模式的退出等操作

a)底行命令模式的退出

:w将编辑的文件写入磁盘中,即保存(常用)
:w!如文件为只读时,强制写入到该文件。不过到底能不能写入,还是要看你的权限!
:q离开 vi (常用)
:q!强制退出Vi。不进行保存操作。
:wq保存并退出。若为 :wq! 則表示强制存储并退出 (常用)
ZZ如文件没有更新,则不保存离开,如有更新,就保存离开
:w [filename]将编辑的文件存储为另一个文件,相当于另存为
:r [filename]在编辑的文件中,读入另一个文件的数据。即将『filename』 这个文件的内容添加到游标之后。 
 :r  !命令导入命令执行结果
:n1,n2 w [filename]将第n1行到第n2行的数据保存到filename文件里
:! command暂时离开 vi 到指令列模式下执行 command 的显示结果。例如『:! ls /home』

感叹号 [  !] 在vi中,通常具有强制的意思

b)VIM的行号设置

:set nu显示行号
:set nonu取消行号

 

三、Vim的额外功能

1、命令模式下的区块选择

v字符选择,会将游标经过的地方选中
V行选择,会将游标经过的行选中
[Ctrl]+v列选择,可以用方形的方式选择数据
y复制选中的数据
d删除选中的数据
p将复制的数据 粘贴到游标所在处

2、底行命令模式下的多文档编辑

可以在同一个终端中同时编辑多个文件

同时编辑多个文件的语法:Vim  filename1  filename2 ..........

底行命令模式下进行下列操作:

:n编辑下一个文件
:N编辑上一个文件
:files列出当前Vim正在编辑的文件列表

注意 :切换编辑文件时一般需要加感叹号 [ ! ]

3、底行命令模式下的多窗口功能

同样在底行命令模式下,与多文档编辑不同的是,多窗口在同一个终端中分为多个窗口显示不同文件;而多文档编辑终端只显示一个文件,通过切换命令来达到多文档编辑的效果。

语法:[ :sp  filename ]

:sp [filename]开启一个新窗口,指定 filename,新窗口就显示新文件的内容,不指定名称,就是同一个文件。
[ctrl]+w+ j / [ctrl]+w+↓游标移动到下方的窗口。
[ctrl]+w+ k / [ctrl]+w+↑游标移动到上方的窗口。
[ctrl]+w+ q关闭游标所在的窗口

 

4、插入模式下的单词补全功能

当处于Vim插入模式时,我们输入某一个单词的首字母后,可以按以下组合按键

[ctrl]+x -> [ctrl]+n以正在编辑的文件里的内容文字作为关键字进行补全
[ctrl]+x -> [ctrl]+f以当前目录内的文件名作为关键字,进行补全
[ctrl]+x -> [ctrl]+o以文件类型的内置语法进行补全

参考资料:https://blog.csdn.net/Michael__One/article/details/85114886


http://www.niftyadmin.cn/n/1033225.html

相关文章

信贷管理

ECC ECC版本的信贷管理模块&#xff1a;FI-AR-CR 维护信贷账户主数据的T-code&#xff1a;FD31 FD32 (信贷主数据存储表&#xff1a;KNKK/KNKA) 处理信贷冻结的销售订单T-code&#xff1a;VKM1/VKM2/VKM3/VKM4 HANA HANA版本的信贷管理模块&#xff1a;FIN-FSCM-CR 维护信贷账…

Linux系统:文件压缩(gzip/bzip2/xz/zip)与打包(tar)命令

目录 一、常用的压缩命令 1、gzip/gunzip 2、bzip2/bunzip2 3、xz 二、打包指令tar 三、不太常用的压缩命令&#xff1a;zip/unzip 一、常用的压缩命令 在Windows系统中&#xff0c;我们就经常会使用到WinRAR这个软件&#xff0c;WinRAR是一款功能强大的压缩包管理器。压…

获取日期的周几

函数&#xff1a;DAY_IN_WEEK 表&#xff1a;t246 DATA(datum) sy-datum. DATA wotnr TYPE p.CALL FUNCTION DAY_IN_WEEKEXPORTINGdatum datumIMPORTINGwotnr wotnr.WRITE: / 当前日期,datum . WRITE: / 日历&#xff1a;天数,wotnr.SELECT * FROM t246 INTO TABLE DATA(l…

CentOS6.8安装JDK(.tar.gz/.rpm/yum)以及配置环境变量

目录 方法一&#xff1a;手动解压JDK的压缩包 方法二&#xff1a;用rpm安装 方法三&#xff1a;用yum安装 方法一&#xff1a;手动解压JDK的压缩包 1、以root身份在/usr目录下创建/jdk目录 2、通过MobaXterm软件连接虚拟机&#xff0c;上传jdk压缩包至此目录 下载压缩包并…

SAP PO

SAP PO&#xff0c;是基于SAP Net weaver平台&#xff08;SOA框架的平台&#xff09;的中间件产品&#xff0c;为企业提供一套支持SAP系统间、SAP系统与Non-Sap系统间以及Non-SAP系统间进行数据交换&#xff08;XI/PI&#xff09;和业务流程管理&#xff08;BPM&#xff09;的平…

S4 FOR HANA 变化或注意点记录(持续记录)

1. 数据结构变化 1) FI和CO直接过账的原凭证继续保留在BSEG、COEP中。同时&#xff0c;在以下每个应用组件的业务交易中&#xff0c;都会在ACDOCA表中生成新日记账&#xff1a;FI-GL、FI-AA、CO、CO-PA、CO-PC-ACT&#xff0c;同时ACDOCT视图作为科目余额的表&#xff1b; 2)…

jdbc+servlet+jsp员工信息管理(一):员工信息分页

源码https://download.csdn.net/download/qq_39192827/10912080 如何实现分页&#xff1f;分页不过是在数据库中取部分的数据显示在页面上。比如一页10行数据&#xff0c;我们要访问第一页&#xff0c;那就去数据库中取排在第1到10的数据&#xff0c;第二页不过是取11到20。所…

SOAMANAGER打不开问题

类 CL_GUI_HTML_VIEWER 方法DETACH_URL_IN_BROWSER 26行中 return_value 值 ‘X’ 设为空