玩转VIM编辑器-导航移动
玩转VIM编辑器-导航移动 - 郭—大—侠 - 博客园 http://www.cnblogs.com/shaoguangleo/archive/2011/10/29/2806034.html
玩转VIM编辑器-导航移动
如果像前面所说的,只是通过h、j、k、l 来移动光标,在大量移动的过程中会发现比较耗费时间并且效率不高。这一节就主要通过一些快捷的导航移动方式来快速移动光标到达指定的位置。
数值参数
比如准备向右移动4个字符,就可以使用4l,相当于llll。
滚动整页或半页
导航键 |
描述 |
CTRL+F |
向下滚动整页 |
CTRL+B |
向上滚动整页 |
CTRL+D |
向下滚动半页 |
CTRL+U |
向上滚动半页 |
CTRL+E |
向下滚动一行 |
CTRL+Y |
向上滚动一行 |
字的导航
导航键 |
描述 |
w |
移动到下一个word的开始处 |
W |
移动到下一个WORD的开始处 |
e |
移动到当前word的末尾 |
E |
移动到当前WORD的末尾 |
b |
移动到前一个word的开始处 |
B |
移动到前一个WORD的开始处 |
word和WORD的区别
word由一系列的字符、数字和下划线构成,而WORD是由非空白符组成的字符串,有空格分开。例如image[0].x = 192.15,那么这个有很多的word组成,而只有三个WORD组成,分别为:image[0].x、=和192.15。
一行中的几个光标特殊位置
导航键 |
描述 |
0 |
跳转至当前行的开始 |
$ |
跳转至当前行的结束 |
^ |
跳转至当前行开始的第一个非空字符 |
g_ |
跳转至当前行最后一个非空的字符 |
段落、章节、语句的跳转
导航键 |
描述 |
{ |
移动至当前段落的开始 |
} |
移动至下一段落的开始 |
[[ |
移动至当前章节的开始 |
]] |
移动至下一章节的开始 |
( |
移动至当前语句的开始 |
) |
移动至下一语句的开始 |
好好体会段落、章节和语句的含义。其中段落比较使用,可以从一个子函数中来回的跳转。章节:大跳转。语句:空白行分割。
屏幕导航
导航键 |
描述 |
H |
移到屏幕顶端的行-home |
M |
移到屏幕中央的行-middle |
L |
移到屏幕底端的行-last |
nH |
移到屏幕顶端往下的第n行 |
nL |
移到屏幕底端网上的第n行 |
使用当前行重绘屏幕
导航键 |
描述 |
z然后ENTER |
将光标行移到屏幕顶端并滚动屏幕 |
z. |
将光标行移到屏幕中心并滚动屏幕 |
z- |
将光标行移到屏幕底端并滚动屏幕 |
200z然后ENTER |
会把第200行移到屏幕顶端 |
快速跳转至文件首尾
导航键 |
描述 |
:0 |
跳转至文件头-方法1 |
gg |
跳转至文件头-方法2 |
1G |
跳转至文件头-方法3 |
:$ |
跳转至文件尾-方法1 |
G |
跳转至文件尾-方法2 |
跳转至文件的第N个字符、N%
导航键 |
描述 |
50% |
跳转至文件的50%处,即文件中间 |
75% |
跳转至文件的75%处,即3/4处 |
100l |
跳转至从当前位置开始计算的第100个字符 |
100<space> |
跳转至从当前字符开始计算的第100个空格处,与上述100l含义相同 |
:goto 25 |
移动至从文件开始处的第25个字符 |
25 | |
移动到当前行的第25个字符 |
显示当前行数
命令 |
描述 |
:set number :set nu |
显示行数 |
:set nonumber :set nonu |
不显示行数 |
:set numberwidth=10 |
行数显示默认宽度为4个字符,我们可以通过该命令来设为10个字符。 |
跳转至特定行
导航键 |
描述 |
:50 |
跳转至50行-方法1 |
50gg |
跳转至50行-方法2 |
50G |
跳转至50行-方法3 |
源码导航
下面的几个对与经常写程序源码的或者写shell脚本的系统管理员比较有用。
导航键 |
描述 |
% |
跳转至匹配对,可以是()、{}或者[] |
[( |
跳转至前一个没有匹配的( |
[) |
跳转至前一个没有匹配的) |
[{ |
跳转至前一个没有匹配的{ |
[} |
跳转至前一个没有匹配的} |
在插入状态移动光标
在常规状态下,我们可以通过w和W来在word中移动光标,但是一旦进入了插入模式,就不能使用这两个导航键了,但是我们也不需要退出插入模式,然后在使用w导航,我们可以使用SHIFT+方向键来快速移动。
使用CTRL+O和CTRL+L跳转
Vim会保存我们在其中的所有导航操作到一个列表,我们可以使用:jumps来查看该列表,同时可以使用下述导航键来进行跳转。
CTRL+O |
跳转至前一个记录点 |
CTRL+i |
跳转至后一个记录点 |
5CTRL+O |
跳转至当前记录点的前5个 |
5CTRL+i |
跳转至当前记录点的后5个 |
在很长的一行中导航
我们知道一般终端的每一行都会有个字数限制,如果一行的字符数超过了这个限制,就会自动跳转到下一行,比如实际的一行可能你看起来是5、6行的样子,那么这个时候你如果使用j、k那么就有种跳转了N行的假象。在这种情况下,如果在视觉情况下,跳转到下一行(其实是同一行),使用下述导航键。
导航键 |
描述 |
gj |
视觉中的下一行 |
gk |
视觉中的上一行 |
g^ |
当前视觉行的行首 |
g$ |
当前视觉行的行尾 |
gm |
当前视觉行的中间 |
Vim命令行导航
在我们使用vim打开文件的时候,就可以按照自己的需要跳转到指定的位置。
命令行 |
描述 |
vim +143 <filename> |
打开文件filename,并跳转到143行 |
vim +/search-term <filename> |
打开文件filename,并跳转到从文件头开始的第一个符合条件的位置 |
vim +?search-term <filename> |
打开文件filename,并跳转到从文件尾开始的第一个符合条件的位置 |
vim –t TAG |
跳转到一个特定的TAG |
使用标记创建本地书签
有两种书签,本地书签和全局书签,区别在于本地使用小写字母,全局使用大写字母。
书签命令 |
描述 |
ma |
在光标位置创建书签a |
`a |
跳转到书签a的精确位置 |
‘a |
跳转到书签a所在行的行首 |
创建全局书签
将ma改为mA就可以创建全局书签A。
这个主要用在当我们打开多个文件的时候,创建全局书签可以方便的在各个文件中跳转。
显示所有的书签
可以使用命令:marks来显示所有的书签。我们会发现不过什么时候打开所有书签,都会有’, ”,[ ,]和.。这几个都是默认的书签,有特殊的含义。
默认书签 |
描述 |
`” |
退出前最后编辑的位置 |
`[ |
上次修改或者复制的第一个字符 |
`] |
上次修改或者复制的最后一个字符 |
`< |
上次visual区域的第一行 |
`> |
上次visual区域的最后一行 |
`. |
最后一次修改的位置 |
`^ |
最后一次插入模式停止的位置 |
还可以使用:marks a来显示所有关于书签a的详细信息。
使用ctags来有效地在源码中跳转
1. 当然使用之前,需要先行安装ctags包;
2. 在源码文件夹中,使用ctags *.c来生成一个文件名为tags的信息tags文件;
3. 然后vim main.c 后,输入:ta main就可以直接跳转到mian定义处,
4. 也可以使用CTRL+]来跳转到函数的定义处,使用它CTRL+T返回到原文件;
5. 还可以使用它:ta *然后按tab来便利需要查询的函数;
Vim命令 |
描述 |
:ts |
显示所有的tag表 |
:tn |
跳转到列表中的下一个tag |
:tp |
跳转到列表中的前一个tag |
:tf |
跳转到列表中的第一个tag |
:tl |
跳转到列表中的最后一个tag |
把vim变为很有魅力的源码浏览器
安装taglish插件,详细信息可以参考安装taglish文章。
例如打开文件vim main.c,然后输入:TlistOpen就可以列出所有的tag信息;
对特定的函数或变量回车,就可以看到更详细的信息;
当然,tag窗口也是一个vim session,我们可以通过跳转到下一个session的方法,回到tag窗口。
Vi移动命令的复习
移动 |
命令 |
往前滚动一整屏 |
^F |
往后滚动一整屏 |
^B |
往前滚动半屏 |
^D |
往后滚动半屏 |
^U |
往前滚动一行 |
^E |
往后滚动一行 |
^Y |
将当前行移到屏幕顶端并滚动屏幕 |
z ENTER |
将当前行移到屏幕中心并滚动屏幕 |
z . |
将当前行移到屏幕底端并滚动屏幕 |
z - |
重画屏幕 |
^L |
移到home位置(屏幕的顶端) |
H |
移到屏幕中间那一行 |
M |
移到屏幕的底端 |
L |
移到下一行的第一个字符 |
ENTER |
移到下一行的第一个字符 |
+ |
移到上一行的第一个字符 |
- |
移到当前行的第一个非空格字符 |
^ |
移到当前行的第n个字符 |
n| |
移到单词的结尾 |
e |
移到单词的结尾,忽略标点符号 |
E |
移到当前句子的开头 |
( |
移到下一个句子的开头 |
) |
移到当前这一段的开头 |
{ |
移到下一段的开头 |
} |
移到当前这一节的开头 |
[[ |
移到下一节的开头 |
]] |
往前搜索模式 |
/pattern |
往后搜索模式 |
?pattern |
往同一个方向重复搜索 |
n |
往相反方向重复搜索 |
N |
往前重复搜索 |
/ |
往后重复搜索 |
? |
搜索当前行中下一个出现x的位置 |
fx |
搜索当前行中上一个出现x的位置 |
Fx |
搜索当前行中下一个出现x的位置的前一个字符 |
tx |
搜索当前行中上一个出现x的位置的后一个字符 |
Tx |
重复上一个搜索命令,方向相同 |
; |
重复上一个搜索命令,方向相反 |
, |
转至第n行 |
nG |
转至文件结尾 |
G |
回到上一个记号或上下文 |
`` |
回到包含上一个记号的行的开头处 |
‘’ |
显示当前的行号,不是移动命令 |
^G |
玩转VIM编辑器-导航移动相关推荐
- 玩转VIM编辑器-vim附加特性
玩转VIM编辑器-vim附加特性 重复一个操作N次 对于我们前面介绍的一些操作,我们可以单纯地加上一个数字,来重复操作N次,比如j表示下移一行,那么10j就是下移10行. 还有一些重复执行的命令: 重 ...
- 玩转VIM编辑器-强力搜索
玩转VIM编辑器-强力搜索 搜索导航 导航键 描述 / 向前搜索,前向 ? 向后搜索,反向 n 跳转到下一个搜索词所在位置 N 跳转到前一个搜索词所在位置 //或?? 重复前面的搜索或反向搜索 跳转到 ...
- 玩转VIM编辑器-自动补全
玩转VIM编辑器-自动补全 自动补全需要前面有定义或者有词典导入. 自动单词补全 键 描述 CTRL-X CTRL-N 单词自动补全-下一个 -需要下一个的时候,直接CTRL-N即可. CTRL-X ...
- 安装完python需要再安装编辑器-Python Vim编辑器安装后的的设置
玩蛇网推荐图文教程:python 列表 新手在安装好VIM编辑器之后,我们还要继续的做一些设置才能更好的使用VIM编辑器,开始Python编程之旅. 1.安装pydiction pydiction可以 ...
- vim无法保存退出_180万程序员不知如何退出Vim编辑器...
想要第一时间获取最新干货? 置顶 资料在线 回复[打卡],获取2019年打卡新玩回复[试讲],获取2019年试讲干货 来源公众号:小象 如若侵权请联系删除 很久以前,江湖中流传着一个神秘的问题:如何退 ...
- vim 编辑器命令整理
文章目录 一.基本使用流程 二.普通命令模式 (一)切换到插入模式(编辑/写入/输入) (二)切换到可视模式(选择文本模式) (三)切换至底行命令模式 (四)替换/修改 1. 切换到替换模式 2. 替 ...
- linux中vim编辑器_为什么Vim爱好者喜欢Herbstluftwm Linux窗口管理器
linux中vim编辑器 每个人都喜欢Vim(除了Dvorak和Emacs用户). Vim非常流行,以至于整个Web浏览器都致力于通过Vim键盘绑定,流行的Zsh终端仿真器中的Vim模式甚至文本编辑器 ...
- vim编辑器的快捷键使用
VIM编辑器的快捷键 (一)在命令模式下 对光标进行移动: 前后移动: h 同一行中向前移动一个单位; l 向后 上下行移动: k 向上一行移动; j 向下移动 h;l ...
- 玩转vim之vim插件Ctags
2012-11-09玩转vim之vim插件Ctags Ctags插件 插件介绍 Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来 快速查找定位源代码中的符号 ...
最新文章
- php 递归函数自调用函数,PHP闭包实现函数的自调用实现递归
- Asp.NET中如何一次性下载多个文件
- WordPress简约博客主题模板Chen主题V1.2
- 吊打6599元的三星?买手机莫慌 三款国产新手机将发
- JDBC连接错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。。。
- mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
- 油猴GM_download使用及下载扩展名flac,油猴脚本修改下载扩展名
- Maven dependency plugin使用
- 拼多多笔试_探险家冒险和大数问题
- Python计算离散序列的自相关函数
- 不知道PDF转Word用什么软件?试试这3款实用软件
- C语言实现通讯录管理系统(动态内存分配版)
- 每周推荐短视频:道哥表达了对自动驾驶技术的感恩之情
- 高校毕业生登记表计算机水平,高校毕业生登记表
- HTTP 有哪些方法?
- 历史名人鲁迅介绍HTML个人网页作业作品下载 历史人物介绍网页设计制作 大学生英雄人物网站作业模板 dreamweaver简单个人网页制作
- 如何利用软文让你的产品广告上百度首页
- windows计划任务 0xff_利用定时任务和VBS设置windows自动语音定时提醒
- 获得用户输入的一个整数N,计算并输出N的32次方
- SRM 676 div1 hard
热门文章
- 盛会落幕,精彩延续 | 云扩科技入选《2022中国AI商业落地市场研究报告》
- RuntimeError: CUDA error: an illegal memory access was encountered的解决方法
- 面向体验,助推超视频时代新增长
- 等价关系运算c语言大作业,离散数学C语言上机题.doc
- 如何给图片更改格式?jpg转webp怎么操作
- 速卖通商标授权怎么弄?速卖通官方授权模板书分享
- 三星2016换电池教程
- 自己动手实现文件文件夹树列表选择框(xingyun86源码)
- 获取android 默认的机器人图标,APP桌面只显示默认机器人图标的几个解决方法
- MySQL数据库多表查询,子查询