一,vi与vim
他们都是多模式编辑器,vim 是 vi 的升级版,与 vi 相比扩展了很多功能且保持与 vi 的 90%相兼容,而且还有一些新的特性在里面。
vim 的优势主要体现在以下几个方面:
1,多级撤销
在vi里,按u只能撤销上次命令,而在vim里可以无限制的撤销。
2,易用性
vi只能运行与Unix,而vim可以运行在Unix,Windows,Mac等多种平台。
3,语法加亮
4,可视化操作
vim不仅可以运行在终端,也可以运行于x window,mac os, windows。
5,对vi完全兼容
二,vi基本操作
1,vi 有 3 种模式,分别为命令行模式、插入模式及底行模式。下面具体介绍各模式的功能。
(1)命令行模式。
用户在用 vi 编辑文件时,最初进入的为一般模式。在该模式中用户可以通过上下移动光标进行“删除字符”或“整行删除”等操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。(此处上下移动光标出现问题可看后面解决方案)
(2)插入模式。
只有在该模式下,用户才能进行文字编辑输入,用户按[ESC]可键回到命令行模式。
(3)底行模式。
在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。
2.vi 的基本流程
(1)进入 vi,即在命令行下键入“vi 文件名”。此时进入的是命令行模式,光标位于屏幕的上方。
(2)在命令行模式下键入 i 进入插入模式。可以看出,在屏幕底部显示有“插入”表示插入模式中的输入状态,在该模式下可以输入文字信息。
(3)最后,在插入模式中,按“Esc”键,则当前模式转入命令行模式,并在底行行中输入“:wq”(存盘退出)进入底行模式。
这样,就完成了一个简单的 vi 操作流程:命令行模式→插入模式→底行模式。由于 vi 在不同的模式下有不同的操作功能,因此,读者一定要时刻注意屏幕最下方的提示,分清所在的模式。
3.vi 的各模式功能键
(1)命令行模式常见功能键如下所示。
i 切换到插入模式,在目前的光标所在处插入输入的文字,已存在的文字会向后退
a 切换到插入模式,并从目前光标所在位置的下一个位置开始输入文字
o 切换到插入模式,且从行首开始插入新的一行
[ctrl]+[b] 屏幕往“后”翻动一页
[ctrl]+[f] 屏幕往“前”翻动一页
[ctrl]+[u] 屏幕往“后”翻动半页
[ctrl]+[d] 屏幕往“前”翻动半页
0(数字 0) 光标移到本行的开头
G 光标移动到文件的最后
nG 光标移动到第 n 行
$ 移动到光标所在行的“行尾”
n<Enter> 光标向下移动 n 行
/name 在光标之后查找一个名为 name 的字符串
?name 在光标之前查找一个名为 name 的字符串
x 删除光标所在位置的一个字符
X 删除光标所在位置的前一个字符
dd 删除光标所在行
ndd 从光标所在行开始向下删除 n 行
yy 复制光标所在行
nyy 复制光标所在行开始的向下 n 行
p 将缓冲区内的字符粘贴到光标所在位置(与 yy 搭配)
u 恢复前一个动作
dw 删除光标之后的单词剩余部分
d$ 删除光标之后的该行剩余部分
c 功能和d相同,区别在于完成删除操作后进入插入模式
cc 也是删除当前行,然后进入插入模式
删除每行第一个字符 :%s/^.//g
(2)插入模式的功能键只有一个,即按“Esc”键可回到命令行模式。
(3)底行模式常见功能键如下所示。
:w 将编辑的文件保存到磁盘中
:q 退出 vi(系统对做过修改的文件会给出提示)
:q! 强制退出 vi(对修改过的文件不作保存)
:wq 存盘后退出
:w [filename] 另存一个名为 filename 的文件
:set nu 显示行号,设定之后,会在每一行的前面显示对应行号
:set nonu 取消行号显示
三,vi命令行模式,按键盘上下左右键不会移动光标而是出现ABCD问题并换行,删除也没用
出现这种问题是因为Ubuntu只是安装了简易的vi,简易的vi相当于vim-common ,而需要的是vim full版本。
先执行语句:$sudo apt-get install vim,多试两次,如果该语句出错就执行下面的语句。
$sudo apt-get remove vim-common
$sudo apt-get install vim
另一种解决方案:root权限执行以下命令:
cp /etc/vim/vimrc ~/.vimrc