Linux学习3:vi & vim
上一篇 / 下一篇 2011-08-06 13:27:32 / 个人分类:Linux
W/Lj9w`Q`0
} J&CL3V BV051Testing软件测试网6l%A:[/[Gqh
这三种模式的作用分别是:
.q7]7Zr'q)X0一般模式
%u7X+w yX`G V6r0以 vi 打开一个档案就直接进入一般模式了(默认模式)。
6_Av/Y2HO6`k,zo0G0在这个模式中, 你可以使用『上下左右』按键来移动光标,使用『删除字符』和『删除整行』来处理档案内容, 使用『复制、粘贴』来处理你的文件数据。
,{3}k P Op0编辑模式51Testing软件测试网k|2q| r8zS
在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容! 要等到你按下『i, I, o,
O, a, A, r, R』等任何一个字母后,才会进入编辑模式。51Testing软件测试网v%qt9N(J
R K
注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或
REPLACE 』的字样,此时才可以进行编辑。
Y3]X)A&xE
n+f~:AXT0而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。
- i, I进入插入模式(Insert mode:insert): i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)
- a, A进入插入模式(Insert mode:append):a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)
- o, O进入插入模式(Insert mode:open): o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)
- r, R进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
指令列命令模式51Testing软件测试网Rx.xWQTF0B
在一般模式当中,输入『 : / ?
』三个中的任何一个按钮,就可以将光标移动到最底下那一行。51Testing软件测试网GOz}d vS&t
在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi
、显示行号等的动作则是在此模式中达成的!51Testing软件测试网A9MF'WP6u
- :w将编辑的数据写入硬盘档案中(常用)
- :w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
- :q离开 vi (常用)
- :q!若曾修改过档案,又不想储存,使用 ! 为强制离开丌储存档案。注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
- :wq储存后离开.强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间.
,G1M8E$ET Tv a0:x写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。
.w ZM%nJ R%Zv0这两者一般情况下没什么不一样,但是在编程方面,对编辑源文件可能会产生重要影响。因为文件即使没有修改,":wq"强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。51Testing软件测试网/W9^^,pp0M
ND!^F7R$`j#@0
$Z/X}(Ook8Mqn0快速移动
.o.B'Rq;D01.上下左右移动:
X
H%X*J*{*U!X#Y4FN0•可以使用四个方向键(不推荐)
"JMB%z`1`0•推荐使用j、k、l、h(熟练了以后是凭感觉)51Testing软件测试网'TV+}$HrI
•向下翻页:ctrl+f (forward)51Testing软件测试网"w!{wI?Bj ]0J9@
•向上翻页:ctrl+b (back)51Testing软件测试网(X
v{n_
51Testing软件测试网(o/bLI8f|e*IT
2.文档内移动:
8dP)SE!dqFII0•移动到文档的开始:gg
T6B7Txl5FfTY0•移动到文档的结尾:G51Testing软件测试网k-[(hFq3I+O
•移动到第n行:nG
9E-q:c-k0w3Ngh051Testing软件测试网 k7FVmxON
3.行内移动:51Testing软件测试网)uZk)Ugnb~
•移动到一行的开头:051Testing软件测试网:Cd#x
VK&Q|
•移动到一行的结尾:$
2lJq]d:e0•移动到下一个单词的开头:w
b.[2~M5r]0•移动到上一个单词的开头:b
mMU;wX4?
{*_051Testing软件测试网Un$M0H~jP:N\
复制、粘贴、删除51Testing软件测试网5O"M%P%s
I_6E-|v
1.复制一行:yy51Testing软件测试网%Y3?u?'i]r5r?g
2.复制一个单词:yw
#{"p:uM L @1F6SW3H#Y03.复制从当前位置到行尾:y$
4Gt(fV#|$y04.复制n行:yny(5行以内好用,多了数起来就麻烦)51Testing软件测试网4tT#N+h
n;tI,g
5.复制选择的很多行:先使用V进入visual
模式,然后j向下移动到你想复制的行为止,然后y
"s_-`-Yu!}&dP6x"_h06.所有的粘贴都是:p51Testing软件测试网
~)L
G%UvH S
7.删除:d(删除就是剪切,它会覆盖之前复制的内容)
f#u6Q$D8nX6CC08.删除一行:dd
7t5YA@V"EY09.......和复制的操作是类似的。51Testing软件测试网{2TU/K$V'e(D}
51Testing软件测试网Y,lT.h6y
块状编辑51Testing软件测试网4v$eHi]$\Y[
在编写程序的时候,非常有用。例如整块代码整体缩进,整体注释等Ctrl+v进入到块状模式,然后使用j、k、l、h来选择块状区域,然后
m r |-u!f
N3~{!W01.d来删除,或者
2.I(大写的i)来进入插入模式,输入文本,然后按ESC,它就生效.
撤销和恢复51Testing软件测试网BG%Y4o rOpF#|A+?
很喜欢Windows下面的Ctrl+z和Ctrl+y吧,在vim也有这个功能。只是命令不一样:51Testing软件测试网EKk1A/K4AO \
撤销:u
?b#Z7R-p9J/t0恢复:Ctrl
+ r51Testing软件测试网q-Es1FT r(M`v^
51Testing软件测试网[:a%P%L Ba:J*R
eM
查找和替换
.M+BF#T_)eC0last line
mode:在命令模式下面,输入“:”,然后,再在后面输入命令
q-P8{JD^#V0查找::/<你要查找的字符串>,找到一个后,按n或者N来向前或者向后查找下一个
$i\
I~$[)P6}~a0查找并替换::%s/<准备替换的字符串>/<替换后的字符串>/g51Testing软件测试网
RZfzu2bw
查找替换要求确认::%s/<准备替换的字符串>/<替换后的字符串>/c
小技巧51Testing软件测试网"czjJ/Z3g
51Testing软件测试网ZxXb9a6y
{L/CcS2H,K y0重复上次的命令:.
-f4EC oL051Testing软件测试网?#K]+B|括号匹配(写代码的时候非常有用):%51Testing软件测试网R,g"[5],Z5Hj
)Y6KN7^8b&E[Q@0查找当前光标所在位置的单词:#