vim编译器
vi编译器是Unix最初的编译器。他可能是世界上最复杂的编译器,但是学好它可以带来极大的收获。
vim基础
vim编译器在内存缓冲区中处理数据。只要键入vim命令和要编译的文件名就可以启动编译器。
如果vim指定的文件不存在,vim会开辟一个新的缓冲区域来编辑。如果文件是存在的,vim会将整个文件都读入一块缓冲区域来准备编辑。
vim编辑器有两个操作模式:
- 普通模式
- 插入模式
当你刚打开要编辑的文件时,vim编辑器会进入普通模式。在普通模式中,vim编辑器会将按键解释成命令。
在插入模式下,vim会将你在当前光标位置输入的每个键都插入到缓冲区。
按下i键即可进入插入模式。要退回普通模式按下退出键(Esc)。
在普通模式中,可以用方向键在文本区域移动光标。或者用命令按键:
- h:左移一个字符
- j:下移一个字符
- k:上移一个字符
- l:右移一个字符
- PageDown(Ctrl+F):下翻一屏
- PageUp(Ctrl+B):上翻一屏
- G:移动到缓冲区最后一行
- num G:移动到缓冲区第num行
- gg:移动到缓冲区第一行
vim编辑器在普通模式下有个特别功能叫做命令行模式
。命令行模式提供一个交互式命令行,可以输入额外的命令来控制vim,在普通模式下按冒号键,光标会移动到消息行,然后出现冒号,等待输入命令。
在命令行模式有几个命令可以将缓冲区数据保存到文件中并退出vim。
- q:如果未修改缓冲区数据,退出。
- q!:取消所有对缓冲区数据的修改并退出。
- w filename:将缓冲区数据保存到另一个文件中。
- wq:将缓冲区数据保存到文件中并退出。
编辑数据
在插入模式下,可以向缓冲区插入数据。然而有时将数据输入到缓冲区后,需要再对数据进行添加或删除。
在普通模式下,vim编辑器提供了一些命令来编辑缓冲区中的数据。
命令 | 描述 |
x | 删除当前光标所在位置的字符 |
dd | 剪切当前光标所在的行 |
dw | 剪切当前光标所在位置的单词 |
d$ | 剪切当前光标所在位置 至 行尾的内容 |
J | 删除当前光标所在行行尾的换行符 |
u | 撤销前一个编辑命令 |
a | 在当前光标后追加数据 |
A | 在当前光标所在行 行尾追加数据 |
r char | 用char替换当前光标所在位置的单个字符 |
R text | 用text覆盖当前光标所在位置的数据,直到按下Esc键 |
复制和粘贴
剪切和粘贴 上面提到的dd命令其实就是剪切,删除的内容单独存在了寄存器中。可以使用p命令取回数据。
复制和粘贴 vim中复制命令是y(yw表示复制一个单词、y$表示复制前光标所在位置 至 行尾的内容)。粘贴一样使用p命令。
复制的复杂之处在于,你不清楚自己复制了什么东西,直到你把他粘贴出来才能看见。
这时可以使用可视模式
v命令来解决。(v命令类似windows下的长按鼠标选中)
查找和替换
使用vim的查找命令可以轻松的在缓冲区中查找数据。要输入一个查找字符串,按下下斜线(/)键。光标会跑到消息行,然后vim会显示出斜线。输入要查找的文本,按下回车。vim会采用以下三种回应的一种
- 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。
- 如果要查找的文本未出现在光标当前位置之后出现,则光标会绕过文件末尾,出现在该文本所在的第一个位置。
- 输出一条错误信息,说明没有查到文本字符串。
替换命令允许使用一个单词来替换掉文本中的某个单词。必须进入命令行模式才可以使用替换命令。
:s/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,但每次出现都提示
#g的全局替换控制的是行,%控制的是整个文件。
linux还有很多编辑器,例如nano(非常基础简单的一款)、emacs、KDE、GNOME……这里不再介绍,只要掌握一种编辑器并精通就足够了。