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)

()

句子移动

{}

段落移动

光标定位到屏幕顶部

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

Vim使用小记(一)常用操作的更多相关文章

  1. vim的几个常用操作

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

  2. vim 打开文件的常用操作

    一.如果在终端中开没有打开vim,可以: 横向分割显示: $ vim -o filename1 filename2 纵向分割显示: $ vim -O filename1 filename2 二.如果已 ...

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

    vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中  ...

  4. [编辑器]vim常用操作

    我是ide的用户,对于vim一只停留在:打开.看.写.关闭基本操作,因为现在更多的接触linux服务器,所以为了提高 效率,用好vim是必备技能!下面罗列一些vim的常用操作,用做备忘(不断更新): ...

  5. 关于vim的常用操作

    vim常用操作和使用技巧 vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技 ...

  6. vim常用操作和使用技巧

    vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中  ...

  7. (转)vim(vi)常用操作及记忆方法

    vim(vi)常用操作及记忆方法 原文:https://www.cnblogs.com/doseoer/p/6241443.html vi(vim)可以说是linux中用得最多的工具了,不管你配置服务 ...

  8. VIM常用操作手册

    VIM常用操作手册 1.多行操作,多行注释,多行取消注释 https://jingyan.baidu.com/article/9c69d48f43ed6d13c8024e7b.html 2.常用操作 ...

  9. Linux下Vim常用操作

    linux下Vim的常用操作 linux ​ 首先\(ctrl+Alt+t\)打开小框框 ​ \(./\):相当于手机上的\(home\)键 ​ \(ls\):当前文件夹的东东 ​ \(mkdir\) ...

  10. vim程序编辑器---常用操作整理

    vim程序编辑器---常用操作整理 移动光标方法 o 在光标行的下一行,进入编辑模式 $ 移动到光标这行,最末尾的地方 G(大写) 移动到文件最末行 :set  nu 文件显示行数 :set  non ...

随机推荐

  1. Leecode刷题之旅-C语言/python-13.罗马数字转整数

    /* * @lc app=leetcode.cn id=13 lang=c * * [13] 罗马数字转整数 * * https://leetcode-cn.com/problems/roman-to ...

  2. Unicode控制字符

    Unicode控制字符就是特殊的Unicode字符 控制字符转义代码对照表 Unicode-控制字符 ‎LRM ‏RLM ‍ZWJ ‌ZWNJ ‪LRE ‭LRO ‮RLO ‬PDF NADS  ...

  3. [ACM] POJ 2409 Let it Bead (Polya计数)

    参考:https://blog.csdn.net/sr_19930829/article/details/38108871 #include <iostream> #include < ...

  4. PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改

    商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...

  5. C++11中std::move的使用

    std::move is used to indicate that an object t may be "moved from", i.e. allowing the effi ...

  6. hive报错:Caused by: ERROR XBM0H: Directory /var/lib/hive/metastore/metastore_db cannot be created.

    在cdh集群中,删除之前的hive服务,然后将hive添加到其他节点,然后再通过hive客户端连接hive报错: Caused by: ERROR XJ041: Failed to create da ...

  7. Python连接符的种类和使用区别

    python的连接符主要有 加号(+).逗号(,).空格(   ) .反斜线(\).join()的方式. 加号(+),demo如下: #注意,+只能连接字符串,如果一个是字符串一个是数字就会报错 pr ...

  8. 程序员编程利器:20款最好的免费的IDEs和编辑器

    程序员编程利器:20款最好的免费的IDEs和编辑器 还没转眼明年可就大年三十了,忙的可真是晕头转了个向,看着亲朋好友们那让人欣羡的小肚腩,不禁感慨,岁月是一把猪饲料,绿了芭蕉,肥了那杨柳小蛮腰,可怜我 ...

  9. ContOS软件包安装【零】

      选择是“Minimal”安装  ,最小化.  越简单,越不容易出错. 1.听一些老鸟分析,选择安装包时应该按最小化原则,即不需要的或者不确定是否需要的就不安装,这样可以最大程度上确保系统安全.(安 ...

  10. 剑指offer-链表中倒数第K个结点14

    题目描述 输入一个链表,输出该链表中倒数第k个结点. class Solution: def FindKthToTail(self, head, k): # write code here res=[ ...