1.复制多行

vi编辑器中的整行(多行)复制与粘贴就非常必要了。

1、复制

1)单行复制

在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制;

2)多行复制

在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3……

2、粘贴

在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴

vi复制多行文本的方法
方法1:
光标放到第6行,
输入:2yy
光标放到第9行,
输入:p
此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。
方法2:
命令行模式下输入
6,9 co 12
复制第6行到第9行之间的内容到第12行后面。
方法3:
有时候不想费劲看多少行或复制大量行时,可以使用标签来替代
光标移到起始行,输入ma
光标移到结束行,输入mb
光标移到粘贴行,输入mc
然后 :'a,'b co 'c   把 co 改成 m 就成剪切了
要删除多行的话,可以用 :5, 9 de

2.vim 括号匹配 以及各种跳转技巧.

括号匹配:
% 可以让光标从它当前所在的括号跳转到与它相匹配的括号上去, 对花括号和
圆括号, 方括号都有效, 常用于手工检查括号是否匹对.

标示位置
--------

你可以在光标处做些标记再随时返回被标记的位置.

m char (MARK) 把这个地方标示成 char
' char (quote character) 跳到被标为 char的那一行
'' (按两次') 回到刚才的位置

char 可以是小写的 a-z中的任一个 . 一个标记在除了下面的这两种情况
外会一直存在

1) 重覆使用相同的标示 char .
或 2) 删掉了被标示的那一行.

文字段落
--------------

有时候一段一段的移动游标会比较方便.我们可以用 {,},(,) 来达到这些功能

{ (左大括号) 跳到上一段的开头
} (右大括号) 跳到下一段的的开头.

( (左小括号) 移到这个句子的开头
) (右小括号) 移到下一个句子的开头

[[ 跳往上一个函式
]] 跳往下一个函式

3.vim标记(Mark)

在编辑的时候,你忽然想起来需要修改同一个文档的另一个地方,但又想记住当前的位置,以便稍后再回来编辑。应该怎么做呢?vim中我们可以对文本进行标记,这个概念类似于visual studio中的书签,目的是方便vim编辑器在文档的不同位置间跳转。

正常情况下,这意味着要移动到那个位置,编辑,然后再移回来。这样很费事,也容易忘记刚才所在的位置。

Vim有更聪明的办法。移动光标到下述文本的第5行(John Lennon的名言)。用ma创建一个名为‘a’的标记。移动光标到任一地方,比如,4j。

按下'a(即,单引号加上标记的名字),瞧,Vim跳到了刚才做标记的那一行的行首。如果要跳到做标记的位置,按下`a(即`,上排数字键1左边那个键)。

可以使用任一字母(a-zA-Z)去命名一个标记,意味着一个文件里最多可以有52个命名标记。

添加标记

将光标移到某一行,使用 ma 命令添加标记。其中,m 是标记命令,a 是所做标记的名称。

可以使用小写字母 a-z 或大写字母 A-Z 中的任意一个做为标记名称。小写字母的标记,仅用于当前缓冲区;而大写字母的标记,则可以跨越不同的缓冲区。例如,你正在编辑 File1,但仍然可以使 用'A 命令,移动到 File2 中创建的标记A。

跳转标记

创建标记后,可以使用 'a 命令,跳转到指定标记行的首个非空字符。这里 ' 是单引号。也可以使用 `a 命令,移到所做标记时的光标位置。这里`是反引号(也就是数字键1左边的那一个)。

列出标记

利用:marks命令,可以列出所有标记。这其中也包括一些系统内置的特殊标记(Special marks):

. ——最近编辑的位置
0-9 ——最近使用的文件
∧ ——最近插入的位置
' ——上一次跳转前的位置
" ——上一次退出文件时的位置
[ ——上一次修改的开始处
] ——上一次修改的结尾处

删除标记

如果删除了做过标记的文本行,那么所做的标记也就不存了。我们不仅可以利用标记来快速移动,而且还可以使用标记来删除文本,例如在某一行用ma做了标记,然后就可以使用d'a来删掉这一行。当然,我们也可以使用y'a命令就可以来复制这一行了。

使用:delmarks a b c命令,可以删除某个或多个标记;而:delmarks! 命令,则会删除所有标记。

利用:help mark-motions命令,可以查看关于标记的更多帮助信息。

命令小结
m ——创建标记
' ——移动到标记的文本行首
` ——移动到标记的光标位置
:marks ——列示所有标记
:delmarks ——删除指定标记
:delmarks! ——删除所有标记

4.vim分屏

使用大写的O参数来垂直分屏。
vim -On file1 file2 ...
使用小写的o参数来水平分屏。
vim -on file1 file2 ...
注释: n是数字,表示分成几个屏。
关闭分屏 
关闭当前窗口。
Ctrl+W c
关闭当前窗口,如果只剩最后一个了,则退出Vim。
Ctrl+W q
分屏
上下分割当前打开的文件。
Ctrl+W s
上下分割,并打开一个新的文件。
:sp filename
左右分割当前打开的文件。 
Ctrl+W v
左右分割,并打开一个新的文件。
:vsp filename
移动光标
Vi中的光标键是h, j, k, l,要在各个屏间切换,只需要先按一下Ctrl+W
把光标移到右边的屏。
Ctrl+W l
把光标移到左边的屏中。
Ctrl+W h
把光标移到上边的屏中。
Ctrl+W k
把光标移到下边的屏中。
Ctrl+W j
把光标移到下一个的屏中。.
Ctrl+W w
移动分屏
这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
向右移动。
Ctrl+W L
向左移动 
Ctrl+W H
向上移动 
Ctrl+W K
向下移动 
Ctrl+W J
屏幕尺寸
下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。
让所有的屏都有一样的高度。
Ctrl+W =
增加高度。
Ctrl+W +
减少高度。
Ctrl+W -
 
5. 显示|显示行号:
 

set nu 或者 set number //显示行号;

set nonu 或者 set nonumber //关闭自动显示行号;

set ic //查找时忽略大小写;

set noic //查找时不忽略大小写。

VIM小技巧的更多相关文章

  1. VIM小技巧之文件名补全

    恩,这两天在看<简明Python教程>,那里面作者建议写代码的时候前面的注释写上文件名,写上调用的解释器,比如这样: 恩,然后我当然不可能每回新建一个文件,就要在开头写上一大串东西啊,vi ...

  2. VIM -小技巧汇总

    一 代码自动对齐: 1 命令行模式下先输入gg 然后按=后输入大写的G,这样整个文件的代码就对齐了. 二 选中多行缩进 1.按v进入visual状态,选择多行,用>或<缩进或缩出 2. 通 ...

  3. vim 小技巧

    cd - 返回刚才访问的目录shift+# 在vi中查找相同的关键字vi 中o在当前游标位置后插入一行 O在当前位置前插入一行0 $到行未 行首shift+s 删除一行,并且进入insert mode ...

  4. 【Linux】vim小技巧,如何批量添加或者删除注释

    环境:centos vim或者vi都可以 例如文件如下: aaa bbb ccc ddd 有四行文件,想将前三行都添加注释 先查看行数: :set nu  可以这样做: :1,3s%^%#% 即可,如 ...

  5. vim 小技巧总结

    1.v+移动光标可以选中文本. 2.y可以复制已经选中的文本 3.p可以粘贴 复制一行则:yy 复制当前光标所在的位置到行尾:y$ 复制当前光标所在的位置到行首:y^ 复制三行则:3yy,即从当前光标 ...

  6. vim小技巧2

    yyp:复制当前行到下一行 cw:改变当前字符串 xp:交换当前字符和右边字符

  7. Vim实用小技巧

    Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...

  8. Vim新手节省时间的10多个小技巧

    Vim新手节省时间的10多个小技巧 Vim 是很多开发者的首选编辑器,通过设置正确的命令和快捷方式,它可以帮你更快的完成工作.这篇文章我们为 Vim 新手提供一些快捷键等方面的小技巧,帮你提升工作效率 ...

  9. IDEA Intellij中vim插件使用小技巧

    在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...

随机推荐

  1. Java里List取并集方法retainAll不能用来判断是否有重复数据!

    网上找的源码 public boolean retainAll(Collection<?> c){     boolean modified = false;     Iterator&l ...

  2. PHP扩展开发及内核应用

    目录中汉字部分代表已经翻译完成的章节,带链接的表示已经发布的,未待链接的表示正在校正即将发布的. PHP的生命周期 让我们从SAPI开始 PHP的启动与终止 PHP的生命周期 线程安全 小结 PHP变 ...

  3. __PUBLIC__ 路径更改

    config.php 'TMPL_PARSE_STRING' => array( '__PUBLIC__' => __ROOT__ . '/' . APP_NAME . '/Tpl/Pub ...

  4. 夺命雷公狗----Git---7---GitHub当仓库本地使用(完)

    首先我们将github上的东西克隆到本地: 然后在本地创建一个文件夹,然后进入git命令行: 成功后如下所示: 将仓库里面的内容给克隆到本地了... 然后创建一个index.html然后添加进去: 在 ...

  5. 移植mbed到目标板

    上一篇我们导出了mbed基本环境到mdk,根据实际目标还需要做些修改.手头的硬件是ebox平台,芯片STM32F103C8T6,调试器jlink,默认使用UART1. 导出时所选择的NUCLEO-F1 ...

  6. C#开发Windows服务 入门

    Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序. 服务可以在计算机启动时自动启动,可以暂停和重新启动而且 ...

  7. C语言的内存分配

    内存分为五大区: 1.栈区:在函数内部声明的变量都存在栈区,只管申请,系统会帮我们自动释放,释放的时间是作用域结束,遵循先进后出(first in last off(FILO)),栈的开辟是连续的,不 ...

  8. Infinite loop when using cookieless session ID on Azure

    If you use cookieless session ID and deploy them on Azure, you might get infinite loop when you quer ...

  9. MyBatis传入参数为集合、数组SQL写法

    参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合 ...

  10. 关于访问链接返回XML的获取数据

    1. 返回DataSet格式; /// <summary> /// 向某个url提交数据并读取该地址返回的xml,并将xml转换成dataset,并返回dataset中某个表 /// &l ...