VI学习笔记
来源:互联网 发布:手机淘宝修改评价链接 编辑:程序博客网 时间:2024/04/27 19:37
光标移动命令
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首 屏幕翻滚类命令
Ctrl+u:向文档首翻半屏
Ctrl+d:向文档尾翻半屏
Ctrl+f:向文档尾翻一屏
Ctrl+b:向文档首翻一屏
Ctrl+g:显示行列信息
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
0或|:回到行首
^:回到行首第一个个字符
$:到行尾最后一个字符。
{:回到段落开始
}:回到段落结尾
(:到句子开头
):到句子结尾
V:高亮当前行,光标移动可以高亮多行
v:高亮光标处到行尾,,光标移动可以高亮多行。选中后按“=”可以自动缩进
Ctrl+v:高亮块(列方向高亮)
g+d:高亮当前字,并可以使用n在高亮字中跳跃
G:移动到文件结尾
通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。
编辑命令
i :在光标前插入
I :在当前行首插入
J:两行合并
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
P:将缓存信息粘贴到当前行上一行
p:将缓存信息粘贴到当前行下一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
cw:修改当前词(删除并进入编辑模式)
ncw或nCW:修改指定数目的字
dw:删除当前词,不进入编辑模式
nCC:修改指定数目的行 ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
nx:删除当前光标后的n个字符
xp:左右字符互换
Ctrl+u:删除输入方式下所输入的文本 /pattern:从光标开始处向文档尾搜索pattern
?pattern:从光标开始处向文档首搜索pattern
/pattern:从光标开始向文档尾部搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
U:恢复全部操作
u:恢复每次操作
yy或Y:复制当前行
.:(注意此命令为点)重复执行上一个命令
命令行输入
:q
:!
:s/p1/p2/g:将当前行中任何p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中任何p1均用p2替代
:%s/p1/p2/g:将全文范围内将p1替换为p2
:g/p1/s//p2/g:将文档中任何p1均用p2替换 all:列出任何选项配置情况
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文档
:e filename:打开文档filename进行编辑
:x:保存当前文档并退出
:zz:保存当前文档并退出
:!command:执行shell命令command
:n1,n2 w!command:将文档中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文档内容作为command的输入
:r!command:将命令command的输出结果放到当前行
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?能够是个字母,也能够是个数字
:tabe:新建一个标签页
:tabn 或tabp:切换到下(或上)一个标签页
:close:关闭当前标签页
:qa:退出说有标签页
:make:直接编译工程,如果有问题按回车会定位问题位置
:set
all:显示全部信息
term:配置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文档时若没保存当前文档则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“/”的特别字符
nowrapscan:禁止vi在搜索到达文档两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
VI命令参数
vi filename :打开或新建文档,并将光标置于第一行首
vi +n filename :打开文档,并将光标置于第n行首
vi + filename :打开文档,并将光标置于最后一行首
vi +/pattern filename:打开文档,并将光标置于第一个和pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文档,依次进行编辑 h :光标左移一个字符
Vi多窗口编辑
vim可以在多分割窗口(multi-split-screen )环境下编辑多个文件。想了解有关详情可输入:help usr_08.txt。
要分割屏幕显示多个不同文件,在vi命令提示符后输入:
:split another-file 上下分割窗口
:vsplit another-file 左右分割窗口
:res n 将当前窗口设置为n行。
:only 只保留当前窗口
:new 打开新窗口
切换窗口 Ctrl + w 按一次加上下键可以自己选择切换方向,按两次则从上到下自动遍历窗口
扩大窗口 Ctrl-w + 扩大窗口
缩小窗口 Ctrl-w - 缩小当前编辑窗口
保存部分内容
可以保存当前编辑的文件的部分内容,方法是按 Escape,然后输入 :
start,
endw
file,其中的 start 是当前文件中要保存的第一行,end 是要保存的最后一行,w
表示希望写到另一个文件中(或者覆盖现有的文件),file 是指定的部分要保存到的文件。对于最后一行,可以使用 $
表示文件的末尾。可以在 w
后面使用两个大于号(>>
)表示希望把内容附加到文件中而不是覆盖文件。清单 12 中的示例把第 6 到第 9 行(含)附加到文件 /tmp/newfile 中。
Vi标签使用
1。打 开 新 标 签 页
启动 Vim 时用 "vim -p filename ..."
:tabe[dit] *:tabe* *:tabedit* *:tabnew*
:tabnew 在当前标签页之后打开带空窗口的新标签页。
:tabe[dit] [++opt] [+cmd] {file}
:tabnew [++opt] [+cmd] {file}
打开新标签页并编辑 {file},其余和 |:edit| 类同。
:tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind*
打开新标签页并编辑 'path' 里的 {file},其余和 |:find| 类同。
{仅当编译时加入 |+file_in_path| 特性才有效}
:[count]tab {cmd} *:tab*
执行 {cmd},如果它打开新窗口,使用新标签页代替。不能用于
|:diffsplit|、|:diffpatch|、|:execute| 和 |:normal|。
如果省略 [count],标签页出现在当前标签页之后。如果指定
[count],新标签页出现在第 [count] 个标签页之后。":0tab cmd" 使
新标签页出现在第一个位置。例如:
:tab split " 在新标签页上打开当前缓冲区
:tab help gt " 打开标签页显示 "gt" 的帮助
2。关 闭 标 签 页
*:tabc* *:tabclose*
:tabc[lose][!] 关闭当前标签页。
如下情形使该命令失败:
- 屏幕上只有一个标签页。 *E784*
- 如果 'hidden' 没有置位,没有 [!],缓冲区有修改,而且该缓冲区
没有其它窗口。
缓冲区的修改不会被写入,也不会丢失。所以这可以说是个 "安全的"
命令。
:tabc[lose][!] {count}
关闭第 {count} 个标签页。失败条件和上面的 ':tabclose' 相同。
*:tabo* *:tabonly*
:tabo[nly][!] 关闭所有其它的标签页。
如果置位 'hidden' 选项,所有关闭窗口的缓冲区成为隐藏。
如果没有置位 'hidden' 但置位 'autowrite' 选项,写回修改过的缓
冲区。否则,包含修改过的缓冲区的窗口不会被删除。但如果给出
[!],这些窗口成为隐藏。修改过的缓冲区永远不会被放弃,所以永远
不被丢失这些改动。
3。切 换 到 另 一 个 标 签 页
:tabn[ext] *:tabn* *:tabnext* *gt*
<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>*
gt *i_CTRL-<PageDown>* *i_<C-PageDown>*
转到下一个标签页。最后一个标签页则回绕到第一个。
:tabn[ext] {count}
{count}<C-PageDown>
{count}gt 转到第 {count} 个标签页。首个标签页编号为 1。
:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN*
:tabN[ext] *:tabNext* *CTRL-<PageUp>*
<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>*
gT 转到前一个标签页。首个标签页则回绕到最后一个。
:tabp[revious] {count}
:tabN[ext] {count}
{count}<C-PageUp>
{count}gT 转到前面 {count} 个标签页。首个标签页则回绕到最后一个。
:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind*
:tabfir[st] 转到第一个标签页。
*:tabl* *:tablast*
:tabl[ast] 转到最后一个标签页。
4。其它命令:
*:tabs*
:tabs 列出标签页和它们包含的窗口。
当前窗口显示 ">"。
修改过的缓冲区显示 "+"。
5。重 新 排 列 标 签 页:
:tabm[ove] [N] *:tabm* *:tabmove*
把当前标签页移到第 N 个标签页之后。用 0 使当前标签页成为首个标
签页。如果没有 N,当前标签页成为最后一个。
6。循 环 遍 历 所 有 标 签 页:
*:tabd* *:tabdo*
:tabd[o] {cmd} 对每个标签页执行 {cmd}。
大致相当于:
:tabfirst
:{cmd}
:tabnext
:{cmd}
等等
只对每个标签页的当前窗口进行操作。如果某个标签页出现错误,不再
继续访问其余的标签页。
最后一个标签页 (或任何出错的标签页) 成为当前标签页。
{cmd} 可以包含 '|' 以连接多个命令。
{cmd} 不能打开标签页、关闭标签页或重排标签页。
{Vi 无此功能} {仅当编译时加入 |+listcmds| 特性才有效}
另见 |:windo|、|:argdo| 和 |:bufdo|。
- vi 学习笔记
- VI学习笔记
- vi学习笔记
- Linux vi学习笔记
- vi学习笔记
- vi/vim学习笔记
- vi学习笔记
- vi 学习笔记之一
- vi 学习笔记
- Linux-vi学习笔记
- vi学习笔记
- vi编辑器学习笔记
- vim/vi学习笔记(第一章 the vi text editpr)
- linux下vi编辑器学习笔记
- Linux 变干边学 学习笔记之 Vi常用命令
- linux的vi编辑器学习笔记
- linux学习笔记——vi
- 学习笔记之vi文本显示行号
- 简单学生管理系统中用到的一些知识点
- IStock 设计
- 一点一点学ASP.NET之基础概念——HttpModule (二)
- VS2008在资源管理器中按右键添加ASP文件夹时没有App_Code选项,自行新增后放在里面的类文件不能调用!
- MFC Dialog 屏蔽Enter和Esc按下时自动退出程序
- VI学习笔记
- php遇到乱码问题
- CImg1.4.6版本与前版本的不同导致的问题
- 25 net tools
- 水晶报表自动补空行,补格线
- 谷歌官方发布Android3.0抢先体验,吹捧“全息“用户界面
- 配置管理器: 指定的设备实例句柄和目前设备不一致
- 进程可创建的最大连接数
- 1.7 --1.8 SDK-RMIOS