文档章节

Linux笔记:使用Vim编辑器

j_hao104
 j_hao104
发布于 2016/10/23 20:43
字数 1750
阅读 43
收藏 2
Vim

Vim基础

Vim编辑器在内存缓冲区处理数据。只要键入vim命令和你要编辑的文件的名字,即可启动Vim编辑器。 如在启动Vim时未指定文件名,或者这个文件不存在,Vim会新开一段缓冲区域来编辑;如果命令指定了一个已有的文件的命令,Vim会将文件的整个内容都读到一块缓冲区域来准备编辑。

Vim编辑器有两种操作模式:

  • 普通模式;
  • 插入模式

当打开要编辑的文件时,Vim编辑器会进入普通模式。在普通模式下,Vim编辑器会将按键解释成命令; 在编辑模式中,按下i键,进入插入模式。插入模式下,每个按键都将输入到光标位置的缓冲区。按Esc键即可退出插入模式;

在普通模式中,可以用方向键来在文本区域移动光标,如果是在一个没有定义方向键的终端上,还可以使用如下按键移动:

按键光标移动方式(普通模式下)
h左移一个字符
j下移一行
k上移一行
l右移一个字符

在大的文本文件中一行一行的移动会特别麻烦。幸而Vim提供了一些命令来帮助提高速度:

按键光标移动方式(普通模式下)
PageDown(或Ctrl+F)下翻一屏数据
PageUp(或Ctrl+B)上翻一屏数据
G移动到缓冲区的最后一行
num G移动到缓冲区的第num
gg移动缓冲区的第1行

Vim编辑器在普通模式下有个特别的功能叫命令模式。命令模式提供了一个可供输入额外命令来控制Vim中行为的交互式命令行。要进入命令模式,在普通模式下按下冒号键。光标会移动到消息行,冒号出现,等号输入命令。 在命令模式下有几个命令来将缓冲区的数据保存到文件中并退出Vim:

命令描述(命令模式下命令)
q如果未修改缓冲区的数据,退出
q!取消所有对缓冲区数据的的修改并退出
w filename将文件保存到另一个文件filename
wq将缓冲区数据保存到文件中并退出

编辑数据

在普通模式下,Vim编辑器提供了一些命令来编辑缓冲区中的数据。常用号命令有:

命令描述(普通模式下命令)
x删除当前光标所在位置的字符
dd删除当前光标所在行
dw删除当前光标所在位置的单词
d$删除当前光标所在位置至行尾的内容
J删除当前光标所在行行尾的换行符
u撤销前一个编辑命令
a在当前光标后追加数据
A在当前光标所在行行尾追加数据
r charchar替换当前光标所在位置的单个字符
R texttext覆盖当前光标所在位置的数据,直到按下ESC键

有些编辑命令允许使用数据修饰来指定重复该命令多少次。比如,命令2x会删除从光标当前位置开始的两个字符,命令5dd会删除从光标当前所在行开始的向下5行。

复制和粘贴

现代编辑器的标准功能之一就是剪切或复制数据,Vim中剪切复制相对容易些。 上面已经有了删除数据的操作,Vim删除数据时,实际上它会将数据保存在单独的一个寄存器中。可以同p命令来取回数据。 简而言之,用dd删除一行文本,然后把光标移动到某个要放置该行文本的位置,之后用p命令。p命令会将文本插入到当前光标所在行之后。p命令可以和任何删除文本的命令一起搭配使用。 Vim中复制命令是y(代表yank)。y命令和d命令有相同的第二字符(如yw表示复制单词,y$表示复制到行尾)。在复制文本后,输入p命令表示粘贴。 但是这样复制有个比较烦恼的问题,就是你没有看见到底复制了什么,除非粘贴出来才知道。Vim还有个功能解决了这个问题,可视模式会在移动光标时高亮文本,因此可以用可是模式来复制文本,方法如下: 移动光标到要开始复制的位置,按下v键,光标所在位置的文本会被高亮显示,移动光标覆盖想要复制的文本。覆盖后按y键来激活复制命令。现在寄存器中已经有了要复制的文本,使用p命令到合适的位置粘贴即可。

查找和替换

要查找某个字符串,在命令模式下,键入斜杠(/)加查找字符串(比如查找字符串class:/class),按下Enter键,光标会跑到消息行。在输入要查找的文本后,按下Enter键,Vim编辑器会有3中回应:

  • 如果光标当前位置之后有你要查找的文本,则光标会跳到该文本出现的第一个位置(按n键到达下一个);
  • 如果光标当前位置之后没有你要查找的文本,则光标会绕过文件末尾,显示在该文本出现的第一个位置(并用一条消息显示);
  • 输入一条错误消息,说明在文件中没有找到要找的文本

替换命令的格式是:

:s/old/new

Vim编辑会跳到old第一次出现的地方并用new来替换,可以对替换命令作一些修改来替换多处要替换的文本:

命令描述
:s/old/new/g一行命令替换所有old
:n.ms/old/new/g替换行号n和m之间的所有old
:%s/old/new/g:替换整个文件中的old
:%s/old/new/gc:替换整个文件中的old,但在每次出现时提示

最后

Vim包含了不少高级功能,由于每个Linux发行版都会包含它,所以应该至少了解一下Vim编辑器的一些基本用法。

© 著作权归作者所有

共有 人打赏支持
j_hao104
粉丝 203
博文 67
码字总数 101848
作品 2
程序员
VNote更新1.22, Linux上也有美观强大的Markdown笔记工具

作为经常使用Windows和Linux两大桌面系统的我来说,经常希望能在两个平台中使用同一套生产力工具,比如Chrome、Vim等。 作为重度笔记创作者,一直没有找到两个平台上都能很好工作的笔记软件,...

tamlok
09/01
0
0
一个程序员的Ubuntu安装的那些软件

鄙人程序猿一枚,Android开发,常年使用Ubuntu(主要是买不起Mac,O(∩_∩)O哈哈~)。分享一下自己使用的那些软件,如果你有什么好的软件。欢迎与我交流。 输入法:开始的时候是用的fcitx,后...

码农明明
2014/06/22
0
3
VNote: 一个舒适的Markdown笔记软件

Update: 支持macOSYunpan Update 2: 写在VNote半周岁 QQ群(487756074) Markdown标记语言一直是许多程序员的最爱。目前,有许多优秀的Markdown编辑器,也有许多优秀的笔记软件,但是能够支持M...

tamlok
2017/02/12
0
0
如何在任何地方使用 Vim 编辑器输入文本

本文导航 -在 Linux 中安装 Vim-anywhere13% -在任何地方使用 Vim 编辑器输入文本29% 各位 Vim 使用者大家好!今天,我这里有个好消息告诉大家。我会向大家介绍 Vim-anywhere,这是一个简单的...

13%
05/14
0
0
Linux 下 vi/vim 文本编辑器超详细使用指南

Linux下的编辑器最常用的就是vim或者vi文本编辑。vi 和vim 编辑器的区别是vim是vi的改进版本,在vi 编辑器的基础上上扩展了很多实用的功能。 大多数的linux/unix 发行版本中都使用 vim 代替了...

LEAN_IN
2015/01/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
15分钟前
0
0
redis 系列二 -- 常用命令

1.基础命令 info ping quit save dbsize select flushdb flushall 2.键命令 2.1 set 直接赋值 set a a 2.2 get 取值 get a 2.3 exists 是否存在 exists a 2.4 expire 设置剩余时间 秒 expire......

imbiao
46分钟前
1
0
php foreach

<?php// 数组的引用$a=array(1,2,3,4,5);foreach($a as $key=>&$value){$value=$value*2;}print_r($a);echo " $key -------------------$value\r\n";/** * ...

小张525
55分钟前
1
0
12-利用思维导图梳理JavaSE-多线程

12-利用思维导图梳理JavaSE-多线程 主要内容 1.线程概念 2.线程开发 3.线程的状态 4.线程的同步和死锁 5.Java5.0并发库类 QQ/知识星球/个人WeChat/公众号二维码 本文为原创文章,如果对你有一...

飞鱼说编程
今天
0
0
JAVA集合之ArrayList

一、前言 Java 集合类提供了一套设计良好的支持对一组对象进行操作的接口和类,JAVA常用的集合接口有4类,分别是: Collection:代表一组对象,每一个对象都是它的子元素 Set:不包含重复元素...

木木匠
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部