Vim 学习手记(二) v2 --- 基本编辑操作

 2009年12月30日 星期三 22:06 | 1711次浏览 | 0条评论

多文件编辑  ----------------------------------------------

//打开一个文件   :e filename 或者 :edit filename
//打开多个文件   :e a.txt b.txt c.txt  , 用命令 :next 编辑下一个文件, :previous 编辑上一个文件, 到第一个文件 :first , 到最后一个文件 :last
//查看列表中打开了哪些文件 :args, 往列表中添加新文件 :args a.txt  或者添加全部 txt 文件 :args *.txt
//快速切换文件 CTRL+^(6)
//如果你要从一个文件中复制出好几块独立的文本到另一个文件中去,可以使用寄存器, 把一个句子复制到名为f的寄存器中(f 意为first)    "fyas( " 是寄存器命令, f 是寄存器名,y 是命令复制 as 表示 a sentence )
//向文件中追加内容  :w >> filname
//只读方式打开文件   vim -R file ,  强制保存  :w! filename ,  强制不可保存下打开文件   vim -M file


//将别的文件添加进来
用":read {filename}" 命令. 这样被读入文件的内容就被放在当前行的后面
  ":read"命令还可接受一个行范围. 被读入的文件被放在这个范围的 最后一行上. 所以":$r patch"将会把文件"patch"的内容追加到当前文 件的最后. 如果你要把文件放在第一行的上面呢? 答案是特殊行号0

//改变大小写
全部变为大写. "gU"命令可担此任 , "gu"命令反"gU"之道而行之

 

全局标志
//以大写字母命名的标记. 它们是全局标记, 它们可以用在任何文件中比如假设我们正编辑"foo.txt". 到文件的半中间("50%")处设置一个名为F的标记(F意为foo)   50%mF

//生成备份   :set backup ,  默认生成的备份文件名将是原文件名后面附加一个"~" , 重新指定备份后缀为".bak" :set backupext=.bak

//替换
对一个指定范围的区域执行替换操作. 它的通用形式如下:
:[range]substitute/from/to/[flags]
一般使用 s/from/to/g
在这里使用正则表达式吧

flags 的意义:
c(确认)标志  在执行每个替换前要求用户确认
g标志  当前行内符合的位置都执行替换操作( 替换命令一般只在一行执行一次 )
"%"指定该命令将作用于所有行上


分隔窗口 --------------------------------------------------
//打开一个新窗口   :split , 关闭当前窗口  :close  ,  打开纵向窗口  :vsplit  ,  关闭除当前窗口外其他窗口  :only , 光闭全部窗口  :qall , 保存全部窗口中的文件  :wall
//为每个窗口打开一个文件  vim -o  1.txt 2.txt 3.txt ,  纵向版   vim -O 1.txt 2.txt 3.txt (横向是小写o 纵向是大写O)
//在新窗口中新建文件  :new  :vnew(纵向新窗口)
//CTRL-W w命令可以切换当前活动窗口, CTRL-W CTRL-W 功能相同
//为另一个文件分隔出一个窗口  :splic filename , 打开了一个高度为3行的新窗口并在其中编辑名为alpha.c的文件  :3split filename

// 增加窗口高度  CTRL-W +      减小  CTRL-W - , "4 CTRL-W +"将使当前窗口增加4行高度

改变窗口宽度  CTRL-W <    CTRL-W > ,
切换窗口
         到左边的窗口 CTRL-W h
         到下面的窗口 CTRL-W j
         到上面的窗口 CTRL-W k
         到右边的窗口 CTRL-W l
         到顶部窗口 CTRL-W t
         到底部窗口 CTRL-W b

移动窗口(注意后面的要大写)
         CTRL-W H
         CTRL-W J
         CTRL-W K
         CTRL-W L


对比文件操作
//查看文件不同   vimdiff  1.txt 2.txt  ,  打开折叠行  zo  ,折起折叠行  zc
//在编辑是对比文件   :vertical diffsplit 2.txt ( vertical 是纵向打开窗口的命令)
//跳到不同处  ]c  [c
//刷新对比文件  :diffupdate
//对比时将新增行复制到缺少行的文件  光标移动到那一行,按下 dp  ,  或者使用  do  当前文件将与对比文件改成同样


标签页打开文件
//  :tabedit filename , 新建当前文件标签页  :tab split ,  转换标签  gt  ,  关闭当前标签页  :tab close

 

// 命令 的细节 --------------------------------------------------------------------------

//命令作用范围
  对于":substitute"命令和很多其它的":"命令, 可以指使它们作用于
一些行上, 这叫命令的作用范围. 作用范围的最简单形式是两个以数字表示的行号. 如下:
:1,5s/this/that/g   1 至 5 行执行命令
:54s/President/Fool/ 第 54 行执行命令
:.,.+4s/people/People/ 当前行,到往下第4行
要使它们只作用于当前行上, 可以在命令前放一个"." , "$"用于代表最后一行

使用标志可以免于上面的行号计算: 在某处作上标记, 然后以此标记来指定作用范围

作用范围'<,'>代表你在Visual模式下选定的文本所在的范围

 

//全局命令 :global
    ":global"命令是Vim最强大的功能之一. 它允许你找到符合某个匹配模式的行然后将命令作用其上. 下面是其一般形式:
:[range]global/{pattern}/{command}
    乍一看它与":substitute"命令很像. 但是, 这里执行的是由{command}指定的命令

 

// 命令记录      
命令记录分三个步骤1
   1. 使用"q{register}"命令开始, 后续的动作将被记录进名为{register}的
寄存器中. 给出的寄存器名字必需是a到z之间的一个字母2
   2 执行你要执行的操作3 .
   3. 按下q以结束对命令的记录(注意仅仅是q一个字符, 不要键入多
余的字符).
   现在你可以通过"@{recording}"命令来执行刚刚记录下来的记录宏了.

下次重复执行只需再下"@@"即可

要向寄存器追加内容而不是覆盖它, 使用它的大写形式即可

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号