精心收集的必须熟悉的vim快捷键操作

转载自  http://www.dabu.info/?p=801

另外两个不错的关于Vim的文章

http://blog.csdn.net/tsuliuchao/article/details/8131537

http://www.cnblogs.com/tzhangofseu/archive/2011/12/17/2290955.html


Vim/Vi 没有菜单,只有命令
Vim/Vi 工作模式介绍:
插入模式 和  命令模式 是vi的两个基本模式。
――插入模式 ,是用来编写文本内容的。
――命令模式,是用来编辑文本,如上下翻页等,复制粘贴,跳转到指定行等操作
当前编辑的顶部或者底部会显示vim处于何种模式下。如:mode:COMMAND!
进入和退出vim编辑器:
进入   vi filename(要编辑的文件名字)―――>进入了命令模式
命令模式――>输入  :wq――>退出
保存退出
:wq      保存修改并退出
ZZ      快捷键,保存修改并退出(前面没有冒号)
:q!        不保存退出
:wq!    强行保存退出,(文件所属者科忽略文件的制度属性)
:w        保存不退出
:wqa     保存所有文件
:w  new_filename  另存为指定文件
vim配置文件    所在目录~/.vimrc
1.修改配置文件时,可以不用加:
2.可将编辑模式下的命令写在里面,每个命令单独一行,这样每次启动时,会自动执行里面的命令。
~   home directory
root   /root
users  /home     zhangsan   /home/zhamgsan
命令模式――>输入i(或者ao) ――> 插入模式
i     insert
还可以输入其他的字母,来进入插入模式:
___________________________________________________________________________-
插入命令
命令                    作用
a                     在光标后附加文本
A                     在本行行末附加文本
i                     在光标前插入文本
I                     在本行开始插入文本
o (字母)              在光标下插入新行
O (字母)              在光标上插入新行
插入模式―――> ESc键―――>命令模式          http://www.dabu.info/?p=801
如果要保存文件,就要从插入模式切换为命令模式才行
命令模式――>: ――> 编辑模式
编辑模式―――>命令行回车结束运行――>命令模式
在编辑模式执行完命令后,会自动回到命令模式
――――――――――――――――――――――――――――――
定位命令
命令                        作用
h、方向左键            左移一个字符
j、 方向下键            下移一行
k、方向上键            上移一行
l、 方向右键            右移一个字符
$                           移至行尾
0                            移至行首
_______________________________________
H                            移至屏幕上端
M                            移至屏幕中央
L                            移至屏幕下端
(                        (左小括号)移动到上一个句子首
)                        (右小括号)移动到下一个句子首
{                        (左大括号)移动到上一个段落首
}                        (右大括号)移动到下一个段落首
快速定位,括号匹配, %
在command模式下。当文本中存在  (  ,{  ,[  ,等符号时可以通过输入  % (就是按shift键和数字5键)  来跳到括号对应的位置
[[                        光标跳转到代码块开头即{处,要求{独占一行
gD                        光标跳转到局部变量定义处
''                        (两个单引号)光标跳转到上次停靠处
――――――――――――――――――――――――――――
快速定位   ,行头与行尾 0 与 $
在command模式下,
命令                                作用
0(数字0键)                            移至行首(把光标移至当前行的起始位置,第一个非空白字符之前,简单点说就是^ 的前面)
^(尖角号)                               把光标移至当前行的起始位置,也即当前行的第一个非空白字符位置
<HOME> 移动到本行第一个字符。同0健。
$(就是按shift键和数字4键)            移至行尾
n$         移动到下面(包括光标所在行)n行的行尾。
―――――――――――――――――――――――――-
单个词组操作光标移动命令:
命令                        作用
W (大写)                       移动到下一个单词的首位置(如果连个单词直接有 逗号连接,则认为是一个单词)
w(小写)                            将光标右移一个单词的首位置。光标停留在下一个单词的首位置(两单词有逗号相连,则认为逗号也是一个单词),注意:如果已到行尾,则转至下一行行首
nw                    向左移动n个单词,光标停在单词的首位置
e                        移动到单词末尾(把光标移至当前所在单词(或下一个单词)的最后一个字符位置)
ne                    和nw类似,只不过光标停留在单词的尾部
E                            和小写用法一样,只是以空格字符作为字的分隔符。
nE
b                        移动到单词的头部(如果光标已经在单词的头部,则将光标左移一个单词。光标停留在下一个单词的字首位置)
nb                    和nw类似,只不过这是向右移动
B         将光标左移一个单词,只是以空格字符作为字的分隔符。光标停留在下一个单词的单词首位置位置(如果连个单词直接有 逗号连接,则认为是一个单词)
nB
注意:上面这些命令都使用’iskeyword‘选项中的字符来确定单词的分界,还有几个命令,只把空白字符当做”单词“的分界。当然,这里说的” 单词“已经不是传统意义上的单词了,而是由非空白字符构成一串字串。命令”W“移动光标到下个字串的开始,命令”B“移动到上个字串的开始;命令”E“移 动到下个字串的结尾,命令”gE“移动到上个字串的结尾。和上面的命令比较一下,发现什么规律没有?
――――――――――――――――――――――――――――
多个词组光标移动:
上面我们掌握了单个词组的移动,如果需要移动多个词组的光标,只需要在使用前加上要移动的词组的个数即可。一个英文字母的宽度是1,两个字母的宽度等于一个汉字的宽度。
举例如下:
Example : ABC   DEF   GHI   JKL   MNO   PQR   STUVW
假设光标现在处于Example的E处。并且vim处于command模式。那么我们先按 数字3键 ,再按w键。光标就会跳到JKL的J处。
――――――――――――――――――――――――-
vim重复输入文本:
举例:我们要输入gogogo。
方法如下:
vim在COMMAND模式下,先按数字3键,然后按 i键,在输入go,再按Esc键。就可以输入gogogo了。
还有,如将数字加在命令前,标示该命令处理几次,如5dd标示执行5次dd(删除光标所在整行)操作。
.   (英文句号)为命令重复命令,按下一次执行一次上一次执行过的命令。
――――――――――――――――――――――――――――
快速定位,行头与行尾 0 与 $
在command模式下,
命令                                作用
$(就是按shift键和数字4键)            移至行尾
0(数字0键)                            移至行首(把光标移至当前行的起始位置,第一个非空白字符之前,简单点说就是^ 的前面)
^(尖角号)                               把光标移至当前行的起始位置,也即当前行的第一个非空白字符位置
――――――――――――――――――――――――――――――――
快速行定位,跳到指定的行, g 与 G
命令                        作用
:set nu                设置行号
:set nonu            去想行号
:set nu!                        取消显示行号
gg                        到第一行
G                            到最后一行
nG                        到第n行
:n                        到第n行
Ctrl + e 向下滚动一行
Ctrl + y 向上滚动一行
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏
Ctrl + b 向上滚动一屏
―――――――――――――――――――――――――-
快速定位,字母查找 f 与 F:
在command模式下,通过按  f 或者 F   快速定位内容。(不需要输入冒号)
命令                        作用
f                            想后查找
F                            向前查找
可以结合数字来进行多次查找,如按下  3fq   ,就会放下查找第三个q
如果不加数字,如   fq    ,就会向后查找第一个q
――――――――――――――――――--――――――
查找光标下的相同词组, * 与 #
通过  *  ,可以往后查找光标停留位置相同的词组。  #  是向前超找
举例:假设光标停留在第一个if处
if  we are god   if you are human
我们在command模式下,输入  *  ,光标就会跳到“if you are human”的那个if上去
――――――――――――――――――――――――――――――――――――――――――――――――――――――
字符替换
命令模式下
r                        (小写)替换光标所在处一个字符,如ra,就是将当前光标所在处字符替换为a
R                        (大写)开始替换,直到按ESC键退出替换,相当于按下键盘上到insert键
cc                        (小写)取代光标所在整行
S                        (大写)与ss(小写)效果相同
C                        (大写)取代到行尾,包括光标处字符
c0                        (小写,数字0)取代到行首,不包括光标处字符
c^                        (小写)与c0(小写,数字0)效果相同
___字符串\单词搜索和替换命令______________________________________
#命令模式下
命令                            作用
/string                        向前搜索指定字符串
?string        从光标处开始向上开始查找字符从string
vim中有一些特殊字符在查找时需要转义  .*[]^%/?~$
set  ic              查找时,忽略大小写
set noic         查找时,不忽略大小写
:nohlsearch  关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch  逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan  重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
n                                查找模式下,搜索指定字符串的下一个出现位置
N                                查找模式下,往上找指定字符串出现的位置
s/old/new/ 用old替换new,替换当前行的第一个匹配
s/old/new/g 用old替换new,替换当前行的所有匹配
:%s/old/new/                 用old替换new,替换所有行的第一个匹配
:%s/old/new/g            全文替换指定字符串
:n1 ,n2s/old/new/g    在一定范围内替换指定字符串
若将g改为c,就会询问是否替换。在替换文本old或new中有特殊字符,如“/”等,都需要用\进行转义


ddp                     交换光标所在行和其下紧邻的一行(按的速度要快,否则就成了删除)
*                        向下完整匹配 光标所在处  的单词
#                        向上完整匹配 光标所在处 的单词
g*                        向下部分匹配 光标所在处  的单词
g#                        向上部分匹配 光标所在处  的单词

命令                        作用
r                         取代光标所在处字符
R                         从光标所在处开始替换字符,按Esc结束
R命令会将键盘所输入内容逐个覆盖光标所在处以后的字符
___________________________________________________
删除命令/剪切命令
命令                        作用
x                       删除光标右边的字符
nx                      删除光标所在处左边n个字符
X                        删除光标左边的字符
nX                        删除光标左边n个文字
d                         用于剪切删除文字
dl                         删除当前字符, dl=x
dh                     删除前一个字符
dw                        删除光标之后的单词剩余部分,如果光标在单词字首位置,则删除光标右边第一个单词
dnw                        删除光标之后的单词剩余部分和n个单词。如果光标在单词字首位置,则删除光标后面n个单词
db                        删除到某个单词的开始位置
de                        删除一个单词
dne                        删除光标后面n个单词
dd                      删除光标所在行,ndd删除n行
ndd                     删除光标所在行向下 n 行,例如 20dd 则是删除 20 行(常用)
dj                           删除上一行
dk                        删除下一行
dG                      删除光标所在行到文件末尾的内容
d1G                    删除光标所在行到第一行的所有数据
dgg                        删除当前行到文件首部的所有行(包括当前行)
jdG                     删除当前行之后所有行(包括当前行)
D                       删除当前字符至行尾,D=d$
d$                          与D效果相同
d0                           是数字0)删除到行首,不包含光标处的字符
d^                                与d0效果相同
:n,$d                     删除n行及以后所有的行
:1,$d                     删除所有行
: n1,n2d                删除n1行到n2行之间的行
范例:
:6655,6665d
dl    删除字符 (缩写: "x")
diw    删除内含单词
daw    删除一个单词
diW    删除内含字串 (见 |WORD|)
daW    删除一个字串 (见 |WORD|)
dis   删除内含句子
das"   删除一个句子
dib  删除内含 '(' ')' 块
dab   删除一个 '(' ')' 块
dip   删除内含段落
dap   删除一个段落
diB    删除内含 '{ ' ' }' 大块
"daB"    删除一个 '{ ' ' }' 大块
___________复制剪切粘贴命令______________________________x
命令                        作用
yy、Y                        复制当前行
nyy,nY                        复制当前行一下n行(包括当前行)
p、P                        粘贴在当前光标所在行下或行上
ddp                            交换当前行和其下一行
dd                            剪切当前行
ndd                            剪切当前行一下n行(包括当前行)
:1,10d             将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。
:1, 10 m 20 将第1-10行移动到第20行之后。

你可能感兴趣的:(快捷键,配置文件,编辑器,Director)