文本编辑
yyp:复制一行并粘贴
yw是拷贝一个单词
y 和d 可以直接拷贝或者剪切选定的内容
v为可视模式,可以选定多行。选定多行之后,可以用yy或者dd等等进行拷贝和剪切。
u可以撤销上一步操作, ctrl+r可以恢复
0到行首,$到行尾
可以zf进行折叠, 用zo打开折叠,也可以方向键向右打开折叠,zc 关闭折叠(只要在被折叠的块中的任一个语句就行)
:!命令行 执行一条外部命令
5yy 表示拷贝光标以下 5 行.
5dd 表示删除光标以下 5 行.
y2fa 表示拷贝从当前光标到光标后面的第二个a字符之间的内容.
:12,24y 表示拷贝第12行到第24行之间的内容.
:12,y 表示拷贝第12行到光标所在行之间的内容.
:,24y 表示拷贝光标所在行到第24行之间的内容. 删除类似.
x 每按一次,删除光标所在位置的“后面”一个字符。
#x 例如,「6x」表示删除光标所在位置的“后面”6个字符。
X 大写的X,每按一次,删除光标所在位置的“前面”一个字符。
#X例如,「20X」表示删除光标所在位置的“前面”20个字符。
替换
替换是 vi 的强项, 因为可以用正规表达式来匹配字符串.以下提供几个例子.
:s/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb
:s/\
/bb/g 将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词
:%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/^/#/ 将从12行到23行的行首加入 # 字符
:%s= *$== 将所有行尾多余的空格删除
:g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除.
%s /\/ are /g 单词is 用are替换
注释多行
:3.10 s/^/#/g 注释3到10行
:3,10 s/^#//g 撤销注释
整篇首行插入字符
%s/^/ChinaUnix/
1,$s/^/ChinaUnix/
大写变小写
:%s/.*/\L&/
:%s/.*/\U&/
按「ctrl」+「b」:屏幕往“后”移动一页。
按「ctrl」+「f」:屏幕往“前”移动一页。
按「ctrl」+「u」:屏幕往“后”移动半页。
按「ctrl」+「d」:屏幕往“前”移动半页。
列出行号:
输入「set nu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行,
「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行
删除全文内容
通用的做法是
:%d
或者
:1,$ d
删除文件中的所有空行:
1.使用awk方法如下:
[root@dg ~]# cat t.txt | awk -F '' '{if($1!=null) print $0}'
2.sed方法如下:
[root@dg ~]# sed '/^$/d' t.txt
3.awk方法如下:
[root@dg ~]# awk 'NF' t.txt
4.vim中删除空行如下:
:g/^$/d
使用vim的比较模式打开两个文件:
vim -d file1 file2
或
vimdiff file1 file2
如果已经打开了文件file1,再打开另一个文件file2进行比较:
:vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。
如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
分别在两个窗口里面输入命令:
:diffthis
如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
:diffupdate
定位到不同点:
[c 跳到前一个不同点
]c 跳到后一个不同点
在窗口间跳转:
ctrl-w w 跳到下一个窗口
ctrl-w h 跳到左侧窗口
ctrl-w l 跳到右侧窗口
ctrl-w j 跳到下方的窗口
ctrl-w k 跳到上方的窗口
合并文档:
dp 将差异点的当前文档内容应用到另一文档(diff put)
do 将差异点的另一文档的内容拷贝到当前文档(diff get)
上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
:set diffopt=context:3
可以用简单的折叠命令来临时展开被折叠的相同的文本行:
zo (folding open, z这个字母看上去比较像折叠的纸)
然后可以用下列命令来重新折叠:
zc (folding close)
vim重定向命令输出
:help redir
"常用的
:redir @a> "重定向到粘贴版a
:redir @+> "重定向到系统粘贴版
:redir > ~/tmp/a.txt "重定向到文件
"结束重定向
:redir END
这个功能非常实用,有的时候经常希望把命令输出(譬如::version, :cl的输出)Copy到外面来。
====
阅读(997) | 评论(0) | 转发(0) |