当使用vi编辑文件保存退出时报以下错误:
E138: Can't write viminfo file /root/.viminfo!
Hit ENTER or type command to continue [ENTER]
呵呵,当初还以为vi坏了,吓一跳,后找到解决方法如下:
删除~/.viminf*.tmp 文件就搞定!
那这个.viminfo文件到底是什么东西呢?
1) 什么是.viminfo
信息文件 viminfo 被设计为储存状态信息:
命令行和模式搜索的历史记录
寄存器内文本
各种文件的标记
缓存器列表
全局变量
你每次退出 Vim,它就把此种信息存放在一个文件内。即 viminfo 信息文件。当 Vim
重新起动时,就读取这个信息文件, 而那些信息就被还原了。
选项 ‘viminfo’ 的默认设定是还原有限的几种信息。你也许希望设定它记住更多的信息.
下面这个命令可以办到:
:set viminfo=string
其中字符串 “string” 规定了什么要储存。该字符串的语法为一个选项字符跟一个参数.
选项和参数组成的对子之间由逗号分隔.
来看一下你可以怎样构建你自己的 viminfo 字符串。首先,选项 ‘ 用于规定你为多
少个文件保存标记 (a-z)。为此选项挑一个美妙的偶数 (比如 1000). 你的命令现在看
起来像这样:
:set viminfo=’1000
选项 f 控制是否要储存全局标记 (A-Z 和 0-9)。如果这个选项设为 0,那么什么也不
存储。如果设为 1 ,或你对 f 选项不作规定, 那么标记就被存储. 你要这个功能, 现
在你有了:
:set viminfo=’1000,f1
选项
:set viminfo='1000,f1,
你也许用得着的其它选项:
: 保存命令行历史记录内的行数
@ 保存输入行历史记录内的行数
/ 保存搜索历史记录内的行数
r 可移介质,其中没有任何标记存入 (可用多次)
! 以大写字母开头的全局变数,并且不含有小写字母
h 起动时解除选项 'hlsearch' 的高亮度显示
% 缓冲列表 (只有当不带参数起动 Vim 时才还原)
c 用编码 'encoding' 转换文本
n 用于 viminfo 文件的名称 (必须为最后一项选项)
2) /root/.viminfo示例:
# This viminfo file was generated by Vim 7.0.
# You may edit it if you're careful!
# Value of 'encoding' when this file was written
*encoding=utf-8
# hlsearch on (H) or off (h):
~H
# Last Search Pattern:
~MSle0~/22
# Command Line History (newest to oldest):
# Search String History (newest to oldest):
?/22
?/ss
# Expression History (newest to oldest):
# Input Line History (newest to oldest):
# Input Line History (newest to oldest):
# Registers:
""- CHAR 0
#
# File marks:
'0 37 21 /etc/sysconfig/iptables
'1 25 11 /etc/sysconfig/nfs
# Jumplist (newest first):
-' 37 21 /etc/sysconfig/iptables
-' 1 0 /etc/sysconfig/iptables
-' 25 11 /etc/sysconfig/nfs
-' 1 0 /etc/sysconfig/nfs
-' 25 11 /etc/sysconfig/nfs
-' 1 0 /etc/sysconfig/nfs
# History of marks within files (newest to oldest):
> /etc/sysconfig/iptables
" 37 21
^ 37 22
. 37 18
+ 36 5
+ 38 9
+ 37 18
> /etc/sysconfig/nfs
" 25 11
^ 40 15
. 40 14
+ 13 16
+ 19 17
+ 21 17
+ 34 15
+ 40 14