VIM的高级使用

1)一些常用的Vim配置,在~/.vimrc中
syntax on       支持语法高亮
set nu          显示行号
set nonu      不显示行号
set ai          设置自动缩进
set shiftwidth=4   设置自动缩进 4 个空格, 当然要设自动缩进先.
set sts=4          即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格.
set tabstop=4      实际的 tab 即为 4 个空格, 而不是缺省的 8 个.
set expandtab      在输入 tab 后, vim 用恰当的空格来填充这个 tab.
:set hls 打开搜索高亮

:set nohls 取消搜索高亮

:set list : 显示特殊字符
:set nolist 
 
 
 
2)多文件编辑
:e filename  vim将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存.
:sp filename vim将分割出一个横向窗口, 并在该窗口中打开新文件.
:vsp filename vim将在右边分割出一个窗口, 并在该窗口中打开新文件.
如果:sp 或 :vsp没有指定文件,则在新窗口中打开原文件。
ctrl+w w来在vim打开的多个窗口中切换.
ctrl+w q来关闭多个窗口中当前的窗口.
 
 打开的两个文件上下窗口分布 : vim -o file1 file2
 打开的两个文件左右窗口分布 : vim -O file1 file2           
 
3) 查找
/xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.
*(#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. (可以使用shift+* 或 shift + #来查找当前光标所在单词)
g*(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串.
% 本命令查找与光标所在处相匹配的反括号, 包括 () [] { }.

在vim中一般查找 :/str,如果有空格则需要:/str str2/

 
4) 光标移动
w(e) 移动光标到下一个单词. b 移动光标到上一个单词.
0 移动光标到本行最开头. ^ 移动光标到本行最开头的字符处. $ 移动光标到本行结尾处.
向前向后翻页 ctrl+f 和 ctrl+b. 
% 跳转到相配对的括号. 
 
G(shift+g)   - go to the last line in the vim editor (文件的末尾) 
1G - goto line number 1(文件的开始)
20G - goto line number 20
 
 
 
5)拷贝, 删除与粘贴

x表示删除当前字符。

在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令结合的, 看几个例子就能够明白了.
yw 表示拷贝从当前光标到光标所在单词结尾的内容. dw 表示删除从当前光标到光标所在单词结尾的内容. y0 表示拷贝从当前光标到光标所在行首的内容. d0 表示删除从当前光标到光标所在行首的内容. y$ 表示拷贝从当前光标到光标所在行尾的内容. d$ 表示删除从当前光标到光标所在行尾的内容. yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容. dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容.
特殊地: yy 表示拷贝光标所在行. dd 表示删除光标所在行. D 表示删除从当前光标到光标所在行尾的内容.

删除整个文档 :1,$d

删除某行后面的换行符号:在命令状态下,在某一行上按"J"键将Join下一行,呵呵

u 撤销上次的操作,ctrl+r恢复上次的撤销。

删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾) :g/^\s*$/d

 
6)替换
单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S.
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
:2,50s/part1/part2      #用part2替换第2行到第50行中每行第1个part1
:2,50s/part1/part2/g    #用part2替换第2行到第50行中所有的part1
:.,+3s/part1/part2      #用part2替换当前行以及当前行后面的三行中每行第1个part1

:.,+3s/part1/part2/g    #用part2替换当前行以及当前行后面的三行中所有的part1

 

例如将每行增加 xxx : :%s/\(.*\)/\1 xxx/g

7)visual block状态

ctrl+v进入,列块选择,例如4l选中光标接下来的4列,7j光标开始的7行,执行4l和7j后选中7行4列的块, 也可以在ctrl+v后使用hjkl来控制选择的行和列,可以使用y,d等进行拷贝删除操作。例如删除多行前面的空格。

(块编辑:编辑一行,效果被应用到所有选中的行)例如注释多行:ctrl+v选择块后,然后I进入编辑状态在第一行的开始输入#,然后两次esc退出后,刚才选中的所有行前面自动加#,从而达到注释所有行的目的。

shift+v可以用来选中多行,然后:s/aaa/bbb/g, 对选中的行中进行替换。

shift+v选中多行后,执行d直接删除选中的多行。

http://man.chinaunix.net/newsoft/vi/doc/visual.html

8) 其他

查看当前vim打开的文件:vim下:f

vim中去除空行或行末的^M:dos2unix ufile

VIM中sort不能用:只能在terminal下执行sort -u file > file_new
 
vim中diff文件: 如果已经打开了一个文件,则 :vert diffsplit file2, 如果还没有打开文件,则直接执行vi -O test_vi.txt test_vi2.txt,此时两个文件左右排列,如果需要两个文件上下排列的话,执行vi -o test_vi.txt test_vi2.txt。 vimdiff最多可以同时比较4个文件。
 
不退出vim,直接执行命令,例如在perl文件中,直接执行不退出,:!perl % 。 如果前面已经执行过了,则重复前面的命令时,只需要:!!
 

完!

VIM的高级使用的更多相关文章

  1. vim下高级操作以及文本替换命令

    关于vim的一些基本和高级的操作 可参考下面的链接. http://coolshell.cn/articles/5426.html 在使用vim编辑文本的时候涉及到批量替换文本内容 :s/vivian ...

  2. 8. vim编辑器高级应用

    1. vim主要模式介绍 命令模式.命令行模式.编辑模式 字符操作:i 当前插入, I行首插入, a当前字符之后插入,A行首插入, ESC退出当前模式 2. vim命令模式 3. vim插入模式 4. ...

  3. (大数据工程师学习路径)第二步 Vim编辑器----高级功能入门

    一.多文件编辑 1.使用vim编辑多个文件 编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件.另一种就是进入vim后再编辑其他的文件. 同时创建两个新文件并编辑 $ vim 1.tx ...

  4. vim编辑器高级应用

    1. vim主要模式介绍 命令模式.命令行模式.编辑模式 字符操作:i 当前插入, I行首插入, a当前字符之后插入,A行首插入, ESC退出当前模式 2. vim命令模式 3. vim插入模式 4. ...

  5. vim 编辑器高级用法

    vim编辑器介绍 如果没有安装vim使用下面方式安装 yum -y install vim vi与vim的不同 两者最大的不同:vim可以高亮显示,vi不可以. vim三种工作模式 普通模式 # 光标 ...

  6. vim的一些高级配置

    今天有幸看到一篇博文,有一些vim的高级配置 在linux或者unix下面的.vimrc文件中,在其中可以添加如下片段,可以实现解释上面你说的那些高级用法 " Ctrl + K 插入模式下光 ...

  7. 再谈vim中多窗口的编辑

    参考:http://blog.csdn.net/shuangde800/article/details/11430659 很好 鼠标在各个窗口间循环移动: ctrl+w+(小写的 hjkl), &qu ...

  8. vi和vim区别及命令详解

    vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding.     现将vim的命令行收集于下: vi有3个模式:插入模 ...

  9. 编辑器之神VIM 总结(一) 基础部分

     版本号 说明 作者 日期  1.0  vim基础知识 Sky Wang 2013/06/19       概要 vim和emacs,一个是编辑器之神,一个是神一样的编辑器.他们被称是UNIX系统下的 ...

随机推荐

  1. IIS日志

    1.认识IIS日志 IIS日志默认存放在System32\LogFiles目录下,使用W3C扩展格式.下面我们通过一条日志记录来认识它的格式 2005-01-0316:44:57218.17.90.6 ...

  2. Swift构造器(Initializer)与析构器(Deinitializer)

    为了初始化结构体和类等类型的实例属性. 默认构造器 struct Fahrenheit { var temperature: Doubleinit(){ temperature = 32.0 } } ...

  3. 关于《Swift开发指南》背后的那些事

    时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014 ...

  4. Swift常量和变量以及命名规范

    我们在上一章中介绍了如何使用Swift编写一个HelloWorld小程序,其中就用到了变量.常量和变量是构成表达式的重要组成部分.常量在声明和初始化变量时,在标识符的前面加上关键字let,就可以把该变 ...

  5. android 数据库的增删改查

    主java package com.itheima.crud; import android.app.Activity; import android.content.Context; import ...

  6. 通过Curator操作Zookeeper的简单例子代码

    Curator主要解决了三类问题: 一个是ZooKeeper client与ZooKeeper server之间的连接处理; 一个是提供了一套Fluent风格的操作API; 一个是ZooKeeper各 ...

  7. C++与Lua交互(二)

    上一篇我们搭建好了整个的项目环境,现在,我们一起探索一下如何将lua寄宿到C++中. 宿主的实现 我们在LuaWithCPPTest项目下,查看Source.cpp代码如下: #include < ...

  8. input中id和name属性的区别。

    input中id和name属性的区别. 做网站很久了,但到现在还没有搞明白input中name和id的区别,最近学习jquery,又遇到这个问题,就在网上搜集资料.看到这篇,就整理出来,以备后用. 可 ...

  9. Linux防火墙基本知识

    一.防火墙的分类 (一).包过滤防火墙. 数据包过滤(packet Filtering)技术是在网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,称为访问控制表(access control ...

  10. ECSSHOP表结构

    ECSSHOP表结构 -- 表的结构 `ecs_account_log`CREATE TABLE IF NOT EXISTS `ecs_account_log` (`log_id` mediumint ...