linux中vim的使用

来源:互联网 发布:巴赫旧约德语知乎 编辑:程序博客网 时间:2024/06/05 11:03

vim分为三种模式:一般模式、编辑模式、命令模式。
一般模式:在这个模式下,你可以做的操作有,上下移动光标;删除某个字符;删除某行;复制、粘贴一行或者多行。
编辑模式:从一般模式进入编辑模式,只需你按一个键即可(i,I,a,A,o,O,r,R)。当进入编辑模式时,会在屏幕的最下一行出现“INSERT或REPLACE”的字样。从编辑模式回到一般模式只需要按一下键盘左上方的ESC键即可。
命令模式:在一般模式下,输入”:”或者”/”即可进入命令模式。在该模式下,你可以搜索某个字符或者字符串,也可以保存、替换、退出、显示行号等等。

下面是具体的命令:

一般模式下移动光标


h或向左方向键 : 光标向左移动一个字符
j或向下方向键 :光标向下移动一个字符
k或向上方向键 :光标向上移动一个字符
I或向右方向键 :光标向右移动一个字符
Ctrl+f或者pageUP键:屏幕向前移动一页
Ctrl+b或者pageDown键:屏幕向后移动一页
Ctrl + d : 屏幕向前移动半页
Ctrl + u : 屏幕向后移动半页
+ : 光标移动到非空格符的下一列
- : 光标移动到非空格符的上一列
n空格(n是数字): 按下数字n然后按空格,则光标向右移动n个字符,如果该行字符数小于n,则光标继续从下行开始向右移动,一直到n
0(数字0)或者Shift+6 : 移动到本行行首
Shift+4 : 即’$’移动到本行行尾
H : 光标移动到当前屏幕的最顶行
M : 光标移动到当前屏幕的中央那一行
L : 光标移动到当前屏幕的最底行
G : 光标移动到文本的最末行
nG(n是数字): 移动到该文本的第n行
gg : 移动带该文本的首行
n回车(n是数字) : 光标向下移动n行

一般模式下的查找和替换


/word : 向光标之后寻找一个字符串名为word的字符串,当找到第一个word后,按”n”继续搜后一个
?word : 想光标之前寻找一个字符串名为word的字符串,当找到第一个word后,按”n”继续搜前一个
:n1,n2s/word1/word2/g : 在n1和n2行间查找word1这个字符串并替换为word2,你也可以把”/”换成”#”
:1,s/word1/word2/gword1word2:1,s/word1/word2/gc : 加上c的作用是,在替换前需要用户确认
一般模式下删除、复制粘贴
x,X : x为向后删除一个字符,X为向前删除一个字符
nx(n为数字) : 向后删除n个字符
dd : 删除光标所在的那一行
ndd(n为数字) : 删除光标所在的向下n行
d1G : 删除光标所在行到第一行的所有数据
dG : 删除光标所在行到末行的所有数据
yy : 复制光标所在的那行
nyy : 复制从光标所在行起向下n行
p,P : p复制的数据从光标下一行粘贴,P则从光标上一行粘贴
y1G : 复制光标所在行到第一行的所有数据
yG : 复制光标所在行到末行的所有数据
J : 讲光标所在行与下一行的数据结合成同一行
u : 还原过去的操作

进入编辑模式


i : 在当前字符前插入字符
I : 在当前行行首插入字符
a : 在当前字符后插入字符
A : 在当前行行末插入字符
o : 在当前行下插入新的一行
O : 在当前行上插入新的一行
r : 替换光标所在的字符,只替换一次
R : 一直替换光标所在的字符,一直到按下ESC

命令模式


:w : 将编辑过的文本保存
:w! : 若文本属性为只读时,强制保存
:q : 退出vim
:q! : 不管编辑或未编辑都不保存退出
:wq : 保存,退出
:e! : 将文档还原成最原始状态
ZZ : 若文档没有改动,则不储存离开,若文档改动过,则储存后离开,等同于:wq
:w [filename] : 编辑后的文档另存为filename
:r [filename] : 在当前光标所在行的下面读入filename文档的内容
:set nu : 在每行的行首显示行号
:set none : 取消行号
n1,n2 w [filename] : 将n1到n2的内容另存为filename这个文档
:! command : 暂时离开vim运行某个linux命令,例如 :! ls /home 暂时列出/home目录下的文件,然后会提示按回车回到vim

练习:
1. 请把/etc/init.d/iptables 复制到/root/目录下,并重命名为test.txt

  1. 用vim打开test.txt并设置行号

  2. 分别向下、向右、向左、向右移动5个字符

  3. 分别向下、向上翻两页

  4. 把光标移动到第49行

  5. 让光标移动到行末,再移动到行首

  6. 移动到test.txt文件的最后一行

  7. 移动到文件的首行

  8. 搜索文件中出现的 iptables 并数一下一共出现多少个

  9. 把从第一行到第三行出现的iptables 替换成iptable

  10. 还原上一步操作

  11. 把整个文件中所有的iptables替换成iptable

  12. 把光标移动到50行,删除字符”$”

  13. 还原上一步操作

  14. 删除第50行

  15. 还原上一步操作

  16. 删除从37行到42行的所有内容

  17. 还原上一步操作

  18. 复制48行并粘贴到52行下面

  19. 还原上一步操作(按两次u)

  20. 复制从37行到42行的内容并粘贴到44行上面

  21. 还原上一步操作(按两次u)

  22. 把37行到42行的内容移动到19行下面

  23. 还原上一步操作(按两次u)

  24. 光标移动到首行,把/bin/sh 改成 /bin/bash

  25. 在第一行下面插入新的一行,并输入”# Hello!”

  26. 保存文档并退出

0 0