Vi 文本编辑器
来源:互联网 发布:钢琴小提琴合奏 知乎 编辑:程序博客网 时间:2024/06/10 18:54
vi:Visual Interface (可视化接口)属于全屏文本模式化的编辑器
vim:vi improved 高级版vi,以后直接使用vim就可以了。
vi的模式解释
- 编辑模式:以怎样的方式进入另外2个模式、可以直接复制、粘贴,等编辑的命令的操作
- 输入模式:正常输入文本,正常打字,编写程序的地方
- 命令行模式(末行模式):就是在整个屏幕最下面输入指令的地方,也是vim的内置的命令行接口,执行vim内置命令
vi模式的切换
- 编辑模式 —-进入—> 输入模式,并选择光标停放的位置
- i:在当前光标所在处进入输入模式
- a:………………………….的后面
- I:在当前光标所在行的行首输入
- A:…………………………… 行尾
- o:在当前光标所在行的下方新增一个空白行输入;
- O:…………………………… .上方
- 输入模式 —–退回—->编辑模式
- ESC键
- 编辑模式 —-进入—> 末行模式;
- :(按键:shift+:)
- 末行模式—-退回—>编辑模式;
- ESC,ESC(执行命令的情况下2下,一般情况一下即可)
vi模式的基本操作
vim的使用格式
- vim [选项] /路径/文件名 // 文件不存为创建,存在为打开
vim退出
- :w —>保存不退出
- :q! –>不保存并退出
- :wq –>保存并退出
- :x –>保存并退出
- 编辑模式:ZZ,保存退出
vim 文件打开操作
多文件跳转
- :next 下一个
- :prev 上一个
- :first 第一个
- :last 最后一个
- :qall 退出所有的文件
- :wqall:修改并退出多个文件
分隔窗口打开多个文件
- -o:水平分隔
ctrl+w,左右箭头 ;在多个窗口间切换 - -O:垂直分隔
ctrl+W,上下箭头
// 打开多个文件vim 文件1 文件2 文件3 文件4 // 分割窗口打开多个文件vim -o 文件1 文件2 文件3 文件4 //↑ 在分割窗口中多个文件间切换,必须在编辑模式同时按下ctrl+W ,松开然后按上下或左右键。这样才能在多个窗口间切换
打开文件后在光标直接定位在第#号行首
- +#:打开文件后光标在第#号行首
- +:打开文件后光标在最后一行
// 打开文件1后光标定位在第30行vim +30 文件名1// 打开文件后光标定位在文件的最后一行vim + 文件名
光标的移动
单字符移动:
- h:左
- l:右
- j:下
- k:上
可以和数字组合让字符移动
用法:先按下数字在按下上下左右其中之一,例如//要求向下移动3行操作:按下数字 3 ,然后在按下字母 j 。顺序很重要,不要求同时按下//要求向右移动5个字符的位置操作:按下数字 5 ,然后在按下字母 l 。顺序很重要,不要求同时按下
单词间移动:
- w:调至下一个单词的词首
- b:当前或前一个的词首
- e:当前或下一个词的词尾
行内移动:
- 0:绝对行首
- ^:第一个非空白字符
- $:绝对行尾
句子间移动:
- ):上一句
- (: 下一句
段落间移动:
- }:上一段
- {:下一段
行间移动:
- #G:第几行
- G:最后一行
编辑操作
删除:#带表此处输入数字
- x:删除光标处所在处的字符
- #x:删除光标所在处开始向后的第#个字符串
-d:结合各个光标移动方式删除,删除的内容就是光标所在位置到移动结束时所在的位置,中间这些都会被删除 - dd:删除一行
- #dd:删除所在行后的#行
- #x:删除光标所在处开始向后的第#个字符串
r:替换光标所在处的字符
- 一次只替换一个
在光标所在位置,在编辑模式下,按下r,然后按下任意一个字符,光标所在处的字符会被替换成任意一个输入的字符,同理 按下3,在按r,在输入任意字符,任意字符就会替换光标所在处的往后的3个字符为,刚才输入的任意字符
c:改变
- cc :改变删除一行
- #cc:改变所在行后的#行
- 跟d一样操作,不同之处在于删除之后进入输入模式
y:yank,复制
- 跟d一样操作
p:paste 粘贴
- 复制或删除的是整行
p:当前行的下一行
P:当前行的上一行 - 复制或删除的为非整行,或者是个单词
p:粘贴在光标所在字符的后面
P: 粘贴在光标所在字符的前面
撤销编辑
- u:undo
#u:最近50次操作
撤销此前的撤销操作
- ctrl+r:
重复执行此前的命令:(常用)
.
末行模式下(命令模式下):范围定界
结合其他方式使用的,给其他方式界定范围的。比如表达意思可以是,删除从10行到19行的东西。行为:删除+范围 10行到19行。
复制 第10行到其下面4行的东西。行为:复制+范围 第10行到其下面4行的东西。
- 使用解释
- start,end:start开始,end结束
- . :表示当前行
- $ : 表示最后一行
- /pat1/,/pat2/:起始处为光标所在行
10,19 //从第10行开始,到底19行结束 10,+4 //从第10行开始,到往后走4行结束 .,+5 // 从当前行,到往后走5行结束 .,$ // 当前行,到最后一样 .,$-2 //倒数第3行 /in/,/int // 从第一次出现字符 in 开始 ,到第一处出现字符int为止 中间的信息
- 结合范围定界的使用方式
//删除.,$d //.,$是范围定界后面直接跟d删除行为。中间没有空格,然后点回车 /in/,/int/d // 从第一次出现字符 in 开始 ,到第一处出现字符int为止 中间的信息都删除。是从光标所在行的起始为止开始搜索
查看类操作
翻屏:
ctrl+f:向文件尾部翻一屏 ctrl+b:向文件首部翻一屏 ctrl+d:向文件尾部翻半屏 ctrl+u:向文件首部翻半屏 Enter:下一行 k :上一行
查找:
/keyword //从文件首部往文件尾部查找 ?keyword // 从文件尾部往文件首部查找 n: N: 支持正则表达式 :set nohlsearch 关闭高亮显示,对当前shell有效
/r..t // 找这个文件中r开头t结尾,中间跟着任意2个字符
vim可视化模式:
选中某个区域或某些字符
- 在编辑模式下,按下v ,移动光标选中,按下编辑类的命令进行对应操作
- v:按光标走过的区域选择
- V:选择矩形块
分割当前窗口:
- Ctrl+w, s
- Ctrl+w, v
在命令行模式下一些操作
命令行模式下的第一个字符命令都是 : 而且所有功能的取消方法:set no(功能命令)
窗口属性的定义:
:set nu :显示行号
- :set nonu :取消行号
:set ai :自动缩进
:set noai :取消自动缩进
:set ic :区分大小写
- :set noic :取消区分大小
显示对应的括号:意思:就是每个括号都有一个对应的另一半,当光标在括号的其中一半显示时,另一半与之对应的括号会一起高亮显示
- :set sm (show match)
- :set nosm
- :set sm (show match)
语法高亮:
- :syntax on
- :syntax off :取消语法高亮
搜索高亮:
- :set hlsearch
- :set nohlsearch :取消搜索高亮
- :set hlsearch
vim的配置文件:只要把上面的配置命令,直接写入下面对应的文件保存即可
全局:/etc/vimrc (只有管理员可以定义)
个人:~/.vimrc (隐藏文件)
查找替换:查找范围内的符合条件的内容,替换成新的内容
:地址定界s/查找模式/替换为的内容/gi
g:全局替换
i:不区分大小写
:地址定界s@查找模式@替换为的内容@gi :下面示例3讲解
例:// 从当前行到往后面+9行把所有的mount替换成大写MOUNT。注意:实际上每行如果有多个匹配的到的只替换每行的第一个mount:.,+9s/mount/MOUNT/ 例:// 从当前行到往后面+9行把所有的mount替换成大写MOUNT。注意:如果想全部替换后面g:.,+9s/mount/MOUNT/g例3:如果想把文件内容中的/bin/true替换成大写的/bin/true .这时候/作为替换的特殊字符,不得不面对转义这样的事情。这是时候可以/可以@代替避免转义。如下:.,+19s@/bin/true@/BIN/TURE@g例子:利用正则表达式,替换文件中空白开头的#号字符,为什么都没有:1,+9s@[[:space:]]\{1,\}#@@g
&:用于在替换为的内容部分中引用前面匹配到的所有内容。多次引用还是用\1\2\3这样的正则表达式
// 行首没有#的全部加上#。&在这里的意思是查找到全部内容被引用了,#&:就是#后面+被引用的内容=被匹配的内容全部加上#号:1,30s@^[^#].*@#&@g
vi使用手册有一本500多页的使用手册,书名未知。
0 0
- 屏幕文本编辑器Vi
- 屏幕文本编辑器Vi
- 全屏幕文本编辑器vi
- Vim/Vi文本编辑器
- VI文本编辑器
- 文本编辑器vim/vi
- 文本编辑器vi
- Centos vi 文本编辑器
- 文本编辑器VI/VIM
- 6.Vi文本编辑器
- Vi、VIM文本编辑器
- vi文本编辑器
- VI文本编辑器
- VI文本编辑器
- VI文本编辑器
- Linux vi --文本编辑器
- Vim/Vi文本编辑器
- vi文本编辑器
- 获取和设置大小(下)
- CSS3 transition 属性
- 利用 NetBIOS 协议名称解析及 WPAD 进行内网渗透
- 十分钟搞定SSD1963液晶屏驱动
- 原生js控制div的显示与隐藏
- Vi 文本编辑器
- Consul 多数据中心配置 MULTIPLE DATACENTERS
- JAVA中抽象类和接口的区别
- git的基础知识及简单用法
- 在Python 中获得当前路径
- 记一次DatePicker坑爹之旅
- 每次换workspace 要设置的东西 (做个有心人,其实是懒得记 哈哈)
- linphone之linphonec_main_loop分析
- Activity生命周期