分类: LINUX
2010-09-19 14:36:41
移动到指定行或指定文件位置
gg — 把光标移动到文件开头
numG/:num — 把光标移动到文件的某行
[0]G — 把光标移动到文件结尾
''(两个单引号) -回到光标跳转前的位置
$ -当前行的末尾
0/^ -当前行的开头
f/F + 字母 -向前/后移动到第一个字母处
%
-移动到与之匹配的括号上去(),{},[],<>等,后面会看到,"%"很有用。
CTRL+G -得到当前光标在文件中的位置
查找文本
/word — 在文件中查找word。
/\
/\
复制文本段
yy — 复制光标所在行
nyy — 复制从光标所在行向下n行的内容
yw — 复制光标所在的一个单词
y^ — 复制从行首到当前位置的内容
y$ — 复制到行尾为止的全部内容
yf/F + 字母 —向前/后复制到第一个“字母”处
y% — 复制到匹配括号为止的全部内容
yG — 复制由当前光标位置开始到文件结尾为止的全部内容([0]G代表结尾)
y num G- 复制当前行到指定行的内容
ygg — 复制由当前光标位置开始到文件开头为止的全部内容。
删除文本段
x — 删除光标所在的一个字符
dd — 删除光标当前行
ndd — 删除从光标所在行向下n行的内容
dw — 删除光标所在的一个单词
d^ — 删除从行首到当前位置的内容
d$ — 删除到行尾为止的全部内容
df/F + 字母 —从光标所在向 前/后 删除到第一个“字母”处
d% — 删除到匹配括号为止的全部内容
dG — 删除由当前光标位置开始到文件结尾为止的全部内容([0]G代表结尾)
d num G- 删除当前行到指定行的内容
dgg — 删除由当前光标位置开始到文件开头为止的全部内容。
更改操作符,c,其工作方式几乎与 d(删除)操作符完全一样。唯一的区别在于,c 将您置于插入模式下。下面给出了一些使用更改操作符的示例:
cw — 更改当前单词
cc — 更改整行
c$ — 更改到行尾为止的全部内容。
列操作
在Normal模式下ctrl+v,就进入列操作模式,此时可以用方向键选取操作范围,可以对多个列进行处理,比如删除,复制等。I(大写i)进入 插入模式,插入完后返回Normal模式,就会产生多行效果。
文本替换
替换是vi 的强项, 因为可以用正规表达式来匹配字符串。以下提供几个例子,很多都很有用:
:s/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为
bb
:s/\
:%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/^/#/ 将从12行到23行的行首加入 # 字符
:33,43s/^\t*\t// 将从33行到43行的行首为“\t*\t”的字符(串)删除
:%s= *$== 将所有行尾多余的空格删除
:g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除.
:%s/^/Head content/g 全局插入开头信息
:%s/$/Tail content/g 全局插入尾部信息
分屏显示:
:e filename 先关闭原有文件再打开新文件
:new filename 或 ctrl+w再s或n 以水平分屏方式打开新文件
:vnew filename 或 ctrl+w再v 以垂直分屏方式打开新文件
ctrl+w再加方向键 切换到不同的子屏幕,也可用h,i,j,k代替4个方向键
ctrl+w再c或q 关闭或退出文件(关闭屏幕)
ctrl+w再| 最大化当前分屏
ctrl+w再= 平分两个分屏
:resize n 或:resize +/-n 改变窗口大小,或者增加减少行数n
:vertical resize n 或:vertical resize +/-n
改变窗口大小,或者增加减少宽度n
录制宏和点(.)操作:
如果需要重复多次操作,则需要录制宏和重复点操作,“.”即是重复上一次命令,我们可以使用点操作来进行重复的命令,但如果重复很多次,就需要进行
宏录制。
录制宏 -
在Normal模式下,q表示进入recording模式,之后还要再加一个字母,表示该字母对应的寄存器。然后可以执行想要的操作,操作完成后,q表示
完成recording。
播放宏 number@letter - 在Normal模式下,可
以重复letter存储的内容number次,比如1000@m表示重复寄存器m的内容1000次。
Diff
1. 进入 diff 模式
vimdiff file1 file2 [file3 [file4]]
vim -d file1 file2 [file3 [file4]]
两者效果一样。Vim 将为每个文件打开一个窗口,并且就象使用 -O 参数一样,使用垂直分割。如果你
要水平分割,加上 -o 参数:
vimdiff -o file1 file2 [file3]
2. 当已在 Vim 中时,你可以用3种方式进入 diff 模式。
:diffsplit filename 对 filename 开一个新窗口。
:diffthis 使当前窗口成为 diff 窗口的一部分。也就是,设定和 "vimdiff" 同样的选项。
还有一个不常用。要垂直分割窗口,在前面加上 vertical。例如:
:vert diffs main.c
make相关
:make 编译程序,前提是目录下有Makefile文件。
:cwin/cw 打开错误窗口。
:ccl 关闭错误窗口。
:cl 列出所有错误(在有n多错误时比较方便)。
:cn 光标指向下一个错误。
:cp 光标指向上一个错误。
可以用“:h quickfix”、“:h make”、“:h makeprg”、“:h errorfile”查看其它的信息。