vi 共分为三种模式(vim也一样):
• 一般模式:一进入文件就是一般模式了。在这个模式中, 可以使用『上下左右』按键来移动光标,可以『删除字符』或『删除整行』或『复制、粘贴』处理文件。
• 编辑模式:按下『i, I,o, O, a, A, r, R』等字母之后进入编辑模式,编辑模式可以编辑文件内容。要回到一般模式,按下『Esc』按键可退出编辑模式。
• 命令模式:在一般模式当中,输入『 : 或 / 或 ? 』就可以将光标移动到最底行,可以提供『搜寻资料』,读取、存盘、大量取代字符、离开 vi 、显示行号等动作。
特别说明:
Vi具有可恢复功能的呢!比如:当编辑/tmp/passwd,/tmp下会产生一个临时文件,文件名为/tmp/.passwd.swp,所有的修改都会暂时存在这个文件当中,万一发生一些突发时间,如系统挂了,那下次再重新vi /tmp/passwd时,系统会告诉,是否需要恢复Recovery成修改过程中的模样!按下(R)将数据恢复到修改过程的样子,而不是原文件!也就是说能恢复到以前编辑时候的样子。
相关操作:
多窗口情况下的按键功能
:sp [filename]
开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新文件,否则表示两个窗口为同一个文件内容(同步显示)。
[ctrl]+wj
按下ctrl不放,再按w后放开所有的键,再按下j,可移动到下方窗口
[ctrl]+wk
同上,不过光标移动到上面的窗口。
[ctrl]+wq
结束离开
区块选择的按键意义
v
字符选择,会将光标经过的地方反白选择!
V
行选择,会将光标经过的行反白选择!
[Ctrl]+v
区块选择,可以用长方形的方式选择资料
y
将反白的地方复制起来
d
将反白的地方删除掉
多文件编辑的按键,同时打开多个文件后,即vim file1 file2
:n
编辑下一个文件
:N
编辑上一个文件
:files
列出目前这个 vim的开启的所有文件
vim的环境常用设定参数,这些动作会被记录在~/.viminfo
:set nu
设定行号!取消 :set nonu
:set hlsearch
设定是否将搜寻的字符串反色。 默认是开启的,取消 :set nohlsearch。
:set autoindent
自动缩排, 取消 :set noautoindent。
:set backup
一般默认是 nobackup, 如果设定 backup,当更动任何一个文件,则源文件会被另存成一个文件为 filename~的文件。
:set ruler
状态列说明, ruler就是在显示或不显示该设定值!
:set showmode
显示 --INSERT--之类的在左下角的状态列。
:set backspace=(012)
当backspac为2时,可以删除任意值;0或1时,仅可删除刚输入的字符,无法删除原本就已经存在的文字!
:set all
显示目前所有的环境参数设定值。
:syntax (off|on)
依据程序相关语法显示不同颜色!取消 :syntax off。
一般模式: 移动光标的方法
如果想要向下移动30行,可使用 "30j"或 "30↓"的组合按键!方向加行数
0
数字0:移动到这一行的最前面字符处 (常用)
$
移动到这一行的最后面字符处(常用)
H
光标移动到这个屏幕的最上方那一行
M
光标移动到这个屏幕的中央那一行
L
光标移动到这个屏幕的最下方那一行
G
移动到这个文件的最后一行(常用)
nG
n为数字。移动到这个文件的第 n行。(可配合 :set nu)
gg
移动到这个文件的第一行,相当于 1G啊! (常用)
n
n为数字。光标向下移动 n行(常用)
一般模式: 搜索与取代
/word
寻找名称 word的字符串。(常用)
?word
向光标之上寻找一个字符串名称为 word的字符串。
n
代表向下『重复前一个搜索的动作』的意思。。
N
这个 N是英文按键。与 n刚好相反。
:n1,n2s/word1/word2/g
n1与 n2为数字。在第 n1与 n2行之间寻找 word1这个字符串,并将该字符串取代为 word2!(常用)
:1,$s/word1/word2/g
从第一行到最后一行寻找 word1字符串,并将该字符串取代为 word2!(常用)
:1,$s/word1/word2/gc
从第一行到最后一行寻找word1字符串,并将该字符串取代为 word2!且在取代前显示提示字符: (conform)是否需要取代!(常用)
一般模式: 删除、复制与贴上
x, X
在一行字当中,x为向后删除一个字符 (相当于 [del]按键), X为向前删除一个字符(相当于 [backspace]) (常用)
dd
删除光标所在的那一整列(常用)
ndd
n为数字。删除光标所在的向下 n列
d$
删除光标所在处,到该行的最后一个字符
d0
那个是数字的 0,删除游标所在处,到该行的最前面一个字符
yy
复制光标所在的那一行(常用)
nyy
n为数字。复制光标所在的向下 n列(常用)
y0
复制光标所在的那个字符到该行行首的所有数据
y$
复制光标所在的那个字符到该行行尾的所有数据
p, P
p为将已复制的数据在光标下一行贴上,P则为上一行!。 (常用)
J
将光标所在列与下一列的数据结合成同一列
u
复原前一个动作。(常用)
.
重复前一个动作的意思。(常用)
进入编辑模式
i, I
i为从目前光标所在处插入,所有文字后移! I为在所在行的第一个非空格符处开始插入。 (常用)
a, A
与i,I相反。(常用)
o, O
o为在光标所在的下一行处插入新的一行; O为在目前光标所在处的上一行插入新的一行!(常用)
r, R
r会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下ESC为止;(常用)
Esc
退出编辑模式,回到一般模式中(常用)
命令模式
:w
将编辑的数据写入硬盘文件中(常用)
:w!
若文件属性为『只读』时,强制写入该文件。
:q
离开 vi (常用)
:q!
使用 !为强制离开不储存文件。
:wq
储存后离开,若为 :wq!则为强制储存后离开 (常用)
:e!
将文件还原到最原始的状态!
ZZ
储存后离开!
:w [filename]
将编辑的数据储存成另一个文件(类似另存为)
:r [filename]
在编辑的数据中,读入另一个文件的数据。亦即将filename这个文件内容加到光标所在行后面
:n1,n2 w [filename]
将 n1到 n2的内容储存成 filename这个文件。
:! command
暂时离开vi到命令模式,执行 command的显示结果!例如:! ls /home可在vi当中察看/home底下以 ls输出的文件信息!
此外,注意下linux的断行字符
DOS与Linux的断行字符
Ø DOS使用的断行字符为 ^M$,称为CR与LF两个符号。
Ø Linux仅有 LF ($)断行符号。
在Linux下的命令开始执行时,判断依据是『Enter』,其实Linux的Enter就是LF符号。由于DOS的断行符多个 ^M的符号,这样,如果一个shell script的程序文件,在linux下可能程序无法执行。所以要将格式转换成为Linux的断行字符!可以用vim编辑!也可以用命令:
v # dos2unix [-kn] file [newfile]
v # unix2dos [-kn] file [newfile]
参数:
-k :保留该文件原本的mtime时间格式!(修改时间)
-n :保留原本的旧文件,转换后输出到新文文件。
例:将hosts文件格式更新为dos格式。
# unix2dos -k hosts
unix2dos: converting file hosts to DOS format ...
例:将hosts.dos转换为Linux格式到hosts.linux
注意:DOS与 Linux操作系统底下一些字符定义不同,不推荐在Windows当中编辑好文件后,再上传到Linux,很容易发生错误。如果在不同的系统之间复制一些纯文本文件时,记得也使用unix2dos或dos2unix来转换一下格式!
阅读(538) | 评论(0) | 转发(0) |