VIM真是一个神奇而又复杂的编辑器,让我这样的Linux编程新手茫然不已啊。每次到真正动手编程的时候才发现完全不知道该怎么操作VIM,一点都没感觉到VIM的强大,哈哈~~正好今天学习了一点VIM操作技巧,顺便记下来,一边日后不断积累不断提高。

一、复制、剪切、粘贴

(1)在命令模式下将光标移动到要复制的段开始位置,按下字母v进入可视模式,然后移动光标覆盖需要复制的内容,按下y完成复制,按下d完成剪切。再将光标移动到目标位置,按下字母p完成粘贴。

(2)在命令模式下,在目标行按下两次字母y,即yy完成行复制,两次字母d,即dd完成行剪切,再将光标移动到目标位置,按下字母p完成粘贴。

(3)在命令模式下,输入命令 “:起始行号,结束行号 y” 可以完成连续多行拷贝,然后将光标移动到目标位置按下p完成粘贴。

(4)在命令模式下,输入命令 “n1,n2w!/tmp/tmpfile” 可以把行号n1至行号n2的内容写入到/tmp/tmpfile文件中临时保存,然后将光标移动到目标位置,输入 “r /tmp/tmpfile” 把内容读进来。

(5)在插入模式下,将光标移动到需要插入内容的地方,然后用鼠标选中需要复制的内容,按下鼠标中键即可完成复制和粘贴,粘贴的位置就是刚才光标所在的位置。

一、代码注释

(1)连续多行注释

  在命令行下输入如下命令:

  :起始行号,结束行号s/被替换的字符/替换后的字符/g

  例如在文件第10行至25行的行首位置插入#或者//时分别可以输入以下命令:

:,25s/^/#/g 
:10,25s/^/\/\//g

  其中,^符号表示行首插入的意思,因为/在命令中用到了,所以要想输入 “//” 就必须用到两次转义字符 “\” 。g表示每次替换时不需要确认,如果希望确认,则将g替换成c即可。

(2)随意注释不连续的行

  如果想要随意注释不连续的行,那么就要用到快捷键了。比如:可以为行首注释动作添加一个快捷键。添加快捷键的命令为:

  :map ^P I//

  其中,^P表示Ctrl + P,在输入此命令的时候要连续按下Ctrl + v + p才行,当然也可以不用p而设置其他字母。I// 表示在光标所在行的行首位置插入。取消此快捷键的方式为:

  :unmap ^P

二、字符串自动补全

  可以定义一个特殊的字符串补全,有时候会非常方便。设定替换语句的方式为:

  :ab 快捷字符串 完整字符串

  例如,可以为我的邮箱设定一个快捷字符串为KLH,在每次输入KLH之后按下回车或者空格就能变为我的邮箱地址了:

:ab KLH kuliuheng@.com

三、执行系统命令

  在VIM中完全可以直接执行SHELL命令而不需要退出VIM。执行的方法就是在命令模式下先输入!,然后接着输入命令即可。例如显示当前的工作路径:

:!pwd

  如果想从外部的某个文件中导入文件内容,可以使用r命令,例如:

:r ../echoServer/main.cpp

  引申一下,发现可以把两个命令结合在一起使用,使用方式为:r !系统命令。例如在文件中插入当前的系统时间:

:r !date

四、查看系统帮助

  在需要查询的系统函数上,按下大字字母K即可转到帮助文件上,这是一种方法。

五、辅助功能

(1)目录浏览,输入:Ex

(2)分割窗口目录浏览,输入:Sex

(3)显示当前buffer情况,输入:ls

(4)显示当前打开的文件,输入:args

(5)光标回溯移动为Ctrl + c + p,光标前向移动为Ctrl + c + i,列出跳转历史为:ju

(6)如果需要将上述个性化设置保存,直接写入~/.vimrc 文件中即可。

[原]总结VIM的实用技巧的更多相关文章

  1. Vim/Vi实用技巧(第二版)

    Vim/Vi实用技巧 1.导入文件 :r [文件名] #导入到当前编辑的文件中 如 :r /etc/inittab 文件上部为/etc/services文件,下部为/etc/inittab文件 2.执 ...

  2. ###《VIM实用技巧》

    ###<VIM实用技巧> #@author: gr #@date: 2015-11-20 #@email: forgerui@gmail.com <VIM实用技巧>阅读笔记. ...

  3. Vim 实用技术,第 1 部分: 实用技巧(转)

    原文链接:http://blog.jobbole.com/20604/ 0. Vim 简介 作为开源世界最重要的编辑器之一(另一个是 Emacs),Vim 以其强大的功能和可定制能力被众多开发者所喜爱 ...

  4. vim实用技巧总结

    1. 单个文件内实用mark来帮助跳转以及一些宏操作.(注意:mark不能用于多文件之间的跳转)mch 设置宏,保存到ch标记(不是ch寄存器)'ch 跳转到标记的行首`ch 跳转到标记的字符处另:为 ...

  5. c++实用技巧

    原地址:http://www.cnblogs.com/easymind223/articles/2576904.html 晚上的时间总是习惯性的在cnblogs逛街,今天又看到了好文章,其c++味道浓 ...

  6. Mac实用技巧之:访达/Finder

    更多Mac实用技巧系列文章请访问我的博客:Mac实用技巧系列文章 Finder就相当于windows XP系统的『我的电脑』或win7/win10系统里的『计算机』(打开后叫资源管理器),find是查 ...

  7. 转:Eclipse快捷键和实用技巧

    原文地址:Eclipse快捷键和实用技巧 工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个“器”.本文会从Eclipse快捷键和实用技巧这两个篇章展开介绍.Eclipse快捷键用熟 ...

  8. 很全面的WinRAR实用技巧系列 - imsoft.cnblogs

    WinRAR也可以管理我的桌面时间长了,桌面上堆的东西实在太多,平时该如何管理呢?安装了WinRAR的朋友可以请它来帮忙,用它管理清除无用的桌面文件或图标. 以XP系统为例,系统所在目录是“c:\wi ...

  9. vim文本处理技巧

    如果要把这篇文章写的详细透彻,那我没有必要去书写,因为已经有了这本书--<Vim实用技巧> 如果时间和精力足够的同学可以购买或者借阅,真的是写的很详细. Vim实用技巧 (豆瓣)http: ...

随机推荐

  1. 解决两台虚拟机互ping可通,但connect失败

    问题描述: 在UNP一书中实例中,采用两台不同的虚拟机.即一台虚拟机作为服务端,另外一台虚拟机作为客户端. 现象: 两台电脑各自互ping可通 客户端访问local可行 客户机访问服务端报错:No r ...

  2. 用提交按钮提交form问题验证没通过依然提交表单

    <form id="sb" action="${pageContext.request.contextPath }/admin/loanContract/addOr ...

  3. CoreOS Linux available in China

    CoreOS Linux 竭诚服务中国用户 今天,我们宣布一个令人振奋的消息 - CoreOS Linux 开源版本正式向中国地区提供服务!国内的用户们现在可以使用安全.自动的 CoreOS Linu ...

  4. Page_Init 的执行过程

    网上有的资料在说Page_Init这个事件只会在第一次加载页面时触发,实际上并不是这样,我们会发现每次回发页面,Page_Init事件都会被执行, 举一个例子 private static int t ...

  5. 70. Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  6. 137. Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  7. WebRTC录音(1)-实现通话双向录音

    最近公司的iPad项目中一个功能点涉及到了VOIP通讯中的录音,需要在已有的WebRTC引擎中增加录音功能,录制通话双方的声音参考了往上一位兄弟的博文(链接在此 http://blog.csdn.ne ...

  8. 单元测试--四则运算2程序(c++)

    源代码: //2016 3.6 Cheng Qiqin //四则运算改进 #include <iostream> #include<ctime> #include<cst ...

  9. Spring MVC 通过@Value注解读取.properties配置内容

    第一步:在applicationContext.xml配置: <bean id="configProperties" class="org.springframew ...

  10. c 深度剖析 5

    1,指针没有指向一块合法的区域 1指针没有初始化 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #include <string. ...