大家好,欢迎来到IT知识分享网。
让光标停留在单词的第一个字母上, 然后输入yw拷贝该单词, 然后输入 / (Ctrl + R) 0 (即 /”0),回车, 就查找到了第一个匹配的单词, 并且通过 n 或 N 进行上一个或下一个的匹配。
打开文件后想跳转到上次关闭文件时的位置 ‘0
在选中文本中替换某个词 :'<,'
>s/替换项/替换为/g
/\%Vhello 在上次选中文本中搜索某个词hello
:reg 查看寄存器内容
无名寄存器(“”) 默认的p是调用无名寄存器
复制专用寄存器(“0) 只有y才是复制寄存器
删除专用寄存器(“1-“9) 调用d或x等删除操作
命名寄存器(“a-“z) 可以用来放某些内容
除了esc键可以从编辑模式进入命令模式外,还可以按ctrl+[或者ctrl+c进入
“_ 黑洞寄存器,即删除不放进寄存器,如”_d
块模式下按o可以实现光标在所选块开始和结束之间跳转
i 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线。
:sy on和:sy clear 语法高亮/取消
:colorscheme evening 设置背景颜色
替换命令的 源字符串 部分,用于指定搜索目标,要在替换命令的源字符串部分匹配行尾,需要使用 \n;
替换命令的 目标字符串 部分,用于指定要替换出的目标,如果要通过替换命令插入新行,需要使用 \r。
在“以下是……”前面加回车,于是 :%s/以下是/\/r&/gc
在命令行按下:后,再按一下↑可以看到历史命令
dab 删除括号和括号内容
dib 删除括号内容
:qall 关闭所有窗口,退出vim
:wall 保存所有修改过的窗口
:wqall 保存并退出
:only(ctrl-w o) 只保留当前窗口,关闭其它窗口
:close(ctrl-w c) 关闭当前窗口
:x 保存并退出
; 配合f&t使用,重复一次
, 配合f&t使用,反向重复一次
H 把光标移到屏幕最顶端一行
M 把光标移到屏幕中间一行
L 把光标移到屏幕最底端一行
+或Enter 把光标移至下一行第一个非空白字符
:g/xxx/d 删除包含xxx的行
:v/xxx/d 删除不含xxx的行
:%s/xxx//gn 统计xxx个数,n表示只报告匹配的个数而不进行实际的替换
zz 将当前行移动到屏幕中央
zt 将当前行移动到屏幕顶端
zb 将当前行移动到屏幕底端
hlsearch=hls
set hls 设置高亮搜索
set nohls 取消高亮搜索
q{register} 开始录制宏
串行方式:5@[a-z] 宏内包含向下一个目标行进行移动的指令,如果出现错误,宏会停止执行
并行方式::normal @[a-z] 在高亮区域的每一行上并行执行宏,某一行出现错误不影响其他行
gv 重选上次高亮区
匹配时 \C强制区分大小写、\c不区分大小写、\V会使得其后的模式中只有反斜杠有特殊的意义
cit 修改html标签内容
ci” 修改引号内容
ab 一对圆括号
ib 圆括号内容
aB 一对花括号
iB 花括号内容
:marks 取得所有标记的列表
m小写字母 标记(当前文件有效)
m大写字母 标记(全局有效)
‘标记字母 跳到标记行首
`标记字母 跳到标记
g_ 到本行最后一个不是blank字符的位置
dw 删除自当前光标至下一个word的开头
db 删除自当前光标至前一个word的开始
dw 从当前位置删除到下一个单词词首
d$(D) 删除光标之后的该行剩余部分(包括光标)
dd 删除当前行。
dG 删除当前行至文件尾的内容
dgg 删除当前行至文件头的内容
cw 会删除从光标位置到当前词结尾处的文本,并切换到插入模式
A 当前行行尾插入并进入插入模式
I 当前行行首插入
ctrl+r 取消撤消
d 剪切
ge 前一个单词的最后一个字符
e 这个单词的最后字符
b 这个单词的第一字符
dt{char} 删除到字符{char}之前
ctrl-y 向上滚屏
ctrl-e 向下滚屏
ctrl-u 向上滚动半屏
ctrl-d 向下滚动半屏
ctrl-b 向上滚动整屏
ctrl-f 向下滚动整屏
所有选项只有在wrap关闭的时候才有效,set nowrap
10zl 向右滚动10个字符
10zh 向左滚动10个字符
zL/zH 向右滚动半个屏幕,向左滚动半个屏幕
zs/ze 视图滚动到最左侧/最右侧
zo 打开折行
zc 关闭折叠
ZZ 保存当前文件妆退出vim
ZQ 不保存退出,q表示放弃
vit 选中标签内的文本
>G 增加加从当前行文档末尾处的缩进层级
dap 删除一个段落
viw 选中一个单词
g~、gU、gu 大小写转换
可以用CTRL-O和CTRL-I可以跳转到较早的位置和靠后的某位置
180<C-x> 180<C-a> 减去或增上180
f[char]/t[char] 重复;回退
:/<html>/,/<\/html>/d 删除<html>到</html>的行
:@ 重复ex命令 @@ 重复上次命令
vim普通模式下按Q进入ex
ex命令模式下按:vi进入vim
ex命令模式下按:i 进入文字插入模式, 按Ctrl+C 退回到命令模式(这一点不同于vim的ESC)
: = 显示总行数
: . = 显示当前行号
: /pattern/= 显示地一个与模式pattern想匹配的行号
:3, 18 d 删除3~18行
:11, 15 m 23 把11~15行移动到23行下面。
:23, 29 co 100 复制23~29行并把它们粘贴到100行下面
:t. :t.==yyp 但不会覆盖寄存器中的内容
:!{shell命令} 执行shell命令
d/xxx 从当前位置删除到单词xxx之前
重复替换是&
编辑另一个文件用命令”:edit foo.txt”,也可简写为”:e foo.txt”
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。
“+y 表示从vim复制到系统剪切版,
“+p 表示从外部文件(系统剪切版)粘帖到vim,
“+d 表示剪切
“+gp 粘贴并且移动光标到粘贴内容后
0或功能键[Home] 移动到这一行的最前面字符处
$或功能键[End] 移动到这一行的最后面字符处
G 移动到这个文件的最后一行
gg 移动到这个文件的第一行,相当于1G
ddp 交换当前行和其下一行
m 创建标记
‘ 移动到标记的文本行首
` 移动到标记的光标位置
“ 当前文件中上次跳转动作之前的位置
`. 上次修改的地方
`^ 上次插入的地方,上次退出插入模式时光标所在的位置
gi gi==`^并且进入插入模式
“+p 等同插入模式下的<C-r>+
:marks 列示所有标记
:delmarks 删除指定标记
::delm a-zA-Z0-9 删除所有标记
:m 27 移动当前行到27行
:5,7m 21 移动move lines 5, 6 and 7 to after line 21
guu 行小写
gUU 行大写
1.多行注释:
a. 按下Ctrl + v,进入列模式;
b. 在行首选择需要注释的行;
c. 按下“I”,进入插入模式;
d. 然后输入注释符(“//”、“#”等);
e. 按下“Esc”键.
2.删除多行注释:
a. 按下Ctrl + v, 进入列模式;
b. 选定要取消的注释符;
c. 按下“x”或者“d”.
打开多个文件:
一、vim还没有启动的时候:
1.在终端里输入
vim file1 file2 … filen便可以打开所有想要打开的文件
2.vim已经启动
输入
:e file
可以再打开一个文件,并且此时vim里会显示出file文件的内容。
输入
:e .
可以查看目录文件
查看目录树的标准做法
:Ex 在当前窗口打开目录树
:Vex 在竖直分割窗口打开目录树
:Sex 在水平分割窗口打开目录树
通过按键i可以得到文件目录树的不同视图
3.同时显示多个文件:
:sp //水平切分窗口
:vs //垂直切分窗口
二、在文件之间切换:
输入:ls可查看vim打开的文件
1.文件间切换
Ctrl+6 //两文件间的切换
:bn //下一个文件
:bp //上一个文件
:bf //第一个文件
:bl //最后一个文件
:ls //列出打开的文件,带编号
:b1~n //切换至第n个文件
对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不同的文件。
set hidden可以在不存在当前buffer时切换到其它buffer
:e#编号 切换至:ls中查看到的某个文件
2.在窗格间切换的方法
Ctrl+w+方向键——切换到前/下/上/后一个窗格
Ctrl+w+h/j/k/l ——同上
Ctrl+ww——依次向后切换到下一个窗格中
连续的十几行到50行内的左右移动:
1. 第m行到第n行右移一个tab
:m,n>
2. 第m行到第n行左移一个tab
:m,n<
连续的I行的左右移动(I > 100):
向左:
1.移动到要处理的首行,输入ma
2.移动到要处理的尾行,输入<‘a
向右,即将第二个命令中的 ‘<‘ 改为 ‘>’即可
比如想跳转到文本的第12行,可以执行如下命令:
(1)12gg / 12G
(2):12
(3)打开文件时输入vim +12 filename
$:移动光标到行尾 n$:移动到第n行的行尾
0(Num):移动光标到行首
^:移动光标到行首第一个非空字符上去
:s/oldword/newword
:%s/oldword/newword
:%s/oldword/newword/g
代码模式匹配补全 ctrl+n或ctrl+p
set incsearch 边查询边显示
==========================================================
ex常用编辑命令:
d (delete) 删除行
m (move) 移动行
co (copy) 复制行
t 复制行,和co同义
方法1:(强烈推荐)
:9,15 copy 16 或 :9,15 co 16
由此可有:
:9,15 move 16 或 :9,15 m 16 将第9行到第15行的文本内容到第16行的后面
方法2:
光标移动到结束行,ma
光标移动到起始行,输入y’a
光标移动到需要复制的行,输入p,行前复制则输入大写P
1. vim有12个粘贴板,分别是0、1、2、…、9、a、”、+;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到”(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;
2. 要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按”Ny完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按”ay就可以了,有两点需要说明一下:
* “号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容;
* +号粘贴板是系统粘贴板,用”+y将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在正常模式下按”+p;
3. 要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按”Np,其中N为粘贴板号,如上所述,可以按”5p将5号粘贴板里的内容粘贴进来,也可以按”+p将系统全局粘贴板里的内容粘贴进来。
g*(g#) 此命令与* #命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串.
% 本命令查找与光标所在处相匹配的反括号, 包括 () [] { }.
删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾) :g/^\s*$/d
把当前行反斜杠\替换为正斜杠/ :s/\\/\//g 或:s,\\,/,g
插入模式下 ctrl+shift+d 减少缩进,ctrl+shift+t 增加缩进
在Normal Mode下 命令>>将对当前行增加缩进,而命令<<则将对当前行减少缩进
1 2 3 4 5 6 7 8 9 10 |
|
gd: 跳转到局部变量的定义处;
gD: 跳转到全局变量的定义处,从当前文件开头开始搜索;
g;: 上一个修改过的地方;
g,: 下一个修改过的地方;
[[: 跳转到上一个函数块开始,需要有单独一行的{。
]]: 跳转到下一个函数块开始,需要有单独一行的{。
[]: 跳转到上一个函数块结束,需要有单独一行的}。
][: 跳转到下一个函数块结束,需要有单独一行的}。
[{: 跳转到当前块开始处;
]}: 跳转到当前块结束处;
[/: 跳转到当前注释块开始处;
]/: 跳转到当前注释块结束处;
%: 不仅能移动到匹配的(),{}或[]上,而且能在#if,#else, #endif之间跳跃。
when yank, ‘] `] To the last character of the previously changed or yanked text. {not in Vi}
While you are in Visual Selection click o. It will change position of cursor to other end of selection. Then O to jump back.
==========================================================
插入模式
<c-h> 删除前一个字符
<c-w> 删除前一个单词
<c-u> 删至行首
插入模式只专注于做一件事:输入文字 普通模式是我们大部分时间所使用的模式
<c-o> 进入插入-普通模式
插入模式下 <C-r>0 插入寄存器0的内容
===============================================================================================
google浏览器vimium插件
ctrl+n 跳转到第n个标签页
chrome vimium
f 在当前标签打开链接
F 在新标签打开链接
j,k 滚动换行
J,K 上下标签
u,d 上下翻半页
h:向左细微滚动窗口。l:向右细微滚动窗口。
zH:一直移动到左部。zL:一直移动到右部。
r 刷新页面
H,L 历史记录前进、后退
gi 聚焦到当前页面的第一个输入框,比如??栏等
gg 跳到页首
G 跳到页尾
t 打开新标签
;重复查找f{char}
, 反方向查找f{char}
x 关闭当前标签
X 恢复刚才关闭的标签
b 在当前标签打开书签
B 在新标签中打开书签
?,shift+/:打开Vimium帮助,设置。「Control + T」可以新建标签页,「Control + N」可以新建窗口
T显示当前所有的标签页,并快速切换
o Open URL, bookmark or history entry
O Open URL, bookmark or history entry in a new tab
b Open a bookmark 配合tab
B Open a bookmark in a new tab
<a-f> Open multiple links in a new tab
n:向下查找匹配内容
N:向上查找匹配内容
p:在当前标签页中打开剪切板中的链接
P:在新的标签页中打开剪切板中的链接
^ Go to previously-visited tab
<alt-f>:在当前页面打开多个链接
As I am a user of vimium, it turns out I had the capabilities already shipped with it even though I wasn’t aware that it existed.
Search the starting point by: /yourSeach
Press enter.
Enable visual mode via: v, and visual mode on a line basis via Shift + V
Select text by vim navigation keys, aka: h, j, k, l, b, e, w, $ (I especially like shift + w, as it goes to the end of the next word)
Yank via y
You now can switch the context and paste the text via Ctrl+V
There also seems to be a caret mode, yet as of yet I somtimes don’t see the current place of the cursor, which is why I prefer the search-first approach as of now.
Ctrl+P:Ctrl+N vim自带补全
Ctrl+] 跳到定义处,相当于ctrl+鼠标左键
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149933.html