gvim的常用快键5-19

normal   下常模式 
inset   插入模式
command 命令模式
visual   可视模式
窗口切换


ci'、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di'、di"、di(、di[、di{、di< - 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi   选择这些配对标点符号中的文本内容
把i换成a   包含上两边的标签。
符号换成T,操作html/xml
cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式


ctrl+ww   轮流切换
ctrl+w+ hjkl 窗口切换
  大J   下面一行合并到上面的一行      n
缩进 
gg=G自动缩进   n
<< 或者>>     或者<>+enter   当前行缩进 n
n<<     或n<+enter  光标算起下面N行缩进   n
v模式下选中代码块 ==   (连按=两次)  v
   
移动   n
1.屏幕移动
Ctrl + f                 //向前(往行号大的方向移动)移动一屏,想来F代表Forward
Ctrl   + b               //向后移动一屏,B的话应该是Before吧
Ctrl + d               // 向前移动半屏,D指Down
Ctrl +   u               //向后移动半屏,U指Up

2.在屏幕中移动
H             移动到屏幕顶端的行
M             移动到屏幕中央的行
L             移动到屏幕底端的行

nH           移动到屏幕顶端往下的第n行
nL           移动到屏幕顶端往上的第n行
3.用z调整光标
z         将光标所在行移动到屏幕顶端
z.               将光标所在行移动到屏幕中间
z-               将光标所在行移动到屏幕低端

4.根据文本块移动

所谓的文本块也就是句子、段落、小节等

(             移动到当前句子开头
)             移动到下一个句子开头
{             移动到当前这一段开头   
}             移动到下一段开头
[[           移动到当前这一节的开头  这个对代码很有用
]]           移动到下一节的开头   这个对代码很有用

5.根据行号来移动

Ctrl+g             显示当前行信息
nG                 转至第n行
G                 转至文本末尾
gg           移至文本开头
``两个 反引号可以返回到使用G之前的位置

6.整行移动

0             移动到行首
$             移动到行末
+             移动到下一行开头
-             移动到上一行开头

7.单词移动

W w             移动到下一个单词开头
E e             移动到下一个单词结尾
B b             倒退到上一个单词开头

8.字符移动
k             上移                k
h             左移                  l
l             右移                j
j             下移

跳跃:
CTRL+O   偶,跳到更早时停置的光标。
CTRL+I   跳回到较新的位置,和tab一样。
:jumps   查看所有曾经跳转过的位置。



查找

gd   查找光标下的word   用n/N  上下选择 3n 下面的第三个。     n

*     下面的同一单词  n
# 上面的同一单词 n

行内搜索(注意:以上四个命令中,其中x是键入的字符)。

f   往右移动到 x 字符上     n
F   往左移动到 x 字符上   n
t   往右移动到 x 字符前   n
T 往左移动到 x 字符后   n
3fa   找到当前行的第3个a

;分号,配合 f 和 t 使用,重复一次 
,逗号,配合 f 和 t 使用,反方向重复一次
%可以搜索与之匹配的对应的()[]{}。这个功能对于书写程序特别有用。   n

  正常模式 
  /a   enter,找a  顺查.
  ?a   enter  倒查


:/the     enter  查找the     ci
:?the     enter  搜索上面的the c i
:#the enter   搜索下面的the  c
:nohl     去掉高亮        c
#是 *的反向 \是转义。如点需要转义   \.
  /the  找所有的the,theme也会有
  /the\>   只查找the
  正则查找 ^开头,$结束 /the$ 所有行结尾的the /^the    开头的the /^the$
  包含the的,中间有空白也不行。

  .点匹配任何字符

  替换:
  :s/a/b/  光标当前行的第一个a替换成b,
  :%s/a/b/   所有行 第一个
  :%s/a/b/g   所有行 所有 
  :%s/a/b/c   替换时提醒确定。
y 好吧,替换   yes
n 不替换     no
a 全替换   all
q       退出,不替换了。
l       改完这个退出

折叠
zf%   折叠到匹配的括号  html如果能相对应也可以     n
zo zd 或方向键     打开折叠  n
编码
:set fileencoding   在Vim中查看文件编码
:set fileencoding=utf-8   设置编码
剪切(包括删除)   复制  粘贴 

1. 剪切(删除):
dd:剪切当前行
ndd:n表示大于1的数字,剪切n行   包括当前行
dw:从光标处剪切至一个单子/单词的末尾,包括空格
de:从光标处剪切至一个单子/单词的末尾,不包括空格
d$或大D   :从当前光标剪切到行末(包括光标位置)删除到行末


d0:从当前光标位置(不包括光标位置)剪切之行首
dnl   剪个字符
x是删除当前光标位置的字符
X是删除当前光标位置的前面一个字符。
  D   代表d$ ,从光标处删除到行尾
  C   代表D+a  从光标处删除到行尾并插入 D+a 
  s   代表cl  修改一个字符   x+a
  cc   修改一整行  dd+a

2.复制(类似剪切)
yy:复制当前行
nyy:n表示大于1的数字,复制n行
yw:从光标处复制至一个单子/单词的末尾,包括空格
ye:从光标处复制至一个单子/单词的末尾,不包括空格
y$:从当前光标复制到行末
y0:从当前光标位置(不包括光标位置)复制之行首

3.粘贴
p,光标之后粘贴 大P粘贴在光标前

撤销和恢复
u 小u撤消一次操作
ctrl+r或 ctrl+r撤销撤销操作,与小u相反   ctrl+r或 ctrl+r
大u.撤消对一行的全部操作.第二次会撤消第一次大u的操作.   少用
v模式下选择矩形文本

  删除大段文本,用v 模式 小写的v
  vjj   选中3行。
  o 在左上角,右下角移动,
  O   大O ,同一行左右两角移动。
  d   删除文本。
  p   小p删除后被保存,光标移动,按p插入。p=put
  注:删除是块,下行插入,删除是word,在后面插入

调换字母位置
teh 成the
  teh   光标在e    xp 变成 the
  x   删除e,放到寄存器中,
  p   删除的e,放回光标之后。

 
打开,保存退出 
  :e test.txt 打开test.txt文件进行编辑,文件不存在则创建。
    :w保存文档,但不退出vim编辑器。
    :q 不保存文档,退出vim编辑器。
    :wq保存文档然后退出vim编辑器。按zz(注意z是大写的,并且不是在命令模式)或者:x效果是一样的。
    :q!放弃所有修改强制退出,按:q不能退出时就试试这个吧。

---------------------------------------------------------------------------
VIM 代码折叠
---------------------------------------------------------------------------
VIM代码折叠方式可以用"foldmethod"选项来设置,如: set foldmethod=indent

有6种方式来折叠代码

1. manual //手工定义折叠
2. indent //用缩进表示折叠
3. expr  //用表达式来定义折叠
4. syntax //用语法高亮来定义折叠
5. diff   //对没有更改的文本进行折叠
6. marker //用标志折叠

 

vim 配置文件分为全局配置文件和用户配置文件

1. 全局配置文件查找,在.vim 中输入:echo $VIM,一般为:/usr/share/vim/vimrc
2. 用户配置文件在用户主目录下,如:/home/abeen/.vimrc

在vimrc文件中设置折叠方式:如set foldmethod=indent

 

选定折叠方式后,就可以使用折叠命令进行折叠操作了.常用的折叠方式为indent和marker.

indent折叠命令
indent方式,vim会自动利用缩进进行折叠,我们可以使用现成的折叠成果.
我们可以在折叠处输入以下命令:

zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。

 

marker折叠命令
marker折叠方式时,我们需要用标计来标识代码的折叠,系统默认是{{{和}}}
折叠命令

zf 创建折叠,比如在marker方式下:
        zf56G,创建从当前行起到56行的代码折叠;
        10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠。
        10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。
        在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
zd   删除 (delete) 在光标下的折叠。仅当 'foldmethod' 设为"manual" 或 "marker" 时有效。
zD   循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。仅当'foldmethod' 设为 "manual" 或 "marker" 时有效。
zE   除去 (Eliminate) 窗口里“所有”的折叠。仅当 'foldmethod'设为 "manual" 或 "marker" 时有效。

---------------------------------------------------------------------------
查找
---------------------------------------------------------------------------
VIM是被誉为非常高效的文本编辑软件。但是掌握并高效的使用是件有难度的事情。在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法。下面是我在阅读VIM用户手册时整理的一些资料:

行内搜索。
f命令可以进行行内搜索。输入fx可以找到下一个x字符。
F命令可以在反方向进行行内搜索,输入Fx可以找到上一个x字符。
t命令同样是进行行内搜索,但是光标停留在符合条件的字符的前面。输入tx使光标停留在下一个x字符的前面。
T命令可以在反方向进行行内搜索,但是光标停留在符合条件的字符的下一个字符上。输入tx使光标停留在上一个x的后面的字符上。
%可以搜索与之匹配的对应的()[]{}。这个功能对于书写程序特别有用。
全文的搜索。键入/后,光标进入VIM底部的命令行,这时就可以输入以/为开始的/搜索命令了。
最简单的查找。输入/string就可以查找string字符串。
继续查找。在第一次搜索后输入n将会继续进行上一次搜索,如果输入3n那么会找到后面第三个符合的字符串。大写的N会在反方向,也就是向上进行搜索。
向上搜索。输入?可以向上搜索。随后的n命令将会继续向上搜索,N向下搜索,其他和/一样。
对大小写的匹配。
在命令行输入:set ignorecase可以设置搜索以忽略大小写的方式进行。输入:setnoignorecase可以设置搜索以匹配大小写的方式进行。默认的,将匹配大小写。这个默认设置可以在.vimrc中修改。
大小写智能匹配模式。输入命令:set ignorecasesmartcase可以设置为智能大小写匹配模式。在这种模式下,如果你输入的字符串中至少包含一个大写字母,那么就会以大小写敏感模式进行搜索,否则以忽略大小写模式进行搜索。
在搜索命令中指定大小写。在几种大小写搜索模式中进行转换总要输入长长的一串指令,如果需要不断地转换模式,确实有些麻烦。所以你可以直接在搜索命令中指定大小写匹配模式。\c表示忽略大小写,而\C表示对大小写敏感。
查找当前词。一个简单的方法可以让你查找下一个和当前词一样的词,你不比输入/currentword,你可以直接按下*就可以查找下一个currentword。#可以让你向上查找同一个单词。
调整查找后的光标位置。
使用/string/3会使在光标转到找到string字符串的行下面的第3行。第1行从包含string的行算起。同样可以使用/string/-2来使光标停留在包含string的行的前面2行。
使用/string/e可以使光标停留在string字符串的末尾而不是默认的第一个字符位置。/string/b则表示停留在string第一个字符的位置,不过默认就是如此,我们不比多此一举。但是/string/b+2却可以使光标停留在string字符串的第二个字符的位置,这里是r。在e或者b的后面+或者-数字,可以进一步调整光标的位置。
特殊字符。在搜索命令中,  .*[]^%/?~$这10个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠/。而\e表示;\t表示;\r表示;\b表示。
匹配换行或空格。使用\n可以表示一个换行;而\s表示匹配空白,注意是空白不是空格。\_s表示匹配换行或者空格;\_a表示匹配换行或者一个字母。比如:/the\nword查找以the结束并且下一行以word开始的行的位置。/the\_sword查找the和word之间以空白或者换行分割的位置。/the\_s\+word表示the和word之间可以有多个空白。\+的含义可以在后面找到。
限定词首或者词尾。\<可以限定找到是以指定字符串开始的单词。比如/\则是限定必须是以指定字符串结尾的单词。
行首和行尾。输入/^string查找以string开始的行,并且光标停留在这个string的第一个字符。输入/string$则查找以string结束的行,并将光标停留在这个string的第一个字符。这个模式不会忽略前导或者后置的空格。
匹配任何一个字符。句号.可以匹配任何一个字符。例如/t.e可以找到the或者tae或者tue。
更加复杂的匹配模式。实际上,/搜索可以使用非常复杂的匹配模式。下面列出了其中一些复杂的匹配模式。
可重复的字符。
使用*表示它前面的字符可以重复多次或者0次。比如/be*可以匹配b,be,bee,beee等等。但是这也会包含b,因为e重复0后是空。如果要匹配诸如be,bebe,bebebe的字符串可以使用\(和\)把他们包括起来,形如:/\(be\)*。
使用\+来限定为重复至少一次到无数次。如:/be\+可以匹配be,bee,bee等等。
重复0次或者一次。\=可以指定重复0次或者一次。/strings\=表示匹配string或者strings。这在查找单词的复数形式特别有用.
指定重复的次数。\{n,m}可以指定重复n到m次。比如:/be\{2,4}将会匹配bee,beee,beeee。同样可以使用\{,4}表示匹配0到4次;\{4,}表示4次到无数次;\{4}表示重复4次。
匹配列表中的一个。使用一个以\|分割的列表,可以表示匹配列表中任何一项。比如/one\|two表示查找one或者two;/one\|two\|three表示查找one或者two或者three。
一个复杂的实例:/end\(if\|while\|for\)将会查找endif,endwhile以及endfor。
字符列表。使用[0-9]可以表示一个0到9范围的字符。比如/string[1-5]表示查找string1,string2,string3,string4,string5。当然也可以使用[a-z]表示字符a到z中间的一个。
特殊的字符集合。使用\d也可以表示0到9的数字,这个选项可以代替[0-9]。\D表示非数字代替[^0-9];\x表示十六进制数代替[0-9a-fA-F];\X表示非十六进制数代替[^0-9a-fA-F];\s表示空白字符代替[] ( 和);\S表示非空白字符代替[^ ] (除和之外);\l表示小写字母代替[a-z];\L表示非小写字母代替[^a-z];\u表示大写字母代替[A-Z];\U表示非大写字母代替[^A-Z]
搜索并替换。输入:[range]s/from/to/[flags]命令可以搜索匹配的字符串并且替换为指定的字符串。这是一个稍微复杂的命令。其中[range]是一个可选项,用来指定搜索替换的范围。[flags]也是一个可选项,用来指定搜索替换的处理方式。所以这个命令的简单形式是:s/from/to/。
搜索替换的范围。如果没有指定范围,则只在当前行进行搜索替换。
在所有行进行搜索替换。范围符号%表示在所有行进行搜索替换。:%s/from/to/就是在全文查找from并替换为to。
在指定的行上进行搜索替换。:1,50s/from/to/表示在第1行和第50行之间(包括1和50行)进行搜索和替换。:45s/from/to/表示仅仅在第45行进行搜索和替换。而"1,$"行号范围和“%“是等价的。
处理方式。我现在使用的VIM默认的方式是无须确认。不过好像不同版本的默认的处理方式是不同的。
无须确认。方式符号g表示直接替换无须进行确认。:%s/from/to/g表示在全文中查找from并且直接全部替换为to。
列印。处理方式符号p表示在替换时列出每个被改变的行。手册中这么说,但是实际效果却让我很迷惑。
确认后处理。处理方式符号c表示在进行替换前需要用户进行确认。这时你可以选择(y/n/a/q/1/^E/^Y):y表示同意当前替换;n表示不同意当前替换;a表示替换当前和后面的并且不再确认;q表示立即结束替换操作;1表示把当前的替换后结束替换操作;^E向上滚屏^Y向下滚屏,用来帮助查看前后内容以决定进行操作。





附:VIM模式总结(http://denven.blog.hexun.com/11922673_d.html)
Part1. 六种基本模式 : 

1.Nomal Mode 普通模式 可以输入所有普通的编辑命令,启动编辑后默认处于普通模式,接受编辑命令。

2.Insert Mode 插入模式 输入的内容会插入到当前缓冲区。这是我们最熟悉的普通编辑器的编辑模式。

3.Visual Mode 可视模式与普通模式相似,但移动光标时光标会扩展高亮区域,非光标命令则可作用于高亮区域。
我将它分为三种具体的情况来理解。(图中$表示行尾)

3.1. 普通可视模式。 按 v进入,不单独针对行或列,作用范围为光标最初位置与光标当前位置间的内容。 
....cursor startshere|---------------------------------------------------------------$|
+-------------------------------------------------------------------------------------------$|
|---------------------------------------------------------------------------------------$|
+---------------------------------------|the cursor stopshere,maybe some content continued

3.2. 可视“行”模式。按 V 进入,光标移动作用与光标所在的整行内容。
如果光标开始位置所在行行号为i,选定时行号为j。
则作用内容为[i,j]行的内容。如图所示:

+----------------------------------------------------------startshere|--------------$|
|----------------------------------------------------------------------------------------$|
|-------------------------------------------------------------------------------------------$|
+---------------------------------------$|the cursor stopshere

3.3 可视“块”模式。 按 CTRL-V 进入,gVim 则按 CTRL-Q(大写) 进入。
选定范围为光标最初点和光标移动后所在位置决定的矩形区块内。

cursor begin|-------------+ +----------------| end
|-------------| |----------------|
|-------------| |----------------|
|-------------| |----------------|
+-------------| end begin |----------------+

exmaple 1 example 2

4.Command Mode 命令行模式在底行可以输入一行命令,也可称作底行模式完成。按冒号进入命令行模式。我通常把它当作时普通模式的特例。因为可执行的命令太少。

5.Ex Mode Ex编辑器模式 以: 开始Ex模式,与命令行模式类似,但是命令完成后,会继续停留在该模式下。

6.Select Mode 选择模式 gVim中鼠标选中的部分会在底下提示为“选择”。

Part2. 五种附加模式: 

1. 操作符等待模式:我尚未理解所谓的操作符指什么。
2. 替换模式:可以认为是插入模式的特殊情况。

在插入模式下,按即回到一种临界的普通模式,这时可以切换其他模式,可以执行命令,但是完成命令后会立即返回至插入模式。例如:

3. 插入普通模式 按 后执行一次编辑命令(即使是非a,i,A,I,o,O之类的命令)后进入插入模式。
4. 插入可视模式 按 后不执行编辑命令,而按键进入可视模式,可视选择后执行一条命令(同上)就返回到插入模式。
5. 插入选择模式 按 后可以用鼠标进行选择,选择结束(点击鼠标)就返回插入模式。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值