vim使用手册

vim使用手册i 在光标前插入 一个小技巧 按 8 再按 i 进入插入模式 输入 按 esc 进入命令模式 就会出现 8 个

大家好,欢迎来到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

:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab

:tabc       关闭当前的tab

:tabo       关闭所有其他的tab

:tabs       查看所有打开的tab

:tabp      前一个

:tabn      后一个

标准模式下:

gt , gT 可以直接在tab之间切换。

[n]gt 向下 转到第n个tab

[n]gT 向上转到第n个tab

:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到刚才编辑的文件

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

(0)
上一篇 2025-03-21 17:20
下一篇 2025-03-21 17:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信