三、vim的暂存文件、救援恢复与开启警告
1、暂存文件:
在使用vim编辑时,vim会在与被编辑的文件的目录下,在建立一个名为.filename.swp的文件。当对filename文件的操作都会保存在.swp文件中,如果系统突然关机了等,编辑的文件却还没来得及保存,那么可以通过.swp文件补救。
接下来模拟通过.swp文件救援咱们的文件
[root@server1 vitest]# vim man.config ##在一般模式下按下ctrl + z组合键
[1]+ Stopped vim man.config
##使用ctrl + z组合键将其打入后台,也就是说,man.config仍然在后台被vim打开,但是我们可以在终端执行其他的操作
[root@server1 vitest]#
[root@server1 vitest]# ls -al
total 32
drwxr-xr-x 2 root root 4096 Aug 16 21:53 .
drwxrwxrwt. 10 root root 4096 Aug 16 21:50 ..
-rw-r--r-- 1 root root 4940 Aug 16 21:52 man.config
-rw-r--r-- 1 root root 16384 Aug 16 21:53 .man.config.swp ##这就是.swp暂存文件
[root@server1 vitest]#
#########模拟vim突然被关闭,而man.config没有被正常保存退出############
[root@server1 vitest]# kill -9 %1 ##模拟vim突然停止工作
[1]+ Stopped vim man.config
[root@server1 vitest]# ls -al
total 32
drwxr-xr-x 2 root root 4096 Aug 16 21:53 .
drwxrwxrwt. 10 root root 4096 Aug 16 21:50 ..
-rw-r--r-- 1 root root 4940 Aug 16 21:52 man.config
-rw-r--r-- 1 root root 16384 Aug 16 21:53 .man.config.swp ##.swp文件还存在
[1]+ Killed vim man.config ##vim man.config这个进程被杀掉了
[root@server1 vitest]#
###############再打开man.config文件#########################
[root@server1 vitest]# vim man.config
E325: ATTENTION ##错误代码
Found a swap file by the name ".man.config.swp" ##说明存在一个暂存文件.man.config.swp
owned by: root dated: Wed Aug 16 21:53:25 2017 ##这个文件的所有者为root
file name: /tmp/vitest/man.config ##这个暂存文件属于那个实际的文件
modified: no ##是否修改
user name: root host name: server1.example.com ##用户名,主机名
process ID: 2422 ##进程号,即当时打开这个文件时的进程号
While opening file "man.config"
dated: Wed Aug 16 21:52:43 2017
####说明发生这个错误的两个主要原因与解决方案
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.
#####
可能有其他人或程序在同时编辑这个文件
解决方法:
a、找到另外那个程序或人员,请他将该vim的工作结束
b、如果只是查看文件内容而不修改,则可以选择下面的[O]选项
#####
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r man.config"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".man.config.swp"
to avoid this message.
#####
在前一个vim的环境中,可能因为某些不知名原因导致vim中断(常见)
常见解决办法:
a、如果之前对文件的vim操作没有保存,可以选择[R]键,此时,vim会载入.swp文件里 的内容,然后你就可以保存之前未保存的操作,然后需要删除当前目录下的.swp文件, 否则,当再次打开时,还会出现像这样的警告
b、如果你确定这个.swp文件没有用,那么可以选择[D]按键将这个文件删除,然后vim就 会重新载入man.config文件,并且会产生一个新的.swp文件
#######
Swap file ".man.config.swp" already exists! ##告诉你.man.config.swp已经存在
####底下是告诉你你可以进行的操作###########
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
[O]pen Read-Only:以只读形式打开这个文件,但是无法编辑。
(E)dit anyway:以正常的形式打开文件,不会载入.swp文件里的内容,但是如果有另一个人也在编辑这个文件,那么这个文件就会出现问题,所以不建议使用这种方式。
(R)ecover:载入.swp文件里的内容。当你没来得及保存对文件的操作时,可以选择这种方式。注意,当保存退出之后,记得要把.swp文件删除。
(D)elete it:如果确定这个.swp文件是没用的,可以选择这个按键将其删除,然后就可以正常打开文件了。
(Q)uit:直接退出,不进行任何操作。
(A)bort:忽略,与Q类似。
################################################
四、vim的额外功能
vim 的用法与vi一模一样
可以给vim定义一个别名 alias vi=‘vim’
这样当执行vi命令时,实际上就是在执行vim这个命令。
###################################################################3
1、那么当我们用vim打开文件时会出现哪些内容呢
[root@server1 vitest]# vim man.config
如图所示:
(1)由于man.config是系统规划的配置文件,因此vim会进行语法检验,所以看到的大部分内容都是蓝色,而且都是注释行,非注释行则是其他的颜色;
(2)左下角显示该文件的属性,文件名,共多少行,共多少个字符;
(3)右下角出现的1,1表示光标所在的位置为第一行第一个字符,top表示目前这个画面是整个文件的最前面部分。如果阅览到文件的三分之一,会显示30%。
2、区块选择
v 字符选择,会将光标经过的地方反白选择
V 行选择,会将光标经过的行反白选择
ctrl + v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的部分删除
例如:将server复制到每一行的后面
将光标移动到第一行的 host 那个 s 上,然后按下 [ctrl]-v ,左下角出现区块示意字样:-- VISUAL BLOCK --
将光标移劢到最底部,此时光标移劢过癿区域会反白!如下图所示:
然后按下y进行复制,此时反白的区块会消失,并且会提示有六行的块被复制
然后将光标移动到第一行的最右边,并且可以使用编辑模式向右按两个空格(也可以不用,看你自己需要),回到一般模式后再按下p,就可以进行粘贴了
###############################################################33
2、多档案编辑
意义:当我们需要将一个文件里的一部分内容复制到另一个文件里时,不能使用yy/p复制粘贴命令,我们需要打开两个终端,然后两个vim分别打开两个文件,然后用鼠标进行圈选,然后才可以进行复制粘贴。这样就会增加我们的工作量,这个时候用多档案编辑就方便多了。
使用的按键:
:n 编辑下一个文档
:N 编辑上一个文档
:files 列出目前这个vim的开启的所有文件
例如:将上面的文件里的IP复制到另一个文件里
(1)通过[ [root@server1 vitest]# vim hosts ip ]命令使一个vim开启两个文件
(2)使用 :files查看编辑的文件有哪些
绿色的是说按enter键回到一般模式
(3)回到一般模式,在第一行输入 4yy 复制四行
(5)在 vim 的环境下输入 :n 会来到第二个编辑的档案,亦即 ip 内;
此时进入了ip文件,可以看到这是一个新文件
(6)按下p进行粘贴
(7)在任意一个文件里按下 :wq 进行保存退出
###########################################################33
3、多窗口功能
多窗口中使用的按键:
:sp [filename] 开启一个新窗口,如果有加filename,表示在新窗口开启一个新的文件, 否则表示在新窗口开启同一个文件
ctrl + w + v 横向分屏
ctrl + w + s 纵向分屏
ctrl + w + c 删除分屏
ctrl + w + j /向下键 先按下ctrl不放,在按下w,然后全部放开,然后再按下j或向下键, 则光标就可以移到下方的窗口
ctrl + w + k/向上键 方法同上,光标移动到上方的窗口
ctrl + w + q 也就是 :q 命令,即离开当前窗口
####################################################################
4、vim的环境设定与记录:~/.vimrc,~/.viminfo
~/.viminfo:文件自动产生,这个文件记录的是,你曾用过vim所进行的操作,例如,当你用vim再某一个文件里搜寻过某一个字符串时,那个字符串会高亮显示,当你下一次再进入这个文件时,那个字符串同样的高亮显示,光标也会停留在上一次停留的地方。这就是~/.viminfo文件的功劳。你可以在这个文件里查找你在vim里所做过的操作。
~/.vimrc:vim环境设置文件。这只是设置某个用户的vim,如果想要设置所有用户的vim,可以编辑/etc/vimrc文件。
vim 的环境设定参数:
set nu/nonu 设定/取消行号
set hlsearch/nohlsearch high light search 高亮度搜寻
set autoindent/noautoindent 是否自动缩排
set tabstop=4 设定tab键的缩进统一为4
set mouse=a 设定鼠标可以操作光标位置
set background=dark 设定背景颜色
set backup 是否自动储存备份文件?一般是 nobackup , 如果设定backup 的话,那么当你更动任何一个文件时,则源文件会被另存 成一个 档名为filename~ 的文件。 举例来说,我们编辑 hosts ,设 定 :set backup ,那么当更动 hosts 时,在同目录下, 就会产生 hosts~ 文件名的档案,记录原始的 hosts 档案内容
set ruler 是否显示右下角的状态设定值
set showmode 是否显示--INSERT--等字样
set backspace=(012) 删除字符。当 backspace 为 2时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存 在 的文字
set all 显示目前设定的所有环境参数值
set 显示与系统默认值不同的设定参数, 一般来说就是你有自行变 动过的设定参数
syntax on/off 是否依据程序相关语法显示不同颜色
set bg=dark/light 可用以显示不同的颜色色调
######################################################################3