鸟哥的Linux私房菜10.16 vim程序编辑器

第10章 vim程序编辑器

 为什么要学习vim?——1.所有的Unix Like系统都会内建vi文书编辑器,其它编辑器不一定了;2.很多软件的编辑接口都会主动调用vi;3.vim具有程序编辑的能力,可以主动地以字体颜色辨别语法的正确性;4.程序简单,编辑速度快。

vim就是vi的升级版本了哦

----------------------------------------------------------------------------------------------------------

vi的使用分为三种模式:一般模式、编辑模式、指令列命令模式

【一般模式】用vi打开一个文件,就是删除、粘贴功能了,按 [:wq] 可以离开vi

【编辑模式】按下“i,I,o,O,a,A,r,R”中任一个字母就可以进入编辑模式,按下后界面左下方会出现[INSERT或REPLACE]的字样,按Esc可以返回一般模式

【指令列命令模式】在一般模式时输入' : / ? '中的任何一个按钮,可以将光标移动到最底下那一行,可以搜寻资料,而且读取、存盘、大量取代字符,离开vi,显示行号等等是在这个模式完成。

**在vi里面,[tab]这个按钮所得到的结果与空格符所得到的结果是不一样的**

如果权限不对,可以使用 [:wq!] 来强制写入,这样就实现了vi的编辑功能。

按键说明

h左,j下,k上,l右【光标】

[Ctrl]+f下,b上,d下半,u上半【屏幕】

+ 非空格符的下一列; - 非空格符的上一列 【光标】

n<space>  n表示数字,向后面移动n个字符 【光标】

0或者[Home]    本行第一个字符【光标】

$或[End]   本行最后一个字符【光标】

H上,M中,L下,G尾  【屏幕行数的第一个字符】

nG,移动到这个文件的第n行(可配合 :set nu)    gg移动到文件第一行,相当于1G(常用)

n<Enter>   光标向下移动n行(常用)

/string 光标之下,?string光标之上    搜寻字符串

n重复前一个搜寻的动作

N反向重复前一个搜寻的动作

:n1,n2s/word1/word2/g       在第n1和n2行之间寻找word1这个字符串,并用word2取代之(常用)

:1,$s/word1/word2/g    在第1和最后一行之间寻找word1这个字符串,并用word2取代之(常用)

:1,$s/word1/word2/gc     同上,且在取代前提示给用户确认的机会(常用)

x ,X    x为向后删除一个字符[del],X为向前删除一个字符[backspace](常用)

nx      连续向后删n个字符

dd      删除游标所在的一整行~~~~~~~~书上写的一整列(常用)

ndd    删除光标所在向下n行(常用)

d1G   删除光标所在到第一行的所有数据

dG     删除光标到最后一行的所有数据

d$      删除光标所在到该行最后一个字符

d0      删除光标所在到该行第一个字符

yy       复制光标所在的那一行(常用)

nyy    复制光标所在向下的n行(常用)

y1G   复制光标所在行到第一行的所有数据

yG      复制光标所在列到最后一列的所有数据

y0       复制光标所在的那个字符到该行首的所有数据

y$       复制光标所在的那个字符到该行尾的所有数据

p,P  p为将已复制的数据在光标下一行粘贴,P为在上一行粘贴

J          将光标所在列与下一列的数据结合成同一列

c         重复删除多个数据,例如向下删除10行, 10cj

u         复原前一个动作(常用)

[Ctrl]+r  重做上一个动作(常用)

.         重复前一个动作(常用)

:w      存储(常用)

:w!     若文件只读,强制写入。不过到底能不能写入,还是跟用户权限有关

:q       离开vi(常用)

:q!     强制离开vi而不存储档案

:wq   储存后离开,若加!则是强制储存后离开

ZZ    有修改则储存后离开,无修改则不储存离开

:w [filename]    将编辑的数据储存成另一个档案

:r [filename]      将filename这个文件中的内容加到光标后面

:n1,n2 w [filename]   将n1到n2的内容储存到filename这个文件

:! command    暂时离开vi到指令列执行command的显示结果

:set nu   显示行号,设定之后,会在每一行的前缀显示该行行号

:set nonu    与set nu相反,取消行号

--------------------------------------------------------------------------------------------------------------

vim的救援功能——突然死机的时候通过某种机制恢复未储存的数据【暂存档】

vim编辑过程中,在被编辑的档案的目录下,再建立一个名为 .filename.swp 的档案

由于【暂存档】存在,vim有时会判断你的文件有些问题:

1.可能有其他人或程序同时在编辑该档案。可以让别人结束vim编辑工作,或者如果你只是查看,就选择开启成只读文件okay了

2.因为某些不知名原因导致vim中断——如果尚未保存vim操作,应按下[R],此时会载入暂存档的内容,不过事后要删除暂存档的文件哦;如果确定暂存档没用,直接按下[D]即可

-------------------------------------------------------------------------------------------------------------

alias vi='vim'     执行vim,如果没有这一行,就需要用vim filename来启动vim了

区块选择(Visual Block)

比如说选择一块,复制或者什么操作的

v                  字符选择,会将光标经过的地方反白选择
V                 行选择,会将光标经过的行反白选择
[Ctrl]+v       区块选择,可以用长方形的方式选择资料
y                  将反白的地方复制起来
d                 将反白的地方删除掉

多文件编辑:

:n        编辑下一个文件
:N       编辑上一个文件
:files  列出目前这个vim的开启的所有文件

多窗口功能:

在指令模式下输入 :sp filename  即可,按键主要有以下几个

:sp [filename]     开启一个或者多个窗口
[ctrl]+w+j/↓           移动光标到下方的窗口
[ctrl]+w+k/↑          移动光标到上方的窗口
[ctrl]+w+q             离开

显示vim的所有环境设定参数   :set all

-----------------------------------------------------------------------------------

DOS与Linux的断行字符不相同

Linux底下仅有LF($)这个断行符号

可以使用 unix2dos [kn] file [newfile]     或者  dos2unix  [-kn] file [newfile]  来进行dos和linux文件的切换

语系编码转换:

http://linux.vbird.org/linux_basic/0310vi/vi.big5

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭