vim 相关操作方法命令

1. 翻页
整页翻页 ctrl-f ctrl-b
f就是forword b就是backward
翻半页
ctrl-d ctlr-u
d=down u=up
滚一行
ctrl-e ctrl-y
zz 让光标所杂的行居屏幕中央
zt 让光标所杂的行居屏幕最上一行 t=top
zb 让光标所杂的行居屏幕最下一行 b=bottom
2. 替换
注意,其中“s”为表示替换动作,“%”表示所有行,“g”表示全文,“^”表示行首,“$”表示行尾。
在文件的第一行或其5行至最后一行的行首插入内容     :5,$s/^/要加的内容/ 在文件的每一行的行尾添加内容   :%s/$/要加的内容/g 在整个文件中替换string成string1  :%s/string/string1/g

替换操作
经常用到的一些简单替换命令有:
◆ s 将当前字符替换为一个或多个字符,例如5 s 表示将从当前字符开始的5个字符替换为一个或多个字符; ◆ S 将当前行替换为一个或多个字符; ◆ r 单个字符替换。

文本格式转换
将DOS格式文本转成Unix格式文本,命令如下:
:1,$s/^M//g
其中^M是同时Ctrl+V+M按出来的,表示回车。
在行首尾添加字符串
用下列命令在文本每行的行首添加字符串“NewString”,请注意空格的存在。
:g/^/s//NewString/g :%s/^/NewString/g
用下列命令在每行的行尾添加字符串“NewString”:
:g/$/s//NewString/g :%s/$/NewString/g
从文本的第3行至最后一行的行首全部插入字符串“NewString”:
:3,$s/^/NewString/

在整个文件中替换
在整个文件中替换特定字符串,所用的命令如下:
:%s/old_string/new_string/g
如果仅将文件中的第3行到第7行中的“old_string”替换成“new_string”,那么使用下列命令:
:3,7s/old_string/new_string/
复制 y 粘贴 p 选择开始 v
3. 复制
请问如何用vi 复制第5行到第10行并粘贴到第12行之后
命令行模式下输入 
:5,10 co 12
4.格式化代码
 VIM格式化代码:
  格式化全文指令  gg=G
  自动缩进当前行指令  ==
      格式化当前光标接下来的8行  8=
      格式化选定的行  v 选中需要格式化的代码段 =
      备注:   gg  ——  到达文件最开始   =   ——  要求缩进   G     ——  直到文件尾
  注释代码:(这个原理上就是使用VIM的正则替换)   以C++和Python为例。
  注释连续行:
  指令格式  :起始行,终止行s/要替换的字符/替换为字符/g
  如,       C++源文件中注释掉10~20行,指令为:   :10,20s/^/g
  Python源文件中注释掉10~20行,指令为:   :10,20s/^/#/g
  取消连续行注释:   指令格式同上。只是要替换字符与替换为字符要互换:
  如,       取消C++源文件中的10~20行的注释,指令为:   :10,20s/^//g
  取消Python源文件中的10~20行的注释,指令为:   :10,20s/^#//g (1) gg=G 是一个自动缩进的命令 (在命令状态下直接输入,不需要输入冒号),gg是文件首,G是文件尾,所以 gg=G 是整理全部代码。
(2) == 整理当行,加行数整理多行。
(3) ={ 或者 =i{ 整理一个代码块。
(4) mG=nG 当 m 不等于 n 的时候能完成从 m 行到 n 行的局部的缩进。例如,从80行缩进直到100行,你可以用 80G=100G,在命令状态下使用 :set nu 查看行号,一般更习惯将 se nu 直接写入Vim的配置文件,这样每次打开都会显示行号。
(5) 在写代码前,设置自己的代码风格。在配置文件里添加命令:
" 设置缩进和行号
set nu ru ai si ts=4 sw=4
(6) :set equalprg=indent
意思是用indent程序处理等号命令,indent默认是gnu风格。
建议不要改,代码风格应该自己主动养成,=适用于修改代码或者粘贴别处代码后整理缩进。
这里又体现出不用indent的好处了,如果用indent,单纯格式化代码块会丢统一的行首缩进,而且选中的如果不是内部完整的代码块,会出错,把出错的输出贴到了代码里....弊端很多。


1.12. 定宽文本排版

在传统的 Unix 环境下,文本文件的定义是具有一定长度限制的文本行的组合 [19]。虽然 Vim 本身对行的长度没有任何实际的限制,但有一些工具有这样的限制。为了最大程度的兼容性,也为了在显示、打印等处理上比较方便,一般推荐在邮件和源代码中一 般不要超出 72 列(最多不超出 80 列)。Vim 在处理定宽的文本方面具有特殊的支持能力。下面是一个在 Vim 中把行宽(使用选项 textwidth)设为 40 后输入 Harry Potter and the Half-Blood Prince 的第一句话的结果:

输入时我只使用了英文字母和空格,换行符都是 Vim 自动插入的。如果在某一行加入或删除了一些字符后行不就不齐了吗,该如何处理?很简单,把光标移到要重新格式化的文本开头,使用“gq”命令后面跟一个光 标移动命令确定重新格式化的范围。比如“gq}”(格式化一段),“gq5j”(格式化 5 行),“gqG”(格式化至文件末尾)。

除了选项 textwidth 外,选项 formatoptions 确定了跟文本格式化有关的基本选项,常用的数值有:

  • t:根据 textwidth 自动折行;
  • c:在(程序源代码中的)注释中自动折行,插入合适的注释起始字符;
  • r:插入模式下在注释中键入回车时,插入合适的注释起始字符;
  • q:允许使用“gq”命令对注释进行格式化;
  • n:识别编号列表,编号行的下一行的缩进由数字后的空白决定(与“2”冲突,需要“autoindent”);
  • 2:使用一段的第二行的缩进来格式化文本;
  • l:在当前行长度超过 textwidth 时,不自动重新格式化;
  • m:在多字节字符处可以折行,对中文特别有效(否则只在空白字符处折行);
  • M:在拼接两行时(重新格式化,或者是手工使用“J”命令),如果前一行的结尾或后一行的开头是多字节字符,则不插入空格,非常适合中文

上面提到的注释,可以是 C/C++ 中的“//”和“/*”,也可以是邮件中引用原文使用的“>”等字符(具体由 comments 选项控制;参见“:help 'comments'”)。Vim 在遇到这些字符时,能够相当智能地进行处理,足


 

 

zz是卷页面使光标到中间
M是移动光标到中间

:set scrolloff=10 可以让光标一直在中间
调整数的大小可以控制区域
 

  Vim(2):多标签切换|窗口拆分-tabnew 收藏 2012年04月24日

vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口. 之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。 用法 :tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab :tabc       关闭当前的tab :tabo       关闭所有其他的tab :tabs       查看所有打开的tab :tabp      前一个 :tabn      后一个 标准模式下: gt , gT 可以直接在tab之间切换。 还有很多他命令, 看官大人自己, :help table 吧。 看过Swaroop的书之后,就越来越喜欢VIm了。 尤其是多窗口,真是非常Cool哦~ 解释一下这是咋弄出来的: 在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。 但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。 打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。 另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。 更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。

from:http://hi.baidu.com/dtzw/blog/item/64a6f3f2fc10721eb07ec590.html

 

 

 

vim是个优秀的编辑器,有很多功能你不知道。 比方说vim可以模拟多窗口(多tab)以及拆分窗口,可以同时编辑多个文件。 多tab时,每个tab可以编辑一个文件,但不同的tab不能同时显示,要切换。 拆分窗口后,窗口是同时显示的,每个窗口可以编辑一个文件。 两种方式可以同时生效的,现在试一下: 命令模式:输入sp,窗口就上下拆分成两个窗口了。 按ctrl+w然后再按c,就关掉当前窗口了。 连按两次ctrl+w,可以在窗口间切换。 输入vs,就是垂直拆分。 也可以多tab,输入命令tabnew,就创建一个新tab,命令tabn就切换到下一个tab,tabn3就切换到第三个tab,tabc就关掉当前tab。 具体看vim的手册,或者vim里help 某个命令。 vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口. 之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。 用法 :tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab :tabc       关闭当前的tab :tabo       关闭所有其他的tab :tabs       查看所有打开的tab :tabp      前一个 :tabn      后一个 标准模式下: gt , gT 可以直接在tab之间切换。 还有很多他命令, 看官大人自己, :help table 吧。 看过Swaroop的书之后,就越来越喜欢VIm了。 尤其是多窗口,真是非常Cool哦~ 解释一下这是咋弄出来的: 在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。 但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。 打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。 另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。 更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。

 

 

VIM 标签页 (tab) 新建标签页 使用:tabe命令和文件名参数,可以在新标签页中打开指定的文件。也可以使用:tabnew命令,在新标签页中编辑新的文件。命令:tab split将在新标签页中,打开当前缓冲区中的文件。 命令:tabf允许你在当前目录搜索文件,并在新标签页中打开。比如我想打开当前目录下的img.txt文件,那么就可以使用:tabf img.*命令。请注意,此命令只能打开一个文件,如果搜索出多个匹配文件,将提示你“文件名过多”,这时你需要给出更精确的搜索条件以打开文件。 Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。 列示标签页 命令:tabs可以显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。 关闭标签页 命令:tabc可以关闭当前标签页。而命令:tabo将关闭所有的标签页。 切换标签页 命令:tabn或gt可以移动到下一个标签页。而命令:tabp或gT将移动到上一个标签页。如果已经到达最后面或最前面的标签页,将会自动转向循环。 如果你打开了很多标签页,那么可以使用:tabfirst或:tabr命令,移动到第一个标签页。使用:tablast命令,移动到最后一个标签页。 移动标签页 如果你希望按照指定的次序排列标签页,那么你可以使用:tabm命令。请注意,标签页次序是从0开始计数的。比如命令:tabm 1将把当前标签页移动到第2的位置。如果你没有为:tabm命令指定参数,那么当前标签页将会被移动到最后。 配置标签页 默认情况下,只有用户新建了标签页才会在窗口上方显示标签栏,这是由选项set showtabline=1决定的。如果我们希望总是显示标签栏,那么可以用set showtabline=2命令来设置。如果我们希望完全不显示标签栏,那么可以使用set showtabline=0来设置。 多标签页命令 使用:tabdo命令,我们可以同时在多个标签页中执行命令。比如我们打开了多个标签页,需要把这些文件中的“food”都替换成“drink”,那么就可以使用:tabdo %s/food/drink/g命令,一次完成对所有文件的替换操作,而不用针对每个文件重复操作。 图形界面 如果你使用的是带有图形界面的gVim,那么新建、关闭和打开标签页的操作,都可以通过在标签页上右击鼠标完成。只需要点击相应标签,就可以在不同的标签页间切换。 通过:help tab-page-intro命令,可以获得关于标签页使用的更多信息。 命令小结 :tabnew    新建标签页 :tabs    显示已打开标签页的列表 :tabc    关闭当前标签页 :tabn    移动到下一个标签页 :tabp    移动到上一个标签页 :tabfirst    移动到第一个标签页 :tablast    移动到最后一个标签页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值