By francis_hao    Sep 22,2016

vim的功能自然不止如此,这里只是把日常使用频率较高的记录下来,若想了解vim的全部功能可查阅其帮助手册:help,或者查询指定命令的用法:help xx

选项

选项

说明

+[num]

对第一个文件,在打开后,光标将会定位在第num行,如果num没有指定,光标将会定位在最后一行

+/<pat>

对第一个文件,光标将会定位在第一次出现pat的地方,查看":help search-pattern" 了解可用的搜索模式

-o[N]

以横向方式同时打开N个窗口,如果没有指定N,就为每个文件打开一个窗口

-O[N]

以纵向方式同时打开N个窗口,如果没有指定N,就为每个文件打开一个窗口

基本用法

进入插入模式命令

i

在光标前开始插入文本

a

在光标后开始插入文本

o

在当前行之下新开一行

O

在当前行之上新开一行

光标移动命令

gg, :0

光标转到首行行首

G, :$

光标转到末行行首

0

光标移到本行行首

$

光标移到本行行尾

n+

光标下移n行

n-

光标上移n行

nG, :n

光标移至n行行首

Ctrl+u

上翻半屏(up)

Ctrl+d

下翻半屏(down)

Ctrl+b

上翻一屏(backwards)

Ctrl+f

下翻一屏(forward)

()

句子移动

{}

段落移动

H

光标定位到屏幕顶部

M

光标定位到屏幕中间

L

光标定位到屏幕底部

w

光标向前移动一个单词(word)

b

光标向后移动一个单词(back)

e

光标移动到当前单词的结尾(end)

zt

将当前行变为屏幕第一行(top)

zz

将当前行变为屏幕中间行

zb

将当前行变为屏幕尾行

Ctrl+e

屏幕上移一行但光标位置不变

Ctrl+y

屏幕下移一行但光标不变

删除复制和替换

dd

删除整行

d0

从当前位置删至行首

d$, D

从当前位置删至行尾

ndd

删除n行

dl

删除光标位置一个字符

dw

删除当前位置至单词结尾

cc

删除当前行并进入插入模式,cl,cw类似d

yy

复制当前行,yl,yw类似d

p

粘贴

r

修改光标所在位置字符

s

删除光标所在位置字符并进入插入模式

u

撤销上一次的操作

Ctrl+r

恢复上一次的操作

查找和替换

/pattern

从光标处开始向文件尾搜索pattern,在pattern后加\c可以不区分大小写

?patern

从光标处开始向文件首搜索pattern

n

在同一方向重复上一次搜索命令

N

在反方向重复上一次搜索命令

: nohlsearch (noh)

取消搜索结果的高亮显示

:s/p1/p2/g

将当前行中所有p1用p2替代

:n1,n2s/p1/p2/g

将第n1至n2行中所有p1均用p2替代 :1,$从第一行到末行=%

*

向文件尾搜索匹配光标所在字

#

向文件首匹配光标所在字

寄存器说明

vim里有许多寄存器,暂时只记录平时有用过的。

""

默认寄存器,文本来源命令d/c/s/x/y

"0

复制缓存,来源为yy命令

"1-"9

删除缓存,来源为dd命令

"a-"z

自定义的寄存器,不会被系统自动冲刷,总是存储最后一次使用的值。

"A-"Z : 向"a-"z寄存器中追加新内容而不是覆盖,虽然"A-"Z本身不是寄存器,但是却可以引用。

"ayy

复制当前行并将其存放在"a寄存器中

"_

黑洞寄存器,只进不出

:reg

查看寄存器里的值(全名为:registers)

eg:

下图左侧是vi中的文字,1yy表示第一次执行yy命令,以下以此类推,右侧为执行后的寄存器中的值

扩展部分

杂项

v

可视行

Ctrl+v

可视列

Ctrl+g

查看当前文件信息(文件名和行数)

:!command

暂时退出vi,执行command命令并输出结果

!!command

执行command命令并将执行结果输出到当前行(覆盖方式)

!}command

执行command命令并将执行结果输出到当前行和之后的行中(覆盖方式)

:r hello

将hello文件读入当前文件中

:n1,n2 w>>fox

将n1至n2追加到fox文件中

:Ex

(:Explore)开启目录浏览,可以浏览当前目录下的所有文件,可以选择

:Sex

(:Sexplore)水平分割当前窗口,并在一个窗口中开启目录浏览器

:shell

不关闭vi切换到shell命令行,退回到vi使用:exit

.

重复上一个操作

多文件编辑

$vi f1 f2 f3

同时打开f1 f2 f3

:n

切换到下一个文件(:next)

:bn

切换到下一个文件(:bnext)

:prev

切换到上一个文件(:previous)

:bp

切换到上一个文件(:bprevious)

:n#

切换最近两个文件

:e#

Ctrl+6

:buffers

显示缓冲区的文件列表

:ls

:b buffnum

切换到buffnum的文件,buffnum是缓冲文件列表的值

:bd buffnum

关闭buffnum的文件(:bdelete )

:rewind

切换到第一个文件

:e f4

在缓冲区添加新的文件,和之前打开的文件属于并列关系

:e!

重新载入当前文件,用在撤销当前所有做过的修改

:mksession! [name.vim]

保存多文件会话状态

$vim –S name.vim

vim重载之前的多文件会话状态

:source name.vim

手动重载之前会话

多标签

$vim –p f1 f2 f3

以多标签的方式打开多个文件

gt

向右切换标签

gT

向左切换标签

:tabnew filename

添加一个新标签

:tabc

关闭当前的tab

:tabo

关闭其他的tab只留当前一个

:tabs

查看所有打开的tab

:tabp

前一个

:tabn

后一个

set

vimrc

系统 vimrc 文件: "/etc/vimrc"(优先级低)

用户 vimrc 文件: "$HOME/.vimrc"

第二用户 vimrc 文件: "~/.vim/vimrc"

用户 exrc 文件: "$HOME/.exrc"

vim的配置文件,一些配置信息可写入此文件中,但也可以在打开的文件中使用:set以实现一次性的功能

:version

查看vim版本信息

"

.vimrc文件中的注释行

:set paste

设置为粘贴模式,所见即所得,不会因为注释乱了格式

:set

显示常用的设置值

:set list

显示不可见字符

vi编码

set encoding=utf-8

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

set termencoding=utf-8

程序员专用

杂项

K

跳转到光标所在函数或命令的man手册

J

将当前行的下一行合并到当前行

%

跳转到匹配"{"对应的"}"的位置

gd

跳到局部的变量定义处,不能跨文件

gf

打开光标所在位置的文件名,一般是头文件

ctrl+w f分屏打开文件

>

缩进,<:反缩进

Ctrl+o

跳转到上一视图,可用于搜索后、使用gg|G跳转或tag跳转的返回

''(两个单引号)

在上一视图和本视图之间切换

ma

设置标签a,之后可以通过`a跳转到设置的标签a处,类似的标签:a-z

~

可转换光标所在位置的字母大小写

gg=G

整个文件重置缩进

2G=15G

第二行至第15行重置缩进

:set ft=c

设置文件类型是c (filetype)

:filetype

显示当前文件类型相关的设置

文件比较

$vimdiff f1 f2

直观的比较f1和f2的不同(vimdiff是shell下一个链接命令,指向vim)

:vertical diffsplit xxx

垂直方式比较当前文件和xxx文件

zo

打开光标下面的一个折叠(open)

zO

打开光标下面的所有折叠

zc

关闭光标下面的一个折叠(close)

zC

关闭光标下面的所有折叠

:set noscrollbind

取消文件比较中的同步滚屏功能

]c

跳到下一个修改点

[c

跳到上一个修改点

:diffupdate

在比较过程中,修改过一个文件后更新比较状态

dp

把光标所在窗口的差异改到另一个窗口(:diffput)

do

把光标所在窗口的差异改为另一个窗口的(:diffget) o=obtain

:diffoff!

强制关闭比较模式

窗口分割

:split xxx

打开xxx并与当前文件水平排列

:vsplit xxx

打开xxx并与当前文件垂直排列,

:15split xxx

以占据15行的窗口打开文件xxx

:new [xxx]

新建(打开)一个与当前文件水平排列的文件

:vnew [xxx]

新建(打开)一个与当前文件垂直排列的文件

ctrl+w w

在打开的文件中跳转

Ctrl+w [hjkl]

跳转到[左下上右]的窗口

Ctrl+w [tb]

跳转到最上/最下的窗口

Ctrl+w [HJKL]

把当前窗口移动到最[左下上右]边

Ctrl+w +

扩大窗口(默认一行),5ctrl+w +(扩大5行)

Ctrl+w =

平分窗口

Ctrl+w _

扩大窗口到最大,带参数{height}ctrl+w _

:res(ize) num

窗口大小调整为num行

:res(ize) +num

窗口大小增加num行

:vertical res(ize) num

窗口大小调整为num列

:close

关闭当前的(不能是最后一个)的窗口

Ctrl+w c

:only

关闭除当前窗口外的所有窗口

:qall

关闭所有打开的窗口

:wall

保存所有的打开的窗口文件

:wqall

保存并退出

$vim –o f1 f2 f3

以水平排列方式打开三个文件

$vim –O f1 f2 f3

以垂直排列方式打开三个文件

:all

将已经打开的多个文件分配水平的窗口

:vertical all

将已经打开的多个文件分配垂直的窗口

Ctrl+w o

只显示当前窗口,

ctags

$ctags --list-languages

显示ctags支持的语言

$ctags --list-maps

默认支持的文件扩展名

$ctags -R

给当前文件夹下的所有文件建立tags

~set tags=/tags

在.vimrc文件中设置tags的路径,如果有多个tags可以用","分割,或者set tags+=/tags进行添加。

:tag main

可以从打开的文件中跳到main函数处,即使打开的文件中没有main函数(在别的文件中也可以跳过去)

Ctrl+]

以光标所在位置的单词为tag跳转

Ctrl+t

跳回到之前的位置,可以在前面加上跳转的深度,3ctrl+t:跳回之前三层之上的位置

:tags

列出已经跳转到过哪些tag了

:tag /^block<tab>

查找以block开头的可能的tag

Ctrl+w+]

分割当前窗口并跳转到光标所在位置的tag处

:stag xxx

$vim –t tag

找到tag(函数,结构体等)所在文件并打开

:tn

多个匹配tags时跳转下一个(:tnext)

:tp

多个匹配tags时跳转上一个(:tprevious)


本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/6517071.html

参考

【1】VIM使用系列:寄存器与复制粘贴缓冲区:https://my.oschina.net/shelllife/blog/144357

【2】VIM字符编码设置:http://www.cnblogs.com/freewater/archive/2011/08/26/2154602.html

【3】linux下vim中文乱码的解决方法:http://www.cnblogs.com/joeyupdo/archive/2013/03/03/2941737.html

【4】VIM技巧之分隔窗口:http://blog.chinaunix.net/uid-24673811-id-1994607.html

【5】vim中多标签和多窗口的使用:https://my.oschina.net/kutengshe/blog/464602

【6】开启文件类型检测:http://easwy.com/blog/archives/advanced-vim-skills-filetype-on/

【7】man vim

转载于:https://www.cnblogs.com/yinghao1991/p/6517071.html

Vim使用小记(一)常用操作相关推荐

  1. vim的几个常用操作

    现在很少会有人用vim来写代码,所以vim更常用在server上面编辑配置文件或者少量代码编辑: vim操作命令非常之多,如果仅用作一个配置文件的编辑器,掌握几个常用的操作就够了: 常用的操作其实就是 ...

  2. 如何取消linux响铃_linux初学者入门:VIM编辑简易指南(常用操作)

    在linux低下最常用的文本编辑器为vim,如何进入编辑模式 i,I,a,A (i,在光标当前位置插入,a在当前位置追加),o,O在一个新的一行输入新字符,r,R为取代原来的字符以上输入都在一般模式当 ...

  3. 20180929 VIM进入编辑模式、VIM命令模式常用操作

    2019独角兽企业重金招聘Python工程师标准>>> vim进入编辑模式方式 按键 作用 i 在当前字符前插入 I 在光标所在行的行首插入 a 在当前字符后插入 A 在光标所在行的 ...

  4. vim查找关键字_vim常用命令及操作

    [1]光标移动 h 光标左移,同 <Left> 键 j 光标下移,同 <Down> 键 k 光标上移,同 <Up> 键 l 光标上移,同 <Up> 键& ...

  5. Linux下vim常用操作

    vim有三种模式,分别是命令模式.编辑模式和最后行模式 当我们在命令行模式中时是不可以进行文本编辑的,我们可以通过按一下几个字母中的其中一个进入编辑模式 i 插入,也就是在你光标位置的前面进行插入编辑 ...

  6. vim常用操作技巧与配置

    转自:http://os.chinaunix.net/a2006/0706/963/000000963867.shtml vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两 ...

  7. Vim文本编辑器及文本处理常用操作

    目录 vim编辑器介绍 vi编辑器 vim编辑器 基本模式 派生模式 其他 使用vim编辑器 vim编辑器命令格式 vim基础操作-打开文件 vim基础操作-移动光标 vim基础操作-数据操作 vim ...

  8. VI/VIM 编辑器常用操作

    目录 VI/VIM编辑器常用操作介绍: 1.VI和VIM是什么 2.一般模式 2.1常用语法 3.编辑模式 3.1常用语法 4.指令模式 4.1基本语法 5.模式转换 6.VI/VIM键盘图 1.VI ...

  9. Linux之Vim常用操作

    Linux之Vim常用操作 Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑和显示文本文件.Vim没有菜单,只有命令. 一.插入命令 命令 作用 ...

  10. 【PHP】PHPExcel类 excel常用操作小结

    PHP使用好久了,好像今天才想起来要记一篇博客呢.之前一直用的 ci 框架,后来做接口的时候打算换成 tp5, 不料机缘巧合之下又结识了 node,于是乎决然的站到了 js 的大营之下.PHP这块我会 ...

最新文章

  1. PowerShell过滤文件中的重复内容
  2. Linux 下各个目录的作用及内容
  3. mysql补充(3)优化sql语句查询常用的30种方法
  4. Html 教程 (5) “表格”三要素
  5. Kotlin实战指南十九:use 函数魔法
  6. 全向轮底盘磁导轨寻迹
  7. 【HDU - 1873】 看病要排队(优先队列)
  8. 小学生手写Python程序解魔方!这是高手,这绝对是高手!
  9. Spring: 事务传播机制
  10. sql server高可用_SQL Server 2019常规可用性和安装概述
  11. WPF基本布局(Grid、StackPanel)
  12. 如何写一份成功的商业计划书
  13. 利用PPT制作不一样的动态文字技巧
  14. c语言比matlab慢很多,为什么我的Python脚本与Matlab相比速度太慢?
  15. 完美解决“未能装载Office文档控件。请使用Internet Explorer(6.0+)浏览器并检查浏览器的安全设置。”的方案
  16. linux沙盒程序,沙盒应用程序如何?
  17. 用C语言对单词首字母进行排序,c语言单词排序
  18. 超级详细Ubuntu20.04.5系统下编译安装OpenCV with ffmpeg4.2.7、NVIDIA显卡驱动515、cuda11.5、cudnn8.3.3并编译使用darknet-yolov4
  19. 【C#】 enum 还能这么玩
  20. 数字图像处理【杜克大学】(冈萨雷斯第三版) Guillermo Sapiro

热门文章

  1. sqli_labs通关秘籍
  2. ABAP使用AMDP调用HANA存储过程
  3. Vue项目中实现用户登录及token验证
  4. python中日期字符串与datetime类型的相互转换
  5. 计算机更换内存条后无法连接网络,求助! 电脑加了内存条 运行反而变慢了
  6. 物联网云服务器框架,物联网(五)---搭建自己的云平台[ESP8266+Django]
  7. 专利申请一般需要多长时间受理?
  8. html顶部边距代码_如何在addHTML中设置上下边距
  9. JZOJ 4639 Angel Beats!【NOIP2016提高组A组7.16】
  10. 茄子python_python笔记一