首页 > 代码库 > vim-1-基本使用
vim-1-基本使用
------------------------------------------------------------------------------------
gvim的四种模式:普通模式,插入模式,替换模式,命令模式。
普通模式》插入模式
i/I 在光标前面/行首插入
a/A 在光标后面/行尾插入
o 在下一行行首插入
O 在上一行行首插入
s 删除光标所在字符并开始插入(具体用法看x)
c 开始删除,之后进入插入模式(具体用法看d)
插入模式和在windows下一样,各种快捷键都能用
另外,在普通模式下,ctrl+s依然是保存
普通模式》替换模式
r:替换光标所在的字符
数字r:将光标所在向后n个字符都替换掉
R:从光标所在字符开始替换,按esc回到普通模式
普通模式》命令模式: 按:
插入模式,命令模式》普通模式:按esc
注:我将插入/替换模式的esc映射成kk了,在插入/替换模式下按kk即可返回普通模式
------------------------------------------------------------------------------------
普通模式:进入gvim后的默认模式
--------------------------------------------------
移动:
h j k l:左下上右移动
数字 h j k l:左下上右移动n下
w/e:移动到下一个单词开头/结尾
b/B(ge):移动到上一个单词开头/结尾
f/t a:在当前行,移动到下一个出现a的位置/前
F/T a:在当前行,移动到上一个出现a的位置/前
数字f/t a:在当前行向后移动到第n次出现a的位置/前
数字F/T a:在当前行向前移动到第n次出现a的位置/前
0/$:定位到行首/行尾
^/g_:定位到非空格的行首/行尾
%:在两个匹配的符号((,",{)等等中切换(光标需先移动到其中一个符号,
如果不在,则会向后找到最近的一个)
数字%:按照百分比定位文档 的位置
G:定位到最后一行行首
行号G:定位到对应行号行首
gg:移动到第一行行首
H:定位到当前屏幕的最上边
M:定位到当前屏幕的中间
L:定位到当前屏幕的最下边
ctrl+u/d:向上/下滚动半屏
ctrl+f/b:向上/下滚动整屏
zz:把当前行置为屏幕正中间
J:将下一行移动到这一行末尾(合并当前行和下一行)
关于数字键: 数字+命令表示执行多次操作, 数字一般放在命令之前.
>>/<<:当前行增大/减小缩进
==:当前行自动进行缩进
``:反单引号,在两个跳转点之间切换,如果你原先处在33行,跳到了55行,
使用这个命令可以回到33行,多次使用就是来回切换,
注:j,k导致的跳转不可,并且需要是不在同一行内的位置间的切换
ctrl+o/i:跳转到上一次/下一个光标停留位置(不在同一行内,且不是hjkl导致的光标移动)
--------------------------------------------------
查找:
/xxx:在全文中查找xxx,并高亮显示,字符.*[]^%/?~$ 有特殊意义,需要用\转义
?xxx:和/效果一样,只是查找方向反向
N/n:在高亮的选中处之间前后切换,前面可以加数字,表示第n次出现的位置
vim会记录已经查找过的内容,再次查找时,可通过上下键来切换
#/*:移动到上一个/下一个与光标所在单词相同的单词
/\<xxx\>:匹配完整的单词,如果某单词中只是包含xxx,不会被匹配上
模式搜索(正则表达式搜索):
^ 表示一行的开头,$ 表示一行的结尾,^the就表示位于行首的the
. 表示任意字符,如果想查找的就是. ,则需要转义
一个有用的命令
:nohlsearch,此命令可以取消当前的高亮, 简写 nohl
--------------------------------------------------
复制,剪切,删除,粘贴:
在vim中,剪切和删除是一样的
下列命令中其实是没有中间的空格的,这里只是为了方便阅读
注:几乎所有的移动,复制,粘贴命令前面都可以加数字,表示重复的次数,
也几乎都可以加上移动键,表示向某个方向复制/剪切
y:开始复制
yy/Y:复制当前行
行号yy:从当前行开始,复制多行
y 0/$:从光标处复制到本行开头/末尾
y w/e:复制一个单词,或从光标处复制到本单词末尾
yt a:从光标出开始复制,直到遇见a,a不复制
yG:从当前行开始复制直到最后一行
yyg:从当前行开始复制直到第一行
x:剪切/删除光标所在的字符,依然停留在普通模式
X:删除当前光标左边的字符
数字 x:剪切/删除从光标开始往后的n个字符,依然停留在普通模式
d:开始剪切/删除(用法和y类似,不多说了)
dd:剪切整行
D:剪切至行尾的内容(这点和y不一样)
p:粘贴复制/剪切的内容到光标后面,如果是整行的,则粘贴到当前行的上面
P:粘贴复制/剪切的内容到光标前面,如果是整行的,则粘贴到当前行的下面
数字p/P:粘贴多次
ddp:其实就是删除当前行再粘贴了,但是你会发现,当前行和下一行换位置了
xp:其实就是删除当前光标所在字符再粘贴,但是你会发现,两个字符交换位置了
.:普通模式中重复上次的命令,除了u命令,这个只能重复最近的一次命令
比如先搜索出全文中的xxx,然后cwyyy,表示修改成yyy,然后回到普通模式,
n.n.n.一直按,之后的xxx都会变成yyy,cwyyy这个命令就会一直重复
--------------------------------------------------
文本对象
之前的复制和删除都是以字符,行为单位,w,e的作用是从光标处到下个单词开头
或本单词结尾,所以要想删除整个单词,还得先将光标移动到单词开头,这很麻烦,
可以使用文本对象搞定
aw:a word,表示一个单词,及其后面的空白,daw表示删除光标所在单词及空白
iw:inner word,也是表示一个单词,但是不包括单词后面的空白
as:a sentence,表示一个句子,及其后面的空白,das表示删除光标所在句子及空白
is:inner sentence,也是表示一个句子,但是不包括句子后面的空白
--------------------------------------------------
可视化选择:
v:可视化选择,按esc或再次按v退出,选择的内容会被复制
在可视化选择模式中,移动键,数字键,都是可以使用的
V:整行可视化选择
ctrl+q:块可视化选择,其实应该是ctrl+v,但是windows里这个是粘贴,所以不能用
gg,然后ctrl+q(ctrl+v),然后按G,就可以选择文本的第一列
o:在(块)可视化选择状态下,使光标移动到选择区域的另一头
O:在块可视化选择状态下,使光标移动到这一行的另一头
--------------------------------------------------
宏:
按q键开始录制宏,一般跟上寄存器的名字,寄存器可使用26个英文字母
如qm,表示将宏录制到m寄存器中,
然后进行一系列操作,都会被记录下来,再次按q,退出宏录制,
按@m表示播放m寄存器中的宏,前面可以加数字表示播放次数,
按@@表示播放之前播放过那个个宏,
--------------------------------------------------
自动补全:
ctrl+p:牛逼到爆
----------------------------------------------------
剪切板:
y, d, c, x等等命令都是将内容存进了vim的剪切板, 如何和windows的剪切板交互?
在这些命令之前加 "* , 即可
--------------------------------------------------
其他:
u:撤销上次操作, U: 行撤销, 可以撤销所有在最近行上的编辑操作.
ctrl+r:恢复上次操作(ctrl+y也可以,但它是windows中的快捷键)
ctrl+l:有时候vim中的有些文字会花掉,此快捷键可以刷新视图
gU/gu:将选中的内容转化为大/小写
ctrl+p:自动补全之前编辑过的单词,词组
ZZ:退出当前编辑的文件
------------------------------------------------------------------------------------
命令模式
--------------------------------------------------
一般命令:
命令模式前面都有个":"这里就省略了
w:保存不退出
wq/x: 保存退出
q/q!:不保存退出/强制不保存退出
e!:放弃所有修改,载入文件的初始状态,慎用!
pwd: 显示当前目录
!shell指令:执行shell(dos)指令
r!shell指令:将shell(dos)指令的执行结果写到当前行的下面
在命令模式里按上下箭头可以切换之前输入的命令
--------------------------------------------------
编辑多个文件:
e/edit 文件路径:在当前标签页中打开文件,路径中使用/或\都可以,
可使用tab键自动补全文件名。也可以一次打开多个文件,文件路径中间以空格隔开
previous/next:切换到上一个/下一个打开的文件
wprevious/wnext:保存当前文件,然后切换到上一个/下一个打开的文件
bp/bn:在当前标签页中切换上一个/下一个文件
vim -R filename, 以制度方式打开
--------------------------------------------------
分割窗口:
split:在当前窗口上方分割一个窗口,新窗口中依然是当前文件
new:分割出新的空窗口
split filepath:在新窗口打开文件
new filename:在新窗口中编辑文件
split,new命令都可以在前面加上数字,表示新窗口的高度(行数)
ctrl+w w:在两/多个窗口键切换
ctrl+w +/ctrl+w -:当前窗口扩大/缩小一行,前面可以加数字,表示扩大/缩小多行
数字 ctrl+w _:将窗口变为指定高度
:close/:q/ZZ:都可以退出当前窗口
only:关闭其它所有窗口,只保留当前窗口
wall, 全部保存, qall, 全部关闭
CTRL-W h 到左边的窗口CTRL-W j 到下面的窗口CTRL-W k 到上面的窗口CTRL-W l 到右边的窗口CTRL-W t 到顶部窗口CTRL-W b 到底部窗口ctrl-w H,J,K,L, 左右上下移动窗口
--------------------------------------------------
标签页
一般来说tabe,tabedit,tabnew的作用是一样的,下面都用tabe,除非有特殊情况
tabe:打开新的标签页
tabe e:/xxx:在新标签页中打开文件
tab:后面跟可以打开新窗口的命令(如 help),在新标签页打开新窗口,如 tab help
--------------------------------------------------
替换:
[range]s/from/to/[flags],表示将range范围的from替换成to,flags匹配范围
s/aaa/bbb/:表示把当前行的第一个aaa替换成bbb,不指定flag就只替换第一个
%s/aaa/bbb/g:把全文中的所有aaa替换成bbb,g的意思是指全部匹配的
行号1,行号2s/aaa/bbb/g:把行号1和行号2之间的aaa替换成bbb
行号1,行号2s/^/aaa/g:把行号1和行号2之间的行前面都加上aaa(即,可以使用正则)
另外,.代表当前行,$ 表示最后一行
行号1,行号2s/^/\/\//g:从行号1和行号2之间的行都加上//注释(这是因为/有特殊用途,需要转义)
行号1,行号2s/\/\//g:从行号1和行号2之间的行都去掉//注释
另一种转义的方法是,使用+代替/,/正常使用,如 4,8s+aa/bb+aa or bb+
--------------------------------------------------
定位
以下命令执行后都会返回普通模式
G:定位到最后一行
行号:定位到对应行号
行号1,行号2d:删除从行号1到行号2的内容
行号1,行号2>>:从行号1到行号2向右移动一个tab
行号1,行号2>>:从行号1到行号2向左移动一个tab
/xxx:在全文中搜索xxx,并高亮显示,按 n 键可在选中处间切换
------------------------------------------------------------------------------------
来自为知笔记(Wiz)
附件列表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。