玩转VIM编辑器-vim附加特性

重复一个操作N次

对于我们前面介绍的一些操作,我们可以单纯地加上一个数字,来重复操作N次,比如j表示下移一行,那么10j就是下移10行。

还有一些重复执行的命令:

重复命令

描述

@@

重复前一个执行的宏

n

向同样的方向执行搜索

N

向相反的方向执行搜索

.

重复上一次的编辑命令

@:

重复上一次的命令行操作

撤销和重复操作

单次撤销,直接使用字母u即可,如果想撤销N次操作,可以使用Nu;

撤销全部操作,使用大写字母U即可。

如果使用了u撤销操作,并且发现错误了,可以使用:red或者CTRL+R来撤销刚才做的编辑动作。

打开光标下对应的文件

这个特性对于下述所示的情况相当有用。

l  测试配置文件中所给的文件名是有效的;

l  编辑一个文件的时候,想查看编辑文件中所包含的文件;

l  在编辑源代码的时候,参考include或者import的文件;

1.     直接打开:    gf

2.     打开一个新的窗口: CTRL+W f

3.     打开一个新的选项卡:    CTRL+W  gf

如果文件中所包含的文件并没有给出绝对路径,那么vim将在当前目录中搜索。

在下述情况下,即使没有指出绝对路径,vim也能定位到文件的准确位置:

1.    C程序中的头文件;

2.    Perl程序中的Perl模块

使用传统方式编辑多个文件

使用此种方法,可以在那一个vim会话中编译多个文件。

打开方法为:vim file1 file2 file3

如果已经处在vim编辑会话中,需要再打开一个文件,可以使用下述命令:

:e anotherfile

我们可以使用:ls来列出目前vim会话中的所有文件,比如:

:ls

1 %a   "apue.h"                       line 1

2 #    "passwd"                       line 1

3      "lscpu"                        line 1

那么我们可以使用:e #N来打开第N个文件;

在两个文件中切换的方法为:  CTRL+^;

在多个文件中移动的方法:

使用命令:next和:previous分别可以移动到下一个文件或者上一个文件。

自动保存文件

如果在没有保存文件的时候,想切换到另一个编辑文件,会出现警告信息,提示先保存信息,可以设置自动保存选项:set autowrite,这样就可以直接切换各个文件或缓存。

也可以使用:wall单个命令来写入所有的文件。

Vim中加密文件

使用:X来加密文件,下次编辑时就需要输入加密密码;

解密方法为:set key=然后保存文件就可以了。

加 密 的 局 限 性

Vim 采用的加密算法有弱点的。它对于防止那种偷窥者是绰绰有余了,但不足以防止一个手上有大量时间的密码专家。而且, 你应该知道交换文件是不加密的;所以当你在编辑文件时,拥有超级用户权限的人能够读取未经加密的文件文本。不让人们读到你的交换文件的一个方法就是不使用交换文件。

:setlocal noswapfile

由于没了交换文件,文件复原就不可能了。为了避免失去编辑的成果,要比平时更勤快地存盘你的文件。

保存和还原vim会话

在我们编辑N个文件的时候,如果需要先做别的事情,在返回来编辑该会话,那么我们可以保存该会话,然后还原它,在这个过程中,诸如缓冲区、窗口大小、自定义选项、文件夹和当前目录等都会保存。

会话命令

描述

:mksession

在当前目录中创建一个默认的Session.vim

:mksession filename

保存会话为指定的文件名filename

$vim –S

打开当前目录中默认的会话

$vim –S filename

打开当前目录中指定的会话filename

:source Session.vim

导入会话中的所有设置

在vim中执行Unix脚本命令

在vim中执行Unix命令cmd,使用:!cmd即可。比如显示:!date日期信息。

也可以将当前文件名作为一个参数传入到Unix命令中:

:!echo %

%代表当前文件名

:!echo %:p

%:p代表当前文件名的绝对路径

:!echo %:e

%:e代表当前文件的扩展名

使用vimdiff检查文件中的异同

在Unix中可以使用diff file1 file2来查看两个文件的异同(完全命令终端显示),但是vimdiff更加的直观、友好(不同颜色来友好地显示出文件异同)。

vimdiff命令

描述

vimdiff file1 file2或

vim -d file1 file2

在一个垂直分割窗口中显示不同

vimdiff –o file1 file2或

vim –d -o file1 file2

在一个水平分割窗口中显示不同

vim file1

:diffsplit file2

已经打开了一个文件,在打开另一个文件来比较异同-水平分割

vim file1

:vert diffsplit file2

已经打开了一个文件,在打开另一个文件来比较异同-垂直分割

[c

跳转到下一个修改处

]c

跳转到上一个修改处

vim映射命令

如果需要重复地执行一个命令,可以使用vim的映射命令来实现。

比如:map :write :!cc % && ./a.out该映射命令在执行:write的时候就会编译当前文件并执行。

前面我们提到过:w 和:up的区别,可以使用map :w :up;还有:map :q :confirm q。

使用:map可以显示所有定义的映射。

让bash shell工作的像vim编辑器

set -o vi 表示编辑命令行用 vi 模式,默认状态是 vi 的 编辑状态,可以输入、修改,用 ESC 退出编辑状态后,可以用 h,l 来前进后退, j,k 来翻看历史命令,^光标到行首,$光标至行尾,dd 删除该行...等等,和 vi 的用法是一样的。习惯用 vi 的人可以用 set -o vi 这种模式加快命令行编辑。

此外,还有 set -o emacs,表示编辑命令行用 emacs 模式,不分编辑状态和控制状态。 可以直接输入,也可以用 [CTRL]-a 至行首,[CTRL]-e 至行尾,[CTRL]-k 删除光标处到末尾...等等,这和 emacs 的编辑方式是一样的。这是默认模式,也是最常见和大多数人习惯的方式。

vim编辑器中的一些选项

选项

描述

:set nu

显示行号

:set ic

搜索时忽略大小写

:set ro

以只读模式打开

:set wm=n

最右端回卷最大值

:set ai

开启自动缩排功能

:set all

显示vim会话中的所有设置

:set list

显示所有不可视字符,比如^|表示tab,$表示行尾

:set hlsearch

高亮显示匹配模式

:set incsearch

开启增量搜索模式,实时搜索

如果想关闭上述设置,可以使用:set no<OPTION>,例如不显示行号为:set nonu。

默认寄存器和它们的用法

寄存器名称

描述

%

当前文件的名称

#

替换文件的名称

:

最近一次执行的命令

/

上一次的搜索模式

上一次使用的寄存器

从寄存器中粘贴内容,执行下述命令

“<寄存器名称>p

比如如果“%p就会把当前文件名给粘贴到光标位置。

关于寄存器,有以下几点需要注意:

1.    数字表示的只有从0到9的10个寄存器;

2.    最近拷贝的存储在寄存器0;

3.    最近删除的存储在寄存器1;

vim目录操作

我们可以使用vim作为一个文件管理器在文件系统中导航,并且可以进行一些操作。

比如使用vim /可以看到:

在vim文件浏览器中,可以执行下述操作:

描述

<Enter>

打开光标对应的文件或文件夹

D

删除光标对应的文件

R

重命名光标对应的文件

X

执行光标对应的文件

o

打开一个水平分割窗口

也可以在vim编辑器件中打开vim文件浏览器:

键值

描述

:Ex

在vim文件浏览器打开当前目录

:Ex /etc

在vim文件浏览器打开指定目录

:Sex

在vim文件浏览器使用水平分割窗口打开当前目录

:Vex

在vim文件浏览器使用垂直分割窗口打开当前目录

:Tex

在vim文件浏览器在一个新的选项卡中打开当前目录

转载于:https://www.cnblogs.com/shaoguangleo/archive/2011/11/05/2806049.html

玩转VIM编辑器-vim附加特性相关推荐

  1. (大数据工程师学习路径)第二步 Vim编辑器----Vim文档编辑

    一.vim重复命令 1.重复执行上次命令 在普通模式下.(小数点)表示重复上一次的命令操作 拷贝测试文件到本地目录 $ cp /etc/protocols . 打开文件进行编辑 $ vim proto ...

  2. 使用脚本编写 Vim 编辑器,第 2 部分: 用户定义函数

    用户定义函数 Haskell 或 Scheme 程序员会告诉您,函数对于任何严肃的编程语言来说都是最重要的特性.对于 C 或 Perl 程序员,他们也会告诉您完全相同的观点. 函数为严肃的程序员提供了 ...

  3. 使用脚本编写 Vim 编辑器,第 1 部分: 变量、值和表达式

    优秀的文本编辑器 有这样一则老笑话:如果 Emacs 拥有一款优良的文本编辑器,那么它将是一个优秀的操作系统,相反,如果 vi 拥有一个不错的操作系统,那么它将是一款非常出色的文本编辑器.这个笑话反映 ...

  4. Vim 编辑器及其基本操作

    实验楼某些课程有用 Vim 编辑器来写代码,因此有了这篇博客,据说是上古神器,当然主要目的是基本操作. Vim 编辑器 Vim(Vi IMprove) 是 Linux 系统上的最著名的文本/代码编辑器 ...

  5. Linux运维——Vim编辑器

    Vim编辑器 Vim重点:光标的移动.模式切换.删除.查找.替换.复制.粘贴.撤销命令的使用 一.Vim三种模式(重点) Vim中存在三种模式(大众的认知):命令模式.编辑模式(输入模式).末行模式( ...

  6. linux 编辑模式使用sed,sed命令的用法和vim编辑器的使用

    一.文本处理工具sed sed [option]-.'script] [input-file]- 简介: sed是一种流编辑器,他一次处理一行的内容,处理时把当前处理的行存储在临时缓冲区中,这个缓冲区 ...

  7. BGI-College生信入门——5、Linux下的软件安装与Vim编辑器

    Linux basics Linux系统下一切皆是文件,Linux文件系统包含排列在磁盘或其他区块存储设备目录中的文件 Linux文件系统是一个树状结构,以"/"目录为根目录 我们 ...

  8. VIM编辑器初学者用法指南——vim中无法使用冒号更改Ubuntu的输入法解决

    VIM编辑器初学者用法指南 一.vim打开文件: 二.vim编辑文件: 三.退出编辑模式 四.保存文件并退出Vim编辑器 Vim编辑器是Unix系统最初的编辑器,内置有两种操作模式:普通模式和插入模式 ...

  9. vim编辑器(超详细!)

    vim编辑器 vim,被称为编辑器之神,拥有陡峭的学习曲线,一旦掌握,编写代码即可脱离鼠标,双手只需在键盘上飞舞,一行行代码随之出现,增删改查,轻松自如! 大一时我学了vim,掌握之后,如今我编写代码 ...

最新文章

  1. 34.2. terminal
  2. 04.卷积神经网络 W3.目标检测
  3. Penta:一款开源的多合一自动化渗透测试命令行工具(很强,包含扫描、DNS、Shodan)
  4. SQL数据库调优之性能监视篇
  5. 人脸检测(八)--HOG特征原理及实现
  6. 彻底搞懂Scrapy的中间件(三)
  7. CentOS中文乱码问题
  8. 黑马Java学科资料
  9. 常吃大蒜对人有什么好处与坏处?
  10. 金彩教育:权重提升方法
  11. 密码技术---密钥和SSL/TLS
  12. miui patchrom项目 生成原厂包/java内存溢出解决方法
  13. AM5728调试经历
  14. Spring - Spring配置文件-Spring配置数据源详解
  15. 视频教程-Oracle12数据库管理/DBA/数据库工程师培训-Oracle
  16. python求和1到100_python等差数列求和公式前 100 项的和实例
  17. 【数据结构】图-图的遍历_深度优先遍历(动态图解、c++、java)
  18. ESP32实验03:0.96tft液晶显示屏驱动
  19. 薄饼抢购机器人测试视频
  20. 学位论文中公式按章节编号“一.1”如何变成“1.1”?

热门文章

  1. 用Java代码实现日志记录器_如何在此简单的Java日志记录实现中附加到日志文件? - java...
  2. 「神策 2021 数据驱动大会」杭州站火热开启!
  3. 只剩 1 天 | 神策 2019 数据驱动大会明天开幕
  4. 一篇讲清:如何构建可重复,可扩展且盈利的“魔力”转化流程?
  5. 2017 Alistair Croll 中国行:中西对话精益数据实践前瞻
  6. 神策数据上线“点击分析”,深度感知用户点击行为
  7. 求素数——多线程练习
  8. JVM内存分为哪几部分?各个部分的作用是什么?
  9. Python实现进度条总结
  10. Word转换英文为大写小写的方法