曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6349|回复: 5
打印 上一主题 下一主题

VI/VIM 键盘图

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2009-4-2 18:41:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
沙发
 楼主| 发表于 2009-6-7 16:27:22 | 只看该作者

VI 光标的移动

0 : 移动到当前的行首
$ : 移动到当前的行尾
nw: 右移 n 个字, n 为数字,光标属于第 n 个字的字首。w 是 forword(向前)中的字母 w 。
w:  右移 1 个字符,光标处于下一个字的字首。
nb: 左移 n 个字,n 为数字,光标处于第 n 个字的字首;b 是 back(向后)的首字母。
b:  左移 1 个字,光标处于下一个字的字首
(:  移到本句的句首,如果已经处于本句的句首,则移动到前一句的句首。
):  移动到下一句的句首
{:  移动到本段的段首,如果已经处于本段的段首,则移动到前一段的段首
}:  移动到下一段的段首
1G: 移动到文件首行的行首
nG: 移动到文件第 n 行的行首
<ctrl>+g: 报告光标所处的位置,位置信息显示在 vi 的最后一行。
遇到 "."  , "?" , "!" Vi认为是一句的结束。Vi 以空白行来作为段的开始或结束

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
板凳
 楼主| 发表于 2009-6-7 21:13:21 | 只看该作者

VI 文本的删除

x : 删除光标所在位置的一个字符
nx : 删除从光标开始的 n 个字符
dw : 删除光标所在位置的一个字,d 是 delete 的首字符
ndw : 删除从光标开始的 n 个字
db : 删除从光标开始的前 n 个字
ndb : 删除从光标开始的前 n 个字
d0 : 删除从光标前一个字符到行首的所有字符
d$ : 删除从光标所在字符到行尾的所有字符
dd : 删除当前行
ndd : 删除从当前行开始的 n 行
d( : 删除从当前字符开始到句首的所有字符
d): 删除从当前字符开始到句尾的所有字符
d{ : 删除从当前字符开始到段首的所有字符
d} : 删除从当前字符开始到段尾的所有字符

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
地板
 楼主| 发表于 2009-6-7 21:43:56 | 只看该作者

VI 文本的查找和替换

查找
      ?string<enter>: 在命令行下输入 ? 和要查找的字符串如"string"并回车即可。
      n : 向文件头方向重复前一个查找命令
      N : 向文件尾方向重复前一个查找命令
替换
      :s/oldstr/newstr : 在当前行用 newstr 替换 oldstr ,只替换一次 s 是 substitue 的首字母
      :s/oldstr/newstr/g : 在当前行用 newstr 替换所有的 oldstr 字符串
      1,10/s/oldstr/newstr/g: 在第 1~10 行用字符串 newstr 替换所有的 oldstr 字符串
      1,$s/s/oldstr/newstr/g: 在整个文件中用字符串 newstr 替换所有的 oldstr 字符串

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
5#
 楼主| 发表于 2009-6-7 21:54:40 | 只看该作者

VI 文本的复制和粘贴

yw : 将光标所在位置到字尾的字符复制到缓冲区中, y 是 yank 的首字母.
nyw : 将光标所在位置开始的 n 个字符复制到缓冲区中, n 为数字.
yb : 从光标开始向左赋值一个字.
nyb : 从光标开始向左赋值 n 个字
y0 : 复制从光标前一个字符到行首的所有字符
y$ : 复制从光标开始到行末的所有字符
yy : 复制当前行,即光标所在行
nyy : 复制从当前行开始的 n 行, n 为数字
p : 在光标所在位置的后面插入复制的文本, p 是 paste 的首字母
np : 在光标所在位置的后面插入复制的文本,共插入复制的 n 行
nP : 在光标所在位置的前面插入复制的文本,共插入复制的 n 行

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
6#
 楼主| 发表于 2009-7-8 12:19:43 | 只看该作者

VI 一些操作

:%s/r//g 删除DOS方式的回车^M
:%s= *$== 删除行尾空白
:%s/^(.*)n1/1$/ 删除重复行
:%s/^.pdf/new.pdf/ 只是删除第一个pdf
:%s/<!--_.-->// 又是删除多行注释(咦?为什么要说「又」呢?)
:g/^s*$/d 删除所有空行 :g/^s*$/d 删除所有空行
:g!/^dd/d 删除不含字符串'dd'的行
:v/^dd/d 同上 (译释:v == g!,就是不匹配!)
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行

:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。
d0 删至行首。
d$ 删至行尾。
ndd 删除当前行及其后 n-1 行。
x 或 X 删除一个字符。
Ctrl+u 删除输入方式下所输入的文本。
^R 恢复u的操作
J 把下一行合并到当前行尾
V 选择一行
^V 按下^V后即可进行矩形的选择了
aw 选择单词
iw 内部单词(无空格)
as 选择句子
is 选择句子(无空格)
ap 选择段落
ip 选择段落(无空格)
D 删除到行尾
x,y 删除与复制包含高亮区
dl 删除当前字符(与x命令功能相同)
d0 删除到某一行的开始位置
d^ 删除到某一行的第一个字符位置(不包括空格或TAB字符)
dw 删除到某个单词的结尾位置
d3w 删除到第三个单词的结尾位置
db 删除到某个单词的开始位置
dW 删除到某个以空格作为分隔符的单词的结尾位置
dB 删除到某个以空格作为分隔符的单词的开始位置
d7B 删除到前面7个以空格作为分隔符的单词的开始位置
d) 删除到某个语句的结尾位置
d4) 删除到第四个语句的结尾位置
d( 删除到某个语句的开始位置
d) 删除到某个段落的结尾位置
d{ 删除到某个段落的开始位置
d7{ 删除到当前段落起始位置之前的第7个段落位置
dd 删除当前行
d/text 删除从文本中出现“text”中所指定字样的位置,
一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
dtc 删除当前行直到下一个字符“c”所出现位置之间的内容
D 删除到某一行的结尾
d$ 删除到某一行的结尾
5dd 删除从当前行所开始的5行内容
dL 删除直到屏幕上最后一行的内容
dH 删除直到屏幕上第一行的内容
dG 删除直到工作缓存区结尾的内容
d1G 删除直到工作缓存区开始的内容

....

上面这段我要用的是这个地方
:g/^s*$/d 删除所有空行

使用vi打开文本文件,然后进入命令模式输入 g/^s*$/d
这个时候要等待,它现在已经在处理文件了,最后保存即可,第一次用这个功能,不懂!下完命令后都没有等待,然后还以为自己哪个地方出错了呢。
感受到很强大的功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-19 14:57 , Processed in 0.064883 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表