每日命令之vim简单使用
vim:即visual interface improved,是从 vi 发展出来的一个功能强大的文本编辑器,下面来介绍下vim命令的一些简单使用方法。
vim属于模式化编辑器,有以下三种工作模式:编辑模式(默认)、输入模式和末行模式 。
我们用vim打开一个或多个文本文件时,使用格式为:vim [options] file file2...,常用的选项有:
+#:表示打开文本文件后,让光标定位到第#行行首
+/pattern : 表示打开文本文件后,让光标定位到第一个被pattern匹配到的行的行首
-o: 表示打开多个文本文件后,将窗口水平分割
-O: 表示打开多个文本文件后,将窗口竖直分割
一、模式间转换:
编辑模式 ==> 输入模式:
i:insert,在当前光标所在字符的前方转入输入模式;
a: append,附加,在当前光标所在字符的后方转入输入模式;
I:当前行行首转入输入模式
A:当前行行尾转入输入模式
o: 在当前行下方新建一个空白行并转入输入模式
O: 在当前行上方新建一个空白行并转入输入模式
输入模式 ==> 编辑模式:按 ESC 键
编辑模式 ==> 末行模式:按 : 键
末行模式 ==> 编辑模式:按一下或多下 ESC 键
二、vim光标跳转
1、字符间跳转:h(左), j(下), k(上), l(右),当我们在命令前面加#(表示具体数字)则表示一次移动#个字符。
2、单词间跳转:w(下一个单词的词首)、e(当前或下一个单词的词尾)、b(当前或前一个单词的词首),同理在命令前加#,则表示一次移动#个单词
3、行内移动:0(绝对行首)、^(本行行首第一个非空白字符)、$(绝对行尾)
4、行间移动:#G(跳转至第#行)、G(尾行)
三、vim命令:
1、字符编辑(编辑模式下)
x: 删除光标所在处的字符
#COMMAND: 删除光标所在处及向右的#个字符
d: 删除,结合光标跳转字符,实现多字符删除
d$: 删除当前光标所在处至行尾
d^: 删除当前光标所在处至行首
dw:删除当前光标所在处至下一个单词词首
de:删除当前光标所在处至当前或下一个单词词尾
db:删除当前光标所在处至当前或上一个单词词首
dd: 删除行
#dd: 删除#行,从当前光标所在行开始,删除#行
y: 复制(yank),结合光标跳转字符,实现多字符复制,使用方法同d命令
p: 粘贴(paste)
p:缓冲区存储如果整行,则粘贴于当前行下方;否则,则粘贴于当前光标所在处的后方
P:缓冲区存储如果整行,则粘贴于当前行上方;否则,则粘贴于当前光标所在处的前方
c: 改变(change),结合光标跳转字符,实现多字符修改,使用方法同d命令,并转入输入模式
r: 替换(replace),替换单个字符
u: 撤销,撤销上次操作,#u则表示撤销#次前操作
ctrl+r: 取消上次的撤销操作
.:重复执行上次操作
2、关闭文件:(末行模式下)
:q! 保不存退出
:w! 强制保存(通常没有写权限时只有root用户才能执行此类操作)
:wq 保存退出
:x 保存退出
:w /path/to/somefile 文件另存
3、查找和替换:(末行模式下)
字符查找:
/pattern:从上往下根据pattern到文本中查找
n:查看下一个匹配到的内容
N:查看上一个匹配到的内容
?pattern:从下往上根据pattern到文本中查找
n:查看下一个匹配到的内容
N:查看上一个匹配到的内容
字符查找替换:使用方法:s/要查找的内容/替换为的内容/(ig),要查找的内容可以使用模式,替换为的内容不能除后向引用以外的元字符,分隔符可按需要指定:s@@@, s###
i: 忽略字符大小写
g: 全局替换
后向引用:如果要引用“要找到的内容”匹配到的所有内容,可使用&直接引用,而无需在模式中加\(\);如果只引用“要找到的内容”中的部分模式匹配到的内容,则仍需使用正则表达式的分组;而后使用\1, \2,...进行引用
四、设置内置变量(末行模式下)
在末行模式下使用set命令定义某内置变量的值为所需要的值;如果我们需要让这些设置永久生效,那么我们需要将设置保存到配置文件中:/etc/vimrc或者~/.vimrc
:set nu 显示行号
:set nonu 取消显示行号
:set sm 开启高亮和括号匹配功能
:set nosm 取消高亮和括号匹配功能
:set ai 自动缩进
:set noai 取消自动缩进
:set ic 忽略字符大小写
:set noic 不忽略字符大小写
:set hlsearch 搜索结果显示高亮
:set nohlsearch 关闭搜索结果显示高亮
:syntax on 开启语法高亮功能
:syntax off 关闭语法高亮功能
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。