vi基本操作——删除、跳转等

vi撤销命令:

   u 撤销上一步的操作
      Ctrl+r 恢复上一步被撤销的操作

vi删除命令:

  vi删除命令同时也是剪切命令,按p可将内容粘贴在光标所在处的下一行。

方法一:

单行删除:1(待删除行)d

多行删除 :1,10d

方法二:

删除光标所在字符:x

删除光标之后单词剩余部分,dw

d$ 删除光标之后该行所有内容

光标所在行,dd

光标所在行以下的N行,Ndd

c,cc 类似d,dd区别在区删除后进入输入模式(insert mode)

删除所有内容, :.,$d

删除每行第一个字符, :%s/^.//g


常见问题及应用技巧

1. 在一个新文件中读/etc/passwd中的内容,取出用户名部分

vi file

:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd

:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分

:3r /etc/passwd 这是在指定的行号后面读入文件内容

另外一种方法删掉文件中所有的空行及以#开始的注释行

#cat squid.conf.default | grep -v '^$' | grep -v '^#

2.用VI编辑一个文件,但需要删除大段大段的内容

vi file

Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号,再到结尾处再按Ctrl+G.

:23,1045d 假定两次行号为23和1045,则把这几间的内容全删除

也可以在开始和结束两行中用ma,mb命令标记后用:'a,'bd删除.

vi跳转命令:

:$ 跳到文件最后一行

:0或:1 跳到文件第一行;:n跳到文件第n行

或另一种模式下

gg 跳到文件第一行;ngg跳到第n行

Shift + g 跳到文件最后一行

vi 多行注释:

如果要给多行程序作注释,一个笨办法就是 插入 # ,然后用 j 跳到下一行用 . 命令,重复上个命令。

如果要注释几百行,这样的方法恐怕太愚蠢了。一个聪明的办法是:

:.,+499 s/^/#/g

若需全文的行首插入可用以下命令

:%s/^/#/g

vi查找字符串

g/string

你可能感兴趣的:(linux,vim)