首页 > 系统相关 >Linux Vim(vi) 常使用命令快捷键合集

Linux Vim(vi) 常使用命令快捷键合集

时间:2022-10-20 14:37:46浏览次数:72  
标签:字符 删除 vi 模式 vim 命令 Linux 快捷键 光标

vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能,下面看一下具体的命令。

相关文档:Linux vi/vim 编辑器教程

1、'/'查找历史记录查看

指令模式(command mode)下,按一下'/'键,然后按上下方向键,就可以查看之前的查找记录。如果想要执行上一次的查找,命令模式下输入':',进入末行模式(Last line Mode),然后输入'/'回车即可执行。

2、打开vim(vi)

1)直接在终端输入 vim或vi命令即可打开

[root@mylab]# vim

2)用vim(vi)创建或编辑一个文件

[root@mylab]# vim filename

3、文件命令

1)打开一个文件

[root@mylab]# vim filename

2)同时打开多个文件

[root@mylab]# vim file1 file2 file3 ...

3)在vim编辑器中打开一个新文件

:open file

4)在vim编辑器中使用新窗口中打开文件

:split file

5)在vim编辑器中切换到下一个文件

:bn

6)在vim编辑器中切换到上一个文件

:bp

7)查看当前打开的文件,如果文件正在被编辑则文件名会用方括号([])括起来

:args

8)在vim编辑器中打开远端文件,例如,ftp或共享目录

:e ftp://192.168.11.56/vim.txt
:e \\drive\test\vim.txt

4、模式切换

命令模式(command mode or normal mode):在其它模下按ESC或Ctrl + [即可进入该模式。
插入模式(insert mode): 在命令模式下,按i键 即可进入该模式。
可视模式(visual mode):在命令模式下,按v或V进入可视模式,该模式下通过改变光标位置选中文字。

5、插入模式

插入模式有6种插入方式,如下表:

 

 

 

i

插入到当前光标所在字符前面。

I

插入到行首。

a

插入到当前光标所在字符后面。

A

插入到行尾。

o

在当前行下面新建一行,插入到新建行的行首。

O

在当前行上面新建一行,插入到新建行的行首。

 

 

6、vim(vi)查找

1):顺序查找,在命令模式下,按 / 键后面 输入要查找的内容,按n键查找下一个,按N键查找上一个。
2)?:反序查看,在命令模式下,按?键后面 输入要查找的内容,按n键查找下一个,按N键查找上一个。它与'/'的查找方向是相反的。
3)设置忽略大小写

:set ignorecase
:set noignorecase

5)如果搜索的单词比较长,可以通过#*查找上一个或下一个匹配的单词
6)设置搜索结果高亮显示

:set hlsearch
:set nohlsearch

:nohlsearch 关闭当前本次搜索结果高亮显示,下次重新搜索还是会高亮显示搜索结果。

7)循环搜索(默认值)

:set wrapscan 
:set nowrapscan #只搜索一次

8)输入关键字的时候高亮显示

:set incsearch 
:set noincsearch 

7、vim(vi)替换

1)替换单个字符

r在命令模式下,按一下r键,再按一下其它键将光标所在字符替换成所按的字符。

2)替换多个字符

 

 

 

:s/oldstr/newstr/

将当前行中第一次匹配的oldstr替换成newstr。

:s/oldstr/newstr/g

 将当前行中所有匹配的oldstr替换成newstr。 

:%s/oldstr/newstr/ 

将所有行中每行第一次匹配的oldstr替换成newstr。

:%s/oldstr/newstr/g 

将所有行中所有匹配的oldstr替换成newstr。 

:10,20s/^/ /g

 将10到20行每行的行首加4个空格。

 ddp 在命令模式下,

交换当前行和下一行的位置。

 

 

8、光标移动

1)简单移动(上下左右移动光标)

 

 

 

h

向左移动光标

l

向右移动光标

k

向上移动光标

j

向下移动光标

 

 

上面几个按键可以与数安组合比如,20j就是光标向下移动20行,5h就是光标向左移动5个字符。vim中有许多命令可以与数字组比如 10x就是删除10个字符

2)移动到单词的首字母

w 在命令模式下,移动到下一个单词的首字母
b 在命令模式下,移动到上一个单词的首字母

3)移动到单词的尾字母

 

 

 

e

在命令模式下,光标移动到下一个单词的尾字母

E 

在命令模式下,光标移动到下一个单词的尾字母(忽略标点符号)

ge 

在命令模式下,光标移动到上一个单词的尾字母

^ 

在命令模式下,光标移动到第一个非空白字符

在命令模式下, 光标移动到第一个空白字符

$ 

在命令模式下,光标移动到行尾,前面可以加数字,

比如,3$就是每3行的行尾

gg 

在命令模式下, 光标移动到文件的第一行的行首,

也可以用=[[

在命令模式下, 光标移动到文件的最后一行的行首,

也可以用=]]

f 

在命令模式下,在光标所在行查找字符,

比如,按下fx光标就移动到当前行第一次匹配的x字母上,

3fd光标就移动到第3次匹配的d字母上

f用法一样,就是查找方向是向左查找

 

 

4)移动指定行,在末行模式直接输入行号,例如,

:240 移动到光标到240行

5)屏幕滚动快捷键

 

 

 

ctrl + e 

屏幕向上滚动一行 

ctrl + y 

屏幕向下滚动一行 

ctrl + d 

屏幕向上滚动半屏 

ctrl + u 

屏幕向下滚动半屏

ctrl + f 

屏幕向上滚动一屏 

ctrl + b 

屏幕向下滚动一屏

 

 

9、撤销和恢复

u 撤销一次操作
撤销所有的行操作
ctrl + r 恢复

10、vim(vi)删除

vim(vi)中删除命令的用法如下表:

 

 

 

x 

删除当前光标所在字符

3x 

删除当前光标所在字符向后3个字符

X 

删除当前光标所在字符的前一个字符(X = dh)

dl

删除当前光标所在字符(dl = x)

dh 

删除当前光标所在字符的前一个字符

dd 

删除当前行

dj

删除上一行

dk

删除下一行

di [tag]

 删除成对出现的符号之间的内容,

例如,

di' 删除单引号之间的内容 ,

类似的还有di'di(di<di{ 

dt [tag]

 删除光标所在字符到指定的[tag]字符之间的字符,

例如,

dt" 删除当前光标所在字符

与每一个匹配的双引号之间字符,

但不删除匹配的双引号。

10d 

删除当前行开始向下10行

D 

删除光标所在字符到行尾的之间字符(D 相当于 d$)

d$ 

删除光标所在字符到行尾的之间字符

kdgg

删除当前行上面的所有行

jdG 

删除当前行下面的所有行

:1,10d

删除第1到第10行

:11,$d 

删除第11行到末尾

:1,$d 

删除所有行

删除两行之间的空白行。

如果两行之间没有空白行,

则两行合并成一行

 

 

10、复制和粘贴

vim(vi)中复制和粘贴命令的用法如下表:

 

 

 

yy

复制当前行。

nyy 

复制当前行向下n行,例如,

2yy就是复制当前行和下一行。

p

粘贴到当前光标所在行的下一行。

P

粘贴到当前光标所在行的上一行。

:1,10 co 20

复制第1行到第10行,

并且粘贴到第20行之后。

v/V

在命令模式下,按vV进入可视模式,

在使用jklh方向进行选中,最后按y进行复制。

ddp

在命令模式下,交换当前行和下一行的位置。

xp

交换当前字符和之后的字母的位置。

 

 

11、剪切

在命令模式下,按v或V进入可视模式,在使用jklh方向进行选中,最后按d进行剪切

ndd 剪切光标所在行开始向下n行
:1,10d 剪切第1行到第10行
:1,10m 20剪切第1行到第10行,并且粘贴到第20行之后

12、退出

vim(vi)中退出命令的用法如下表:

 

 

 

:wq

保存退出

ZZ

保存退出

ZQ

不保存退

:q!

忽略所有改变强制退出

:e!

丢弃所有改变打开原文件

 

 

13、窗口操作

vim(vi)中窗口相关的用法如下表:

 

 

 

:split

拆分窗口,在原来vim的窗口上新建一个窗口

:split file

在原来的vim的窗口上新建一个窗口打开或编辑文件

split

横向的分割,要想竖向拆分,则要用vsplit

ctrl + ww

光标移动到下一个窗口(可循环)

ctrl + wj

光标移动到下一个窗口(不可循环)

ctrl + wk

光标移动到上一个窗口(不可循环)

关闭光标所在窗口如下表:

 

 

:close

最后一个窗口不能使用此命令关闭

:q

退出vim,最后一个窗口用些命令退出

ZZ

保存退出

:only

关闭除了当前窗口的所有窗口

:qa

关闭所有窗口

 

 

宏录制

在命令模式下,按q键,然后在按一个键指定宏的名字,这里我就按a键,宏的名字就是a,这时录制开始,比如这时我按dd删除一行,然后按q键结束录制。@a执行刚才录制的命令,就是删除一行。

@加上宏名执行录制的宏。 @@:重复执行上次的@+宏的名字命令一次

13、在vim中运行Linux命令

:!Command Command代表Linux命令

例如,

1)调用ls命令

:!ls

2)perl脚本语法检测,以不退出vim,

:!perl -c script.pl

3)挂起vim到后台

:suspend ctrl + Z 返回vim,在终端输入fg即可

14、vim中进行代码注释

例如,

Python语言注释是用#,下面看一下加注释的方法:

:3,5s/^/#/g 注释第3行到每5行
:3,5s/^#//g取消第3行到每5行的注释
:1,$s/^/#/g 注释所有行
:%s/^/#/g注释所有行,这个更快

添加批量注释 ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I(shift+i),再插入注释符,比如"#",再按Esc,就会全部注释了。

<iframe data-google-container-id="a!3" data-google-query-id="CLL1_6iV7voCFY1aDwIdYcYGmw" data-load-complete="true" frameborder="0" height="0" id="aswift_2" marginheight="0" marginwidth="0" name="aswift_2" scrolling="no" src="https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6349629766850590&output=html&h=280&adk=1252384354&adf=3174546296&pi=t.aa~a.128779072~i.140~rp.4&w=1197&fwrn=4&fwrnh=100&lmt=1666246876&num_ads=1&rafmt=1&armr=3&sem=mc&pwprc=5072308212&ad_type=text_image&format=1197x280&url=https%3A%2F%2Fwww.cjavapy.com%2Farticle%2F184%2F&fwr=0&pra=3&rh=200&rw=1196&rpe=1&resp_fmts=3&wgl=1&fa=27&uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiMTA2LjAuNTI0OS4xMTkiLFtdLGZhbHNlLG51bGwsIjY0IixbWyJDaHJvbWl1bSIsIjEwNi4wLjUyNDkuMTE5Il0sWyJHb29nbGUgQ2hyb21lIiwiMTA2LjAuNTI0OS4xMTkiXSxbIk5vdDtBPUJyYW5kIiwiOTkuMC4wLjAiXV0sZmFsc2Vd&dt=1666246789725&bpp=2&bdt=3915&idt=2&shv=r20221018&mjsv=m202210120101&ptt=9&saldr=aa&abxe=1&cookie=ID%3Db65fb65fc59ba9bb-224b6be354d5002f%3AT%3D1658805262%3ART%3D1658805262%3AS%3DALNI_MbNm0WeetcJpP5osppQpQXZcaTPvQ&gpic=UID%3D00000815ef245437%3AT%3D1658805262%3ART%3D1666242794%3AS%3DALNI_MY422KA9TwegI9Fd0vP7BE3ayEB2A&prev_fmts=0x0%2C257x600%2C1903x1001%2C287x600%2C728x90&nras=5&correlator=2959979193827&frm=20&pv=1&ga_vid=1134004372.1658805260&ga_sid=1666246789&ga_hid=110907888&ga_fc=1&u_tz=480&u_his=1&u_h=1200&u_w=1920&u_ah=1160&u_aw=1920&u_cd=24&u_sd=1&dmc=8&adx=353&ady=8167&biw=1903&bih=1001&scr_x=0&scr_y=4193&eid=44759875%2C44759926%2C44759842%2C44774717%2C42531705%2C31070367&oid=2&pvsid=4187029676754580&tmod=544735324&uas=3&nvt=1&ref=https%3A%2F%2Fwww.cjavapy.com%2F6%2F&eae=0&fc=1408&brdim=0%2C0%2C0%2C0%2C1920%2C0%2C1920%2C1160%2C1920%2C1001&vis=1&rsz=%7C%7Cs%7C&abl=NS&fu=128&bc=31&ifi=3&uci=a!3&btvi=3&fsb=1&xpc=liXCIsWRC3&p=https%3A//www.cjavapy.com&dtd=86564" width="1197"></iframe>

批量去掉注释 ctrl+v 进入列编辑模式,横向选中列的个数(如"#"注释符号,需要选中两列),然后按d, 就会删除注释符号。

15、其它非编辑命令

执行最后的命令
set nu 或 set number 显示行号
:syntax 列出定义的语言项
:syntax 清除定义的语法规则
:syntax case match 区分大小写、int和Int将被视为不同的语法元素。
:syntax case ignore 不区分大小写、int和Int将使用相同的语法元素,并使用相同的颜色方案。

标签:字符,删除,vi,模式,vim,命令,Linux,快捷键,光标
From: https://www.cnblogs.com/fireicesion/p/16809742.html

相关文章

  • 嵌入式Linux下移植MT7601无线WIFI(网卡)驱动
    360(2代)无线WIFI(网卡)驱动移植和相关的无线工具编译安装一、前言本篇文章要的做的事情是,移植一款USBWIFI芯片的驱动到嵌入式Linux环境下,让嵌入式开发板能够通过这款USB......
  • UTM 4.0 发布:在 macOS 上优雅的使用 QEMU 虚拟化 Windows、Linux 和 macOS
    UTM4底层基于QEMU,在Mac上安全的运行Windows、Linux和macOS,同时支持Intel处理器和Apple芯片,并且是开源免费的。WindowsLinux来到Apple芯片上UTM采用Ap......
  • 病毒&windows,linux机制
    前言以病毒流氓软件为引,了解windows,linux机制流氓软件p2p软件园360全家桶等等彻底删除文件,程序程序不要用系统带的卸载找到他本身程序的卸载exe,推荐用geek会自......
  • Linux du命令:统计目录或文件所占磁盘空间大小
    du是统计目录或文件所占磁盘空间大小的命令。需要注意的是,使用"ls-r"命令是可以看到文件的大小的。但是大家会发现,在使用"ls-r"命令査看目录大小时,目录的大小多数是4KB......
  • Initialize the kubernetes basic environment configuration on CentOS 7.9
    一、InitializethekubernetesbasicenvironmentconfigurationonCentOS7.91IP修改机器克隆后IP修改,使Xshell连接上 [root@localhost~]#vi/etc/sysconfig......
  • 使用linux系统安装docker
    使用yum/apt安装ubuntu自带的源里面有docke.io,这个是Debian团队维护的docker,我们用官方团队维护的docker-ce。打开阿里云的docker-ce镜像站(https://developer.aliyun.co......
  • 自定义镜像mycentos+vim+ifconfig+jdk8
    1.在docker中拉去centos镜像dockerpullcentos:7.9.20092.编写Dockerfile文件内容FROMcentos:7.9.2009#作者信息MAINTAINERzzyy#环境变量ENVMYPATH/usr/lo......
  • vimi.diary (不能拖延症)
    2022-06-0613:25:50高铁坑点昨天19:00才收到公司要求回去公司办公的政策(按道理其实我想悄咪咪不回的,因为那个政策实在太坑了,北京海淀区回去办公(其他区居家办公),感觉没多久......
  • Linux 搬砖常用Shell-扩展
    1.基础语法1.1.循环#!/bin/bashforiin`seq110`doecho"xxxx"done1.2.SHELL中的特定变量$#传递到脚本的参数个数$*以一个单字符串显示所有向脚本传递的参数。与......
  • 解决linux系统时间不对的问题
    输入date查看时间,发现不对,相差甚远!(当前时间2019/09/0611:19)   安装ntpdate:   删除etc/localtime文件,并复制shanghai时区文件替换到这里。   然后ntp......