vim


vim环境的设置
~/.viminfo  这个文件保存了我们使用vim是的一些信息;当我们在次使用vim时,更具这个文件vim就知道我们之前使用的一些信息; 
如果我们使用过vim这个文件会自动在我们的家目录中生成


d (删除 )  +要删除的行数或字母的个数(+上下方向键或者左右方向键)或


v (可视化的选择)
gU (变大写)  操作和d一样
gu (变小写)
等等



0 → 先到行头
y → 从这里开始拷贝
$ → 拷贝到本行最后一个字符
你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。


你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。


还有很多时间并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:


d (删除 )
d0 删除到行头
J(大写)将光标所在列于下一列的数据合并
d$删除到行尾
.(小点点)  重复上一次的动作
v (可视化的选择)
gU (变大写)
gu (变小写)
:n1,n2 w [filename] 将n1到n2行的内容存储到filename文件中
ZZ (保存离开)
等等
(注:可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等)


* 和 #:  匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是匹配下一个,#是匹配上一个)


================================
vim的区块选择
v字符选择,会将光标经过的地方反白
V字符选择,会将光标经过的行反白
[ctrl + v] 区块选择;
y 复制反白区
d删除反白区


r + 取代字符
:e!   将文档恢复到编辑前的状态
=================================

vim 的多档案编辑功能
vim 文件1 文件2 ……(用vim打开多个文件)
:n 编辑下一个文档
:N 编辑上一个文档
:files 列出目前这个当前vim打开的所有文件


使用vim的多文档编辑功能可以像在编辑一个文件那样在打开的多个文件中来回切换编辑;
======================================

vim 的多窗口编辑功能
当我们的一个文件非常长,需要对比文件请按后的内容时,或者时我们需要同时对比或查看两个文件的内容vim的多窗口功能就派上用场了;


vim多窗口功能键
打开一个新
:sp [filename]开启一个窗口(默认在新窗口显示当前文件),如果指定了filename 那么在新窗口显示该文件;
切换当前活动窗口
先按一下下ctrl+w,然后松开, 再然后再按下上下方向键, 将光标移到上一个或者时下一个窗口;
关闭当前活动窗口
先按一下下ctrl+w,然后松开, 再然后再按下q关闭当前窗口;
=====================================
在当前行上移动光标: 0 ^ $ f F t T , ;
0 → 到行头
^ → 到本行的第一个非blank字符
$ → 到行尾
g_ → 到本行最后一个不是blank字符的位置。
fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。
t, → 到逗号前的第一个字符。逗号可以变成其它字符。
3fa → 在当前行查找第三个出现的a。
F 和 T → 和 f 和 t 一样,只不过是相反方向。
===========
H  ---移动到屏幕上端
M ----移动到屏幕中端
L  ---移动到屏幕下端
$---移动到行尾
^--- 移动到行头
gg --移动到第一行
G  --移动到最后一行
nG---移动到第n行 (直接在命令模式下按下数字然后在按下大写的G)
: 行号 -----移动到该行
--------------------------
删除
x 删除光标所在处字符
nx  删除钢表所在处的n个字符
: n1 ,n2d 删除指定范围的行
----------------------------
复制/粘贴/剪切
yy /Y 复制当前行
nyy /nY 复制当前以下的n行
dd 剪切当前行
ndd 剪切当前行以下的n行
p 粘贴在下行 
P粘贴在上行
--------------------------
替换/取消
r 替换光标所在的字符
R 一直替换,知道按下esc
u 取消上一步操作 (可以取消n多步)
------------------------
搜索/替换
/string 
在命令模式下直接按下 " / " 然后输入要查找的内容 
找到后按 n(next) 定位下一个查找到的内容
:set ic(ignore case)  忽略大小写查找
===================================
以斜杠作为分割符支持正则(匹配项可以写正则包括\d,\w等,超级无敌强大)
:%s/old/new/g  全文替换
:n1,n2s/old/new/g 在指定范围替换


:n1,n2s/^/#/g  (注释指定范围的行,^表示行首,$表示行尾)
:n1,n2s/^\d
====================================
q不保存退出
ZZ (等同于wq, 保存退出)
wq! (如果没有文件的写权限,root和文件所有者可以强制保存退出)
====================================
:r  文件名  ( 导入其它文件的内容)
:r !要执行的命令 (把命令的输出导入到当前文件)
:r!date
====================================
在vim中执行shell命令
: ! 要执行的命令  ( : ! date )
====================================
一、使用正则表达式的命令
使用正则表达式的命令最常见的就是 / (搜索)命令。其格式如下:
/正则表达式
另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。
:s/正则表达式/替换字符串/选项
在学习正则表达式时可以利用 / 命令来练习。
二、元字符
元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行 尾、某几个字符等意义。
元字符一览
元字符
说明
.
匹配任意一个字符
[abc]
匹配方括号中的任意一个字符。可以使用-表示字符范围,
如[a-z0-9]匹 配小写字母和阿拉伯数字。
[^abc]
在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
\d
匹配阿拉伯数字,等同于[0-9]。
\D
匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
\x
匹配十六进制数字,等同于[0-9A-Fa-f]。
\X
匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。
\w
匹配单词字母,等同于[0-9A-Za-z_]。
\W
匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
\t
匹配<TAB>字符。
\s
匹配空白字符,等同于[ \t]。
\S
匹配非空白字符,等同于[^ \t]。
另外,如果要查找字符 *、.、/等,则需要在前面用 \ 符号,表示这不是元字符,而只是普通字符而已。
元字符
说明
\*
匹配 * 字符。
\.
匹配 . 字符。
\/
匹配 / 字符。
\\
匹配 \ 字符。
\[
匹配 [ 字符。
表示数量的元字符
元字符
说明
*
匹配0-任意个
\+
匹配1-任意个
\?
匹配0-1个
\{n,m}
匹配n-m个
\{n}
匹配n个
\{n,}
匹配n-任意个
\{,m}
匹配0-m个
表示位置的符号
元字符
说明
$
匹配行尾
^
匹配行首
\<
匹配单词词首
\>
匹配单词词尾
使用例
/char\s\+[A-Za-z_]\w*; " 查找所有以char开头,之后是一个以上的空白,
" 最后是一个标识符和分号
/\d\d:\d\d:\d\d " 查找如 17:37:01 格式的时间字符串
:g/^\s*$/d " 删除只有空白的行
:s/\<four\>/4/g " 将所有的four替换成4,但是fourteen中的four不替换
三、替换变量
在正规表达式中使用 \( 和 \) 符号括起正规表达式,即可在后面使用\1、\2 等变量来访问 \( 和 \) 中的内容。
使用例
/\(a\+\)[^a]\+\1 " 查找开头和结尾处a的个数相同的字符串,
" 如 aabbbaa,aaacccaaa,但是不匹配 abbbaa
:s/\(http:\/\/[-a-z\._~\+%\/]\+\)/<a href="\1">\1<\/a>/ " 将URL替换为<a href="http://url">http://url</a>的格式
:s/\(\w\+\)\s\+\(\w\+\)/\2\t\1 " 将 data1 data2 修改为 data2 data1
四、函数式
在替换命令 s/// 中可以使用函数表达式来书写替换内容,格式为
:s/替换字符串/\=函数式
在函数式中可以使用 submatch(1)、submatch(2) 等来引用 \1、\2 等的内容,而submatch(0)可以引用匹配的整个内容。
使用例
:%s/\<id\>/\=line(".") " 将各行的 id 字符串替换为行号
:%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1) " 将每行开头的单词替换为 (行号-10).单词 的格式,
" 如第11行的 word 替换成 1. word
五、与Perl正则表达式的区别
元字符的区别
Vim语法
Perl语法
含义
\+
+
1-任意个
\?
?
0-1个
\{n,m}
{n,m}
n-m个
\(和\)
(和)
分组


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值