首页 > 技术文章 > vim

li-xingtao 2015-03-04 14:51 原文

vim缺省是vi兼容模式,可能出现退格符删除的字符任然显示,不能持续回退

设置成不兼容模式就好了:
      :set nocp

基本命令

ZZ   保存文件并且离开vi

:e! enter  恢复到刚打开文件的内容,这样可以从头再来

:q! enter  消除编辑结构并且离开vi

:w newfile   将内容写入文件newfile

在vi中输入 :sh 可以打开一个新的shell,使用exit 或者ctrl+d回到vi

 

移动命令

单字符移动:

h  向左一个字符

l  向又一个字符

j  向下一个字符

k  向上一个字符

 

-  移动到上一行的开始

+  移动到下一行的开始

 

在移动命令前面添加数字,用来重复多次操作

 

在一行中移动:

通过设置wrapmargin可以让一行字符到达指定数目时自动换行

:set wm=10

:set wm=0  取消warpmargin设置

:set nu 可以设置显示行编号

 

0 或者 ^  控制移动到一行的开始

$      控制移动到一行的结尾

 

按照文本块移动:

w  使光标移动到下一个单词的第一个字符,标点与符号也算一个单词

W  与w的区别是跳过 标点和符号

b  使光标后退到上一个单词的第一个字符,标点和符号也算一个单词

B  与b的区别是跳过 标点和符号

e  到单词的结尾

 

编辑文本:

i  插入文本

I  在一行的开始插入文本

a  追加文本

A  在一行的结尾追加文本

///////// 插入命令a,i都可以接受数值前缀.例如 50i* [esc] 会插入50个*,只有esc按键之后才会显示

c  更改文本

cw  从光标到这个单词的结尾

c2b  从光标往前两个单词

c$  从光标到此行结尾

c0  从光标到此行开始

cc  替换当前一整行

r  更改光标处的单个字符

R  覆盖,直到按键esc

s  替换光标处的单个字符,并进行插入

S  替换当前行

~  改变字符的大小写

删除文本 d

dw  删除单词

dd或者D  删除一行

x  删除光标位置的单个字符

u  撤消上一个命令

ctrl+r  重做上一个命令

p  粘贴文本

y  复制文本

.  重复上一次操作

o  在光标的下一行打开新行并且插入

O  在光标的上一行打开新行并且插入

J  合并当前行与下一行

切换大小写:

~ 切换当前字符的大小写

gu切换为小写

gU切换为大写

  guw  gub  gu2e  guG

 

 

 

快速移动位置:

ctrl+f  往下滚到一屏

ctrl+b  往上滚动一屏

ctrl+u  往上滚动半屏

ctrl+d  往下滚动半屏

ctrl+e  往上滚动一行,不过光标还是在原来的行号上面

ctrl+y  往下滚动一行,不过光标还是在原来的行号上面

H  移动到屏幕的顶端

M  移动到屏幕的中间

L  移动到屏幕的底端

z+enter  将光标所在行滚动到屏幕顶端,同事光标也移动到顶端

z.    将光标移动到屏幕中间并滚动屏幕

z-    将光标移动到屏幕底端并滚动屏幕

ctrl+l  可以重画屏幕去掉多余的显示信息(比如:使用:w之后在下面显示的提示信息)

+    移动到下一行的第一个字符

-    移动到上一行的第一个字符

n|    移动到当前行的第n列

(    移动到当前句子的开头

)    移动到下一个句子的开头

{    移动到当前段的开头

}    移动到下一段的开头

[[    移动到当前节的开头

]]    移动到下一节的开头

在搜索中移动:

/ 或者? 搜索单词  n或者N查找下一个

在当前行中搜索:

fx  本行中下一个出现x的地方

Fx  上一个出现x的地方

; 或者 ,  一相同或者相反方向重复上一个搜索命令

G根据行号移动

G  移动到最后一行

gg  移动到第一行

nG  移动到第n行

 #  或者 * 查找光标所在位置的单词

 

 

打开文件

用只读模式打开  vi -R filename

恢复异常关闭的缓冲区    vi -r filename

 

恢复删除:

"np  回复上n次删除的数据

 

命名缓冲区

 

标记:

 

缩进:

<<  向左缩进

>>   向右缩进 

 

 重新载入:

  :e

 

格式化代码 =

    gg=G

 

推荐阅读