当前位置: 首页 > news >正文

Linux vi常用操作

vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

按ESC键可随时退出底线命令模式。

vim:

vim testxfile  
vim +#      :第#行 
vim +       :最后
vim +/what  :第一次匹配到的行的行首#关闭:
q           #末行模式(esc)
ZZ          #直接

 mode:
–编辑模式:按键具有编辑文本功能:默认打开进入编辑模式
–输入模式:按键本身意义
–末行模式:接受用户命令输入

1.转化:
 末行 <--> 编辑 <--> 输入

#编辑-->输入:i: 字符前面                  a: 字符后面                  o:光标行下,新建一行           O:光标行上,新建一行	          I:光标行首A:光标行尾#输入-->编辑:
ESC编辑-->末行:
:末行-->编辑:
ESC, ESC

2.编辑:

#字符
h: 左;j: 下;k: 上;l: 右         #单词
w: 下词首						  
e: 当前或下词尾
b: 当前或前词首#行内
0: 绝对行首
^: 行首的第一个非空白字符           
$: 绝对行尾						  #行间                            
G:文章末尾
3G:第3行
gg:文章开头翻屏                             
ctrl:f,b

3.操作

#删除&替换单个字符
x:删除光标位置字符
3x:删除光标开始3个字符
r:替换光标位置字符#删除命令 : d 
dw,2dd, d+光标组合啥的#复制粘贴&剪切(d 内存缓冲区) 	
yw,yy
p P#撤销&重做							
u   撤销
ctrl+r  重做 撤销的操作
.  重复上一步的操作

4.末行

#set:设置             
set nu     #number
set nonu   #nonumber
set readonly#/:查找         		       
/word    	#查找到行首  #如果直接在编辑下/,直接开启末行,并且找到该词前               
n,N        #下上#!:执行命令			  
!ls -l /#1,$d :命令组合 #删除1到最后行#s: 查找并替换         
1,4s/a/b/gis/str1/str2/gi:
范围:n:行号.:当前光标行+n:偏移n行$:末尾行,$-3     !(在编辑中是一行内,这里是全文)%:全文分割:临近s命令的第一个字符为边界字符:/,@,#附加:g:一行内全部替换     (默认是一行出现第一个)i:忽略大小写

http://www.lryc.cn/news/26465.html

相关文章:

  • Unicode(宽字节)、ANSI(多字节)
  • STM32实战之LED循环点亮
  • 智慧厕所智能卫生间系统有哪些功能
  • 【网络】套接字 -- TCP
  • NDK C++ map容器
  • linux(Centos)安装docker
  • Delphi 中 FireDAC 数据库连接(处理错误)
  • 算法小抄3-理解使用Python容器之列表
  • Vue3中watch的value问题
  • 【线性筛+DP】最大和
  • openpnp - configure - 丢弃(Discard)位置的设置
  • java Object 万字详解 (通俗易懂)
  • Java并发简介(什么是并发)
  • 团队API管理工具-YAPI
  • 学习记录 --- Pytorch优化器
  • Flink State 状态后端分析
  • 和年薪30W的阿里测开工程师聊过后,才知道我的工作就是打杂的...
  • C#开发的OpenRA的界面布局数据加载
  • 并查集结构
  • 全国CSM敏捷教练认证将于2023年3月25-26开班,报名从速!
  • JavaEE进阶第六课:SpringBoot ⽇志⽂件
  • 外置MOS管平均电流型LED降压恒流驱动器
  • python+pytest接口自动化(6)-请求参数格式的确定
  • 开发手册——一、编程规约_3.代码格式
  • 十七、Django-restframework之序列化器(二)
  • python GUI图形化编程-----wxpython
  • 【Python 】yyyy-MM-dd HH:mm:ss 时间格式 时间戳 全面解读超详细
  • 【C++】C++11 异常
  • 关于Thread.start()后的困惑、imap
  • qml学习之qwidget与qml结合使用并调用信号槽交互