Vim编辑器在内存缓冲区处理数据。只要键入vim命令和你要编辑的文件的名字,便可启动Vim编辑器。 如在启动Vim时未指定文件名,或者这个文件不存在,Vim会新开一段缓冲区域来编辑;若是命令指定了一个已有的文件的命令,Vim会将文件的整个内容都读到一块缓冲区域来准备编辑。vim
Vim编辑器有两种操做模式:编辑器
当打开要编辑的文件时,Vim编辑器会进入普通模式。在普通模式下,Vim编辑器会将按键解释成命令; 在编辑模式中,按下i键,进入插入模式。插入模式下,每一个按键都将输入到光标位置的缓冲区。按Esc键便可退出插入模式;命令行
在普通模式中,能够用方向键来在文本区域移动光标,若是是在一个没有定义方向键的终端上,还可使用以下按键移动:code
按键 | 光标移动方式(普通模式下) |
---|---|
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编辑器提供了一些命令来编辑缓冲区中的数据。经常使用号命令有:table
命令 | 描述(普通模式下命令) |
---|---|
x | 删除当前光标所在位置的字符 |
dd | 删除当前光标所在行 |
dw | 删除当前光标所在位置的单词 |
d$ | 删除当前光标所在位置至行尾的内容 |
J | 删除当前光标所在行行尾的换行符 |
u | 撤销前一个编辑命令 |
a | 在当前光标后追加数据 |
A | 在当前光标所在行行尾追加数据 |
r char | 用char替换当前光标所在位置的单个字符 |
R text | 用text覆盖当前光标所在位置的数据,直到按下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:/class),按下Enter键,光标会跑到消息行。在输入要查找的文本后,按下Enter键,Vim编辑器会有3中回应:基础
替换命令的格式是:file
: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编辑器的一些基本用法。