文章目录
-
- 一 .vim三种模式
-
- 二. 命令模式
- 1.命令模式查找
- 2.命令模式光标跳转
- 3.命令模式翻屏操作
- 4.字符编辑:
- 5.替换命令(r, replace)
- 6.删除命令:
- 7.复制命令(y, yank)
- 8.粘贴命令(p, paste):
- 9.撤消更改
- 10.常用操作
- 三. 扩展命令模式
-
- vim寄存器
- 四. 使用多个“窗口”
-
- 五.可视化模式(了解)
- 1.按下y键进行复制(不要按yy)
- 2.在多行前面加相同的注释
- 3.快速删除
- 六. 扩展命令模式:
- 七. 特殊用法
- 查看当前已经打开的文件名称
- vim配置(重点)
- 1.Vim代码着色
- 2.Vim计算器的使用
- 3.以二进制方式打开文件
- 4.异常处理
- 5.别名机制 (实用)alias
- 6.删除文件中的行首的空白字符
- 例子
简介
vi: Visual Interface,文本编辑器
文本:ASCII, Unicode
文本编辑种类:
行编辑器: sed
全屏编辑器:nano, vi
vim - Vi Improved
其他编辑器:
gedit 一个简单的图形编辑器
gvim 一个Vim编辑器的图形版本
vim相对于vi颜色丰富
最小化安装没有vim
打开文件
-b 二进制方式打开文件
-d 比较多个文件 (前提是用vim'打开多个文件)
-m 指定打开文件
-e file或者ex file 直接进入ex模式
用法1: vim 文件名 默认进入命令模式
# vim /tmp/passwd
用法2: vim +数字 打开指定文件,并且光标移动到指定行
# vim +3 /tmp/passwd 默认光标在第三行
用法3: vim +/关键字 (打开文件,并且高亮显示关键字)
vim +/shutdown /tmp/passwd (进入文件,并且高亮显示shutdown)
一 .vim三种模式
三种主要模式:
命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
插入(Insert)或编辑模式:修改文本
扩展命令(extended command )模式:保存,退出等
Esc键 退出当前模式
Esc键 Esc键 总是返回到命令模式
模式转换
命令模式 --> 插入模式
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
插入模式 --------> 命令模式
ESC
命令模式 --------> 扩展命令模式
.
扩展命令模式 --------> 命令模式
ESC,enter
关闭文件
扩展命令模式:
:q 退出
:q! 强制退出,丢弃做出的修改
:wq 保存退出
:x 保存退出
命令模式
ZZ 保存退出
ZQ 不保存退出
特殊用法:
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出(可以谢明令)
:set ff=unix 将windows文件转换为unix格式
二. 命令模式
1.命令模式查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
2.命令模式光标跳转
字符间跳转:
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳转由#指定的个数的字符
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H:页首 M:页中间行 L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
行首行尾跳转:
^ 跳转至行首的第一个非空白字符
0 跳转至行首
$ 跳转至行尾
行间移动:
#G 或者扩展命令模式下:# 跳转至由第#行 G 最后一行
1G, gg 第一行
句间移动:
) 下一句 ( 上一句
段落间移动:
} 下一段 { 上一段
3.命令模式翻屏操作
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
4.字符编辑:
x 删除光标处的字符
#x 删除光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
J 删除当前行后的换行符
5.替换命令(r, replace)
r 替换光标所在处的字符
R 切换成REPLACE模式
6.删除命令:
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw
de
db
#COMMAND
dd:删除光标所在的行
#dd
多行删除
D:从当前光标位置一直删除到行尾,等同于d$
7.复制命令(y, yank)
: y 复制,行为相似于d命令
y$
y0
y^
ye
yw
yb
#COMMAND
yy:复制行
#yy 复制多行
Y:复制整行
8.粘贴命令(p, paste):
p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘
贴至当前光标所在处的后面
P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘
贴至当前光标所在处的前面
9.撤消更改
u 撤销最近的更改
#u 撤销之前多次更改
U 撤消光标落在这行后所有此行的更改
- r 重做最后的“撤消”更改
. 重复前一个操作
#. 重复前一个操作#次
10.常用操作
100iwang [ESC] 粘贴“wang”100次
Shift+3
高亮显示 相当于#键
y 复制、d 删除、gU 变大写、gu 变小写
例如: 0y$ 命令
0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符
di" 光标在”“之间,则删除”“之间的内容
yi( 光标在()之间,则复制()之间的内容
vi[ 光标在[]之间,则选中[]之间的内容
dtx 删除字符直到遇见光标之后的第一个 x 字符
ytx 复制字符直到遇见光标之后的第一个 x 字符
三. 扩展命令模式
1.地址定界
# 具体第#行,例如2表示第2行
#,# 从左侧#表示起始行,到右侧#表示结尾行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数
2,+3 表示2到5行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文, 相当于1,$
/pattern/ 匹配pattern的行
/pat1/,/pat2/ 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/
/pat/,$
使用方式:后跟一个编辑命令
dy
w file: 将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容
2.查找替换
使用“&”引用前面查找时查找到的整个内容
/ 表示搜索
可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符
这个意思是你把/sbin/nolgin 替换为 /bin/bash
#是分隔符 g是全文替换
/关键字 n往下匹配; N往上匹配(在命名模式下)
/^name #查找以name开始的行
/name$ #查找以name结束的行
/^name #查找^name字符串
s表示本行
%s表示所有行
修饰符:
i 忽略大小写
g 全局替换,默认情况下,每一行只替换第一次出现
gc 全局替换,每次**替换前询问**
:s/root/ROOT
替换当前行所有的root
:7s/shutdown/SHUTDOWN/g
只替换第7行的内容
:n,$s/name/title/
#替换第 n 行开始到最后一行中每一行 的第一个 name 为 title
:n,$s/name/title/g
#替换第 n 行开始到最后一行中每一 行所有 name 为 title
: %s /root/ROOT
全文搜索,替换每一行匹配到的第一个关键字
: %s /root/ROOT/g
全文搜索,替换每一行所匹配所有的关键字
:%s /root/ROOT/gc
交互式替换
:%s /\/sbin\/nologin /\/bin\/bash/
\转移符
把后面的字符转义普通的字符
这个是把/sbin/nologin转换成/bin/bash
:s#name/#title/#
替换当前行第一个 name/ 为 title/
:%s+/oradata/apras/+/user01/apras1+ (+ 作为替换符号): /oradata/apras/替换成/user01/apras1/
vim寄存器
有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间
共享
寄存器名称a,b,…,z,格式:“寄存器 放在数字和命令之间
如:3"tyy 表示复制3行到t寄存器中
"tp 表示将t寄存器内容粘贴
未指定,将使用无命名寄存器
10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。
当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不
同会话间共享
四. 使用多个“窗口”
1.多文件分割
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
在窗口间切换:Ctrl+w, Arrow
2.单文件窗口分割
Ctrl+w,s:split, 水平分割
Ctrl+w,v:vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall 退出
Ctrl+w ,方向键 想那个窗口跳转(也可以按两次ctrl+w可以实现窗口跳转)
五.可视化模式(了解)
v键进入可视化模式
按键Ctrl+v(可视块“一个字符”) 或v(可执行),
Shift+v(可视行“整整一行”)
然后按下“上下左右方向”键选中需要赋值的块区,
1.按下y键进行复制(不要按yy)
,最后按下p加粘贴
退出可是模式Esc
2.在多行前面加相同的注释
按键Ctrl+v(可视块“一个字符”)
安向下的键(选中所要注释的行)
然后在行首输入I(大i) 输入内容
最后按esc键就ok了
3.快速删除
“注释”同上2只不过在选中后按d键
六. 扩展命令模式:
当前vim进程有效
(1) 行号
显示:set number,简写 set nu
取消显示:set nonumber, 简写 set nonu
(2) 忽略字符的大小写
启用:set ignorecase,简写 set ic
不忽略:set noic
(3) 自动缩进
启用:set autoindent,简写 set ai
禁用:set noai
(4) 复制保留格式
启用:set paste
禁用:set nopaste
(5) 显示Tab和换行符 ^I 和$显示
启用:set list
禁用:set nolist
(6) 高亮搜索
启用:set hlsearch
禁用:set nohlsearch
(7) 语法高亮
启用:syntax on
禁用:syntax off
(8) 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写 set ff=dos|unix
(9) 设置文本宽度
set textwidth=65 (vim only)
set wrapmargin=15
(10) 设置光标所在行的标识线
启用:set cursorline,简写 set cul
禁用:set nocursorline
(11)设置tab缩进字符
默认为4个字符
set ts=4 设置tab缩进为4个字符
七. 特殊用法
查看当前已经打开的文件名称
:files
%a表示active正在打开的文件,
#表示上一个打开的文件
切换文件方式
- 需要指定切换文件名称则可以输入
:open 文件名 - 切换上一个文件和下一个文件(以打开vim时输入的为准)
:bn 切换到下一个back next
:bp 切换到上一个back prev
vim配置(重点)
1.在文件打开时在末行模式下输入的配置(临时配制)
2.个人配置文件(在自己的家目录下面有一个.vimrc)–不一定存在(可以自己创建)
3.全局配置文件(自带的,在/etc/vimrc)
1.Vim代码着色
案例:创建一个简单的c语言小程序
如何控制着色:(临时的操作)
显示:输入 :syntax on syntax语法
关闭显示:输入: syntax off
2.Vim计算器的使用
当在编辑文件时需要计算一些东西,所以就得使用计算器
首先进入编辑模式
按下按键Ctrl +r(会出现一个”)然后输入=号------->光标会变到最后一行然后输入计算的内容----->最后回车
3.以二进制方式打开文件
vim –b binaryfile
扩展命令模式下,利用xxd命令转换为可读的十六进制
:%!xxd
插入模式下,编辑二进制文件
扩展命令模式下,利用xxd命令转换回二进制
:%!xxd -r
4.异常处理
异常退出(没有正常的wq或者断点)
会出现一个 .文件名.swp
的交换文件
则只需要将交换文件删除掉即可
如果打开多个窗口以最后一个保存文件的时间为准
O(pen for Read-Only) :打开或只读文件。
E(dit) :用正常方式打开要编辑的文件,并不会载入暂存文件的内容,这很容易出现两个用户相互改变对方的文件问题
R(ecover):加载暂存文件的内容(A终端正在编辑,并且没有保存,然后在新打开的终端中vim进入时点R
照样可以看到A终端正在编辑的内容)
D(elete):如果你确定暂存文件是没有用的,则可以删除
Q(uit):不进行任何操作,回到命令行
A(bort) :忽略这个编辑行为,和Q类似
5.别名机制 (实用)alias
创建一些属于我们自己自定义的命令
例如:windows下面cls清屏操作
在linux下可以自己创造一个这种命令
别名机制依靠一个别名映射文件
在当前用户家目录下有 .bashrc
在.bashrc 下面创建一个新的命令
设置完新创造的 需要重新登陆账号
6.删除文件中的行首的空白字符
%s@^[[:space:]]*@@
例子
1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
按键Ctrl+v(可视块“一个字符”)
安向下的键(选中所要注释的行)
然后在行首输入I(大i) 输入内容
最后按esc键就ok了
1、在vim中设置tab缩进为4个字符
2、复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
3、删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)