资讯专栏INFORMATION COLUMN

Vim编辑器

Invoker / 2449人阅读

摘要:什么是是从发展出来的一个文本编辑器。依次沿着你的跳转记录向回跳依次沿着你的跳转记录向前跳命令当输入会进入命令行编辑,在编辑器的最下边,出现,其中命令被称作命令。选项,设置当前打开的编辑器的选项,例如是否展示行号,自动缩进等。

什么是Vim

Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs(夸张的说法是伪装成编辑器的操作系统)并列成为类Unix系统用户最喜欢的文本编辑器。Bram Moolenaar 从一个开源的vi开发了1.0的Vim,并且在1992 年 1.22 版本的 Vim 被移植到了 UNIX 和MS-DOS上。自vim发布有很多程序员使用,到2010年vim发布7.3版本,目前最新的一个版本。

安装Vim

Mac下可以直接使用brew安装:

brew install macvim

其他系统下的安装可查看官方网站http://www.vim.org/download.p...

基本概念 普通( Normal )模式

当我们通过vim 文件或文件夹进入编辑器时,默认的就是普通模式,或者叫做命令模式,在这种模式下,键盘上的大部分输入会被认作是快捷键。普通模式也是vim使用中最多使用的模式,能很大的提高编辑效率。
命令解释中的参数:

CHAR 任何非空白字符
WORD 非空白字符的序列 (字串)
N 命令前输入的数值
{motion} 光标移动命令
Nmove {motion} 移动经过的文本

当进入普通模式时左下角显示--INSERT--,下面介绍一些常用的快捷键:

1.模式转换

基本的模式转换快捷键,对于进入编辑模式,下面还有其他快捷键在完成后也会进入编辑模式。
普通模式进入编辑模式

i 在当前位置生前插入N次     
I 在当前行首插入N次
a 在当前位置后插入N次       
A 在当前行尾插入N次
o 在当前行之后插入一行N次    
O 在当前行之前插入一行N次

普通模式进入可视化模式

v 开始面向字符的可视 (Visual) 模式
V 进入面向行的可视 (Visual) 模式
CTRL+v 进入面向列的可视 (Visual) 模式
2.光标移动及屏幕调整

通过快捷键我们可以完成光标的快速移动.

h 光标左移 N 个字符
l 光标右移 N 个字符,这个命令很少用,一般用w代替。
k 光标上移 N 行
j 光标下移 N 行

w 光标向前移动 N 个 WORD,停留在该 WORD 的第一个字符,当到达该行行尾时,会自动换行。
e 光标向前移动 N 个 WORD,停留在该 WORD 的最后一个字符,当到达该行行尾时,会自动换行。
b 光标向后移动 N 个 WORD,停留在该 WORD 的第一个字符,当到达该行行首时,会自动换行。
W,E,B 与w,e,b 功能是一致的,但是在区分 WORD 上是不同的,对于parent.child这种,大写的快捷键会忽略标点符号。

^ 移动到本行第一个非空白字符上。
0(数字0)移动到本行第一个字符上,HOME键也可。
$ 移动到当前行,下 N 行行尾。
| 移到当前行的第 N 个字符。
gg 移动到文件的第一行,同 [[。
G  移动到文件的最后一行,同 ]]。(NG会移动到第 N 行)
f 也可用于移动光标,fx会查找光标后的字符x,3fx会查找光标后的第三个字符x。但f只局限与当前行不会跨行。
F 同f,反向查找。
; 重复前面的f、F、t或T查找命令。
, 以相反的方向重复前面的f、F、t或T查找命令。

z 将当前行下的第 N 行置为屏幕的顶行(即z+ENTER) 或者zt
z. 将当前行上的第 N 行置为屏幕的中央 或者zz
z- 将当前行上的第 N 行置为屏幕的底行 或者zb

H 移动到当前屏幕的开头下 N 行。
M 移动到当前屏幕的中间。
L 移动到当前屏幕的结尾上 N 行。
gm 移动到屏幕中间
+ 移动到下一行的第一个非空字符
- 移动到上一行的第一个非空字符
% 光标会移动后面的第一个小括号中括号大括号 ,所匹配的小括号中括号大括号,即成对出现的符号。

书签

m[a-zA-Z] 在光标所在行定义书签,使用"+书签名 跳转。例如 ma,"a。

组合键

Ctrl + e 向下滚动一行
Ctrl + y 向上滚动一行
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏,同 PAGEDOWN。
Ctrl + b 向上滚动一屏,同 PAGEUP。
Ctrl + o 依次沿着你的跳转记录向回跳
Ctrl + i 依次沿着你的跳转记录向前跳

EX命令 当输入: / ? 会进入命令行编辑,在编辑器的最下边,出现 : / ? ,其中: + 命令 被称作EX命令。

:+行号 可以直接跳到该行 ,当输入行号大于最大行号时,会跳到最后一行。在便器展示行号的情况下,这个命令被经常使用。
:ju 列出跳转历史。
3.查找及替换

查找,vim中可以通过EX命令 :set + 选项 ,去设置一些选项来影响查找。输入/ ? 时,会在底行出现该命令,然后可以输入字符,输入ENTER开始查找,支持正则表达式,并且支持历史操作。

/{查找的内容}[/偏移量] 光标处向下查找指定内容 
?{查找的内容}[/偏移量] 光标处向上查找指定内容
/和? 在开始查找时可使用n或者N在找到的内容之间跳转。
n 重复前一个查找的动作
N 与 n 刚好相反,反向进行前一个查找动作
:set ignorecase  忽略大小写的查找
:set noignorecase  不忽略大小写的查找
:set hlsearch  高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch  关闭高亮搜索显示
:nohlsearch  关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch  逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan  重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
*或者# 会选中光标处的WORD,然后 直接输入N/n,开始查找。

替换,替换操作可以实现缩进,注释。

r{CHAR} 替换光标处的字符。
R{WORD} 替换光标处的字符,直到输入或者CTRL+[为止。
:s/old/new/ 用old替换new,替换当前行的第一个匹配
:s/old/new/c 用old替换new,替换当前行的第一个匹配 带确认选项的删除(选项y[es] ,n[o] ,a[ll] ,q[uit],l[ast]替换完当前退出,Ctrl+e ,Ctrl+y)
:%s/s+$// 删除行尾空格
:s/old/new/g 用old替换new,替换当前行的所有匹配
:%s/old/new/ 用old替换new,替换所有行的第一个匹配
:%s/old/new/g 用old替换new,替换所有行的所有匹配
:%s/([^,]*), (.*)/2 1/
:n,m s/old/new/g 在第n行到第m行之间,用old替换new,替换所有匹配。
& 重复最后的:s命令
:10,20 s/^/    /g 在第10行知第20行每行前面加四个空格,用于缩进。
:起始行号,结束行号s/^/注释符/g
:起始行号,结束行号s/^注释符//g

查找并执行命令

:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:g/text/command 在所有包含text的行运行command所表示的命令 :g/^/m 0
:v/text/command 在所有不包含text的行运行command所表示的命令
4.删除 剪切 拷贝 粘贴

vim是不支持系统的剪切板,linux中,通常通过vim的寄存器来实现,"+y 复制到系统剪切板 ,"+p 把系统粘贴板里的内容粘贴到vim,对于mac,macvim是command+c 和command+v

x 删除光标后 N 个字符
d{motion} 删除移动命令经过的字符,例如 dj 删除当前行及下面一行。
dd 删除当前行
d$ 删除光标到行尾的内容 同D。
Ndd 删除当前行开始的N行。
dG 删除当前行之后所有行
dgg 删除当前行之前所有行
:1,10d 删除1-10行
:11,$d 删除11行及以后所有的行
:1,$d 删除所有行
J 合并当前行及下面 N 行。即删除空格。
s 删除光标处的 N 个字符并进入插入模式
S 删除光标下的 N 行并进入插入模式
c{motion} 改变移动命令经过的字符,同d 命令,并进入插入模式。
y  拷贝当前光标选中部分,常在可视模式中使用。
yy 拷贝当前行下 N 行
:1,10y 复制1-10行
:,10y  复制光标所在行到10行
p  在当前光标后粘贴 N 次,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
P  在当前行前粘贴 N 次
:1,n co m 将1-n行插入到第m行之后。
:1,$ co $ 将整个文件复制一份并添加到文件尾部。
5.撤销 重复
u 撤销(Undo)
U 撤销对整行的操作
Ctrl + r ,即撤销的撤销。
. 重复上次修改,包含你在插入模式的插入。许多如果想多次使用的修改命令,可以它代替。
6.EX命令

当输入:会在底行出现:,再次输入的内容都会出现在:之后,这些输入的内容,会被认作EX命令。
通过EX命令设置的vim选项,都只在当前编辑窗中有效,退出后,则消失,如需永久有效,需修改vim的配置文件.vimrc。
常使用的EX命令:

:q 退出文件
:w 保存文件 (或者+ filename 另存为)
:wq 保存退出文件(也可在普通模式下使用 ZZ 快捷键)
:x 保存退出 与wq的区别是保存退出时,如果该文件没有修改,则不会修改文件的时间戳,wq则一定会。
:q! 强制退出
:help+命令 查看帮助
:e 后接文件名,打开文件,支持ftp,不接文件名时,直接刷新当前文件。
:e!放弃所有修改,重新打开文件。
:open+ 打开file
#可通过:files或者:ls或者:buffers,来查看vim缓冲区,即可跳转文件。
:bn 切换到下一个文件 
:n   编辑下一个文件
:bp 切换到上一个文件
:new 打开个新窗口或者在新窗口打开文件
:split 打开个新窗口或者在新窗口打开文件(vsplit也可以,split打开的窗口都是横向的,使用vsplit可以纵向打开窗口。)
:!command  在当前目录下执行shell命令。
:sh 打开子shell,ctrl+d或者exit退出 (或者使用Ctrl+z 挂起 ,fg返回)
:r 文件名   在光标所在处插入一个文件的内容。
:10r 文件名   将文件插入至 10 行之后。
:r! {command} 将命令 {command} 的标准输出插入到光标之下
:10,29write [!或者>>]name   将10-29 行的内容保存到文件name中。!表示强制 >> 表示追加 
:f 显示文件名、当前的行号、文件的总行数和文件位置的百分比,是否修改。
:f+ 改变编辑中的文件名。
:iab[breviate] re React 定义插入模式下缩写。
:abclear
#set 选项
:set+
7.其他
:ls 查看缓存区
q: 查看命令窗口
:reg 查看寄存器
:marks 查看书签
:delm[ark] + 书签名  删除书签。
<{motion} 将动作 {motion} 覆盖的所有行向左移动 1个移位宽度
>{motion} 将动作 {motion} 覆盖的所有行向右移动 1个移位宽度
>> 向右移动一个移位宽度
<< 向左移动一个移位宽度
:n,m>> ,n到m行右移一个移位宽度
CTRL+g 显示文件名、当前的行号、文件的总行数和文件位置的百分比,是否修改。
:= 打印文件中的行数
gf 打开光标处文件,文件要在当前目录内。
gd 到达光标所在处函数或者变量的定义处。
:".   它移动光标到上一次的修改行
K  看光标所指标识符的 man 帮助页
~ 大小写替换,同时光标前移
gu{motion} 经过的位置内容小写(guu 当前行)
gU{motion} 经过的位置内容大写(gUU 当前行)
g~{motion} 经过的位置内容大小写互换。
zfap 按段落折叠
zo 打开折叠
插入模式

只有在插入模式下,才可以做文字输入,不会被认为是快捷键,在普通模式下可以通过i进入插入模式。

CTRL+c 同离开插入模式
CTRL+o {command}短暂离开插入模式,执行命令command后回到插入。
可视模式

可视模式下可以使用普通模式的大部分快捷键,当进入可视模式时左下角显示--VISUAL--,具体细节可查看vim的文档
可视模式主要是做选择操作,此时移动光标的操作都会把光标经过的部分选中。

CTRL+c 同离开可视模式
ab 选择 "一个块" (从 "[(" 至 "])") (block)
ib 选择 "内含块" (从 "[(" 到 "])")
aB 选择 "一个大块" (从 "[{" 到 "]}") (Block)
iB 选择 "内含大块" (从 "[{" 到 "]}")
U 选中部分大写
u 选中部分小写
常用插件 NERDTree

NERDTree最常用的插件之一,以树形结构展示文件夹,实现我们在IDE的项目视图。可以去官方网站https://github.com/scrooloose...查看如何下载安装。
主要快捷键:

ctrl + w + h    工作窗口左移
ctrl + w + l    工作窗口右移
ctrl + w + w    光标自动在左右侧窗口切换
ctrl + w + r    移动当前窗口的布局位置
o       在已有窗口中打开文件、目录或书签,并跳到该窗口
go      在已有窗口 中打开文件、目录或书签,但不跳到该窗口
t       在新 Tab 中打开选中文件/书签,并跳到新 Tab
T       在新 Tab 中打开选中文件/书签,但不跳到新 Tab
i       split 一个新窗口打开选中文件,并跳到该窗口
gi      split 一个新窗口打开选中文件,但不跳到该窗口
s       vsplit 一个新窗口打开选中文件,并跳到该窗口
gs      vsplit 一个新 窗口打开选中文件,但不跳到该窗口
!       执行当前文件
O       递归打开选中 结点下的所有目录
x       合拢选中结点的父目录
X       递归 合拢选中结点下的所有目录
e       Edit the current dif
双击    相当于 NERDTree-o
中键    对文件相当于 NERDTree-i,对目录相当于 NERDTree-e
D       删除当前书签
P       跳到根结点
p       跳到父结点
K       跳到当前目录下同级的第一个结点
J       跳到当前目录下同级的最后一个结点
k       跳到当前目录下同级的前一个结点
j       跳到当前目录下同级的后一个结点
C       将选中目录或选中文件的父目录设为根结点
u       将当前根结点的父目录设为根目录,并变成合拢原根结点
U       将当前根结点的父目录设为根目录,但保持展开原根结点
r       递归刷新选中目录
R       递归刷新根结点
m       显示文件系统菜单
cd      将 CWD 设为选中目录
I       切换是否显示隐藏文件
f       切换是否使用文件过滤器
F       切换是否显示文件
B       切换是否显示书签
q       关闭 NerdTree 窗口
?       切换是否显示 Quick Help
#切换标签页
:tabnew [++opt选项] [+cmd] 文件 建立对指定文件新的tab
:tabc   关闭当前的 tab
:tabo   关闭所有其他的 tab
:tabs   查看所有打开的 tab
:tabp   前一个 tab
:tabn   后一个 tab
pathogen

插件管理工具,vim有很多插件可供我们使用,当插件数量大的时候就需要一个专门的工具去管理,pathogen就是实现功能,下载安装https://github.com/tpope/vim-...

其他

vim 有很多有用的插件,像ctags、taglist、foldmethod、xmledit、visualmark、vim-markdown等。当然也有一些人把一些好的配置分享出来,比较受欢迎的有:
https://github.com/spf13/spf1...
https://github.com/carlhuda/j...

最近发现个,可以看看试着去配置自己的vim
https://github.com/square/max...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/15234.html

相关文章

  • 最好用的辑器之一:Vim-Go环境搭建

    摘要:可能是他用过众多编辑器最难用的一个。建议先看完跟我学的第一章部分环境准备能成功从拉取代码,编译器安装完成之后,就可以在搭建啦。可以方便的浏览项目的总体的目录结构和创建删除重命名文件或文件名。 本文由Librant发表 如果说在Linux环境下,什么编辑器最好用,如果我说是VIM,估计会有一大部分人嗤之以鼻,怎么可能。VIM可能是他用过众多编辑器最难用的一个。在我司用的是云虚拟机,说实话...

    imccl 评论0 收藏0
  • Linux学习笔记:4.Vim辑器(1)

    摘要:概述用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是。的命令几乎全部都可以在上使用,安装了的系统,在命令行输入,实际启动的是编辑器。 Vi/Vim概述 Linux用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是Vi/Vim。几乎任何一个发行版都有Vi或者Vim编辑器。 Vi编辑器可以对文本进行编辑、删除、查找和替...

    OpenDigg 评论0 收藏0
  • Linux学习笔记:4.Vim辑器(1)

    摘要:概述用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是。的命令几乎全部都可以在上使用,安装了的系统,在命令行输入,实际启动的是编辑器。 Vi/Vim概述 Linux用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是Vi/Vim。几乎任何一个发行版都有Vi或者Vim编辑器。 Vi编辑器可以对文本进行编辑、删除、查找和替...

    hss01248 评论0 收藏0
  • 还有必要学Vim吗?

    摘要:在这样一个时代,还要学这种中古的技能吗我来讨论一下为什么要,不但要,而且必须要。其实要说功能强大,的产品无疑都很牛。这也是造成它学习成本高,被人吐槽多的原因。出现之后,包括等等在内的各种创新涌现了出来。 曾经有一段时间,编辑器领域的创新停滞了。在web编程走红,尤其是electron出现之后,这个领域又上了一个新台阶。Atom, VsCode等等替代了之前唯一的但是臃肿的跨平台选择 -...

    ytwman 评论0 收藏0
  • 折腾Vim 辑器

    摘要:目的不是比较什么编辑器更好,也不是宣传多么神奇,只是想给需要的人提供一些帮助。编辑的时候不用频繁的敲和了。所以,针对不容的环境,不同的项目,应选择最合适的编辑器,就像不同的项目要用不同的开发语言一样。 Abstract 本文主要介绍如何从0开始,构造适合自己的vim。目的不是比较什么编辑器更好,也不是宣传vim多么神奇,只是想给需要的人提供一些帮助。文章以ubuntu14.04,Vim...

    李世赞 评论0 收藏0
  • 优测优社区干货精选|老司机乱谈辑器之神——vim

    摘要:点击原文链接体验更佳哦优测优社区干货精选老司机乱谈编辑器之神腾讯优测腾讯优测是专业的移动云测试平台,为应用游戏,混合应用的研发团队提供产品质量检测与问题解决服务。 文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了。本文介绍了学习vim的方法以及一些vim常用的插件...

    BaronZhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<