学习vi和vim编辑(4):高速移动定位
平时。第一步是编辑文本需要做将光标移动到需要编辑。因此,根据需要,将光标移动到目标数字键来编辑文本的速度在一定程度上。
一篇文章。主要介绍怎样高速移动光标。
依据屏幕来移动:
在一个有几千行文本的文件里,假设依照行来移动的话。可能效率很低。此时能够依照屏幕来移动。
能够把文件看成一个具有文字的长长的卷轴,而屏幕是一个窗体,通常显示当中的24行文字(我的是显示26行)。
^F:往前(往文本结尾方向)滚动一整屏;
^B:往后(往文本开头方向)滚动一整屏;
^D:往前滚动半屏;
^U:往后滚动半屏;
^E:往前滚动一行;
^Y:往后滚动一行;
当中^F代表crtl键+f键。假设想往前或往下滚动屏幕,但又想让光标维持在原来的文本行。能够使用z命令:
z+enter:将光标移动到屏幕顶端并滚动屏幕。
z.:将光标移动到屏幕中心并滚动屏幕;
z-:将光标移动到屏幕底端并滚动屏幕。
举个样例:当前光标在屏幕最底层的一行,如今想让光标仍然在该行,但让该行移动到屏幕顶端。就能够直接输入z。接着输入enter键。例如以下图所看到的:
光标处于屏幕最后一行:
输入z enter 键之后。光标所在行移动到屏幕第一行:
所以你会发现反复同样的z命令并没有意义,由于第一次运行之后已经达到目的了,再运行同样的命令没有效果。z命令能够接受数值參数,比如z+enter是将当前行移动到屏幕顶端,可是200z+enter就是将文件的第两百行移动到屏幕顶端。
当某些消息出如今屏幕上而影响工作时。能够通过滚动屏幕来消除这些消息,也能够直接输入crtl+L键来重画但不滚动屏幕。如图所看到的:
输入ctrl+L键之后,就能够重画屏幕,提示消息消失:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnVjaGVuY29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
假设须要在保持当前屏幕视图的情况下。能够通过下面命令在屏幕范围内移动:
H:移动到屏幕顶端的行;
M:移动到屏幕中央的行;
L:移动到屏幕底端的行。
nH:移动到屏幕顶端往下第n行;
nL:移动到屏幕底端往上第n行。
其效果例如以下图所看到的,起初光标在当前屏幕视图的第一行:
输入M键之后,光标移动到当前屏幕的中间行,并且屏幕视图没有变化:
依据行移动:
之前已经讲过了" j "和" k "这两个以行为单位进行移动的命令。这里补充几个命令:
enter:移动到下一行第一个字符。
+:移动到下一行的第一个字符。
-:移动到上一行的第一个字符。
以上三个命令在移动到目的行后,光标会置于该行的第一个非空字符。在当前行中移动。能够使用例如以下命令:
^:移到当前行的第一个非空格处;
n|:移动到当前行的第n列;
依据文本块来移动:
vi编辑器中能够以文本块(单词,句子,段落或小节)为单位进行移动。之前已经讲过了依照单词来移动(w,W。b,B),接下来再介绍几个依据文本块来移动光标的命令:
e:移动到单词的结尾;
E:移动到单词的结尾。算上标点符号;
(:移动到当前句子的开头。
):移动到下一个句子的开头。
{:移动到当前段落的开头;
}:移动到下一段落的结尾。
[[:移动到当前这一节的开头;
]]:移动到下一节的开头。
vi会寻找" ?
. ! "等标点符号作为句子的结束。当这些标点符号后面有至少两个空格或作为一行的最后一个非空格字符时。vi将其作为句子的结束。可是我实际操作的时候发现,事实上仅仅要这些标点符号后面跟上一个空格,vi就会将其作为句子的结束。不知道是不是书上又讲错了。还是哪里能够配置?临时先记下这个问题吧。
段落的定义是指下一个空白行前的文本,或者是出如今段落宏之前的文本。而小节的定义则是下一个节宏之前的文本。能够通过:set命令自己定义这些被当成段或节分隔符的宏。
依据搜索模式的结果来移动文本:
在大文件里移动时,最高速的方法之中的一个就是依据搜索模式的结果来进行移动。搜索命令是特殊字符" / ",格式为/patten。模式能够是完整的单词,或者一连串字符串,假设在搜索模式中增加了空格,这个空格也会被成单词的一部分。当然还能够使用更强大的模式匹配语法。
vi会从光标当前位置開始搜索,而且会依照须要自己主动绕回文件开头或文件底部进行搜索。假设搜索到了。光标会定位在该搜索模式第一次出现的地方。否则在屏幕底端显示对应的信息。
/patten:从光标位置開始处往前搜索。
?
patten:从光标位置開始处往回搜索;
上一次的搜索模式会留在你的编辑回话中。因此能够反复搜索。而不须要又一次输入原来的搜索模式:
n: 往同一个方向上反复搜索;
N: 往相反方向上反复搜索;
/enter:往前反复搜索;
?enter:往后反复搜索;
由于反复搜索时,默认是会自己主动绕回文件头或文件尾的,因此能够通过设置vi编辑器的wrapscan选项来控制搜索是否要绕回,当输入了指令:set nowrapscan 时,就能够取消搜索时绕过文件头或文件尾。
这时当我们往前搜索失败时,就会显演示样例如以下信息:
而假设往回搜索失败时,也会显演示样例如以下图所看到的的对应信息:
搜索命令能够与改动文本命令相结合一起使用。也就是说对于(command)(TextObject)的使用形式,搜索命令能够出如今TextObject中,而command代表的是文本改动命令,如c。d等。比如 d?file就是删除光标所在位置到往回搜索第一次出现file的全部字符。
能够用例如以下命令在当前行中搜索:
fx:搜索(同一时候将光标移动到)本行下一个出现x的地方,x代表不论什么字符;
Fx:搜索(同一时候将光标移动到)本行前一个出现x的地方;
tx:搜索(同一时候将光标移动到)本行下一个出现x的地方的前一个字符;
Tx:搜索(同一时候将光标移动到)本行前一个出现x的地方的后一个字符。
。:反复上一个搜索,方向同样。
,:反复上一个搜索,方向相反;
这些命令加上数值參数,代表搜索x字符第n次出现的地方。
这些命令在删除或拖曳时非常实用,当须要改动的文本块有多个标点符号而难以统计单词数,此时用字符搜索结合文本改动命令可能非常方便。
依据行号来移动:
行号对程序猿很实用,由于编译报错时通常都会告诉我们是哪行报错,假设可以直接移动到源文件里的那行,就行很便捷。通过:set nu选项来显示文件的行号。
CTRL+G命令会在屏幕底端显示对应的信息,包含当前的行号,文件的总行数。当前位置占全文的百分比。例如以下图所看到的:
G命令:数值參数加上G命令代表直接移动到对应的指定行。
假设没有指定行号,则G命令直接移动到文件尾部。
输入两个反引號( `` )能够回到原来的位置(上一次使用G命令的位置)。假设你在这中间做了编辑操作,两个反引號将光标移回到上次编辑的位置。假设使用了搜索命令,``能够将光标移回到上一次搜索时的位置。 ''和``作用类似。仅仅只是它将光标移回到上次位置所在行的开头而不是确实的位置。
按照行号来移动光标是在一个大文件里高速移动的方法。
本章vi编辑器命令总结:
^F,^B,^D。^U,^E,^Y,z+enter,z.,z-,^L。H,M,L,enter。+,-,^,n|,e。E,(,)。{。},[[。]]。/pattern,?
pattern,n,N。/,?,fx,Fx。tx,Tx,;, , ,G,``。'',^G。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
学习vi和vim编辑(4):高速移动定位的更多相关文章
- 学习vi和vim编辑(3):一个简单的文本编辑器(2)
然后文章,继续评论vi编辑简单的文本编辑命令. 本文主要是删除的文字.复制,运动命令. 删除文本: 正如上一篇文章中讲过的,对于删除命令("d")也具有"(command ...
- 学习vi和vim编辑器(1):vi文本编辑器
UNIX系统中有非常多编辑器.能够分为两种类型:行编辑器和全屏编辑器.行编辑器每次仅仅能在屏幕中显示文件的一行,如ed和ex编辑器.全屏编辑器能够在屏幕上显示文件的一部分. vi(读为vee-eye) ...
- 学习vi和vim编辑器(5):越过基础的藩篱
本章将对之前学习的编辑命令如" c "." d "." y "等命令进行总结,并学习一些新的知识:其它进入vi的方法,利用缓冲区来存储拖曳或 ...
- linux中vi和vim编辑工具
linux中知名的还有emacs,功能比vim还要强大 vim 如果文件存在vim是打开这个文件,若果不存在,则先新建再打开 命令模式:任何模式都可以通过Esc回到命令模式,命令模式可以通过命令进行选 ...
- Linux 多个vi、vim进程编辑同一文件时的临时文件问题
多个vi.vim进程编辑同一文件时的临时文件问题 by:授客 QQ:1033553122 使用vi.vim编辑文件,实际是先copy一份临时文件并映射到内存里进行编辑,所以你编辑的是临时文件,不是 ...
- linux下vi或vim操作Found a swap file by the name的原因及解决方法
在linux下用vi或vim打开Test.java文件时 [root@localhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION Found a s ...
- Linux学习笔记之VI(VIM)编辑器
百度关于vi的资料 http://baike.baidu.com/view/908054.htm 关于vi 和vim的介绍可以在上面的网址看到. 1 进入和退出vi 进入:在终端命令行输入 vi ...
- linux学习(二)-----Linux 的目录结构、远程登录、vi和vim
linux目录结构 基本介绍 linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此 目录下再创建其他的目录. 目录结构具体介绍 Linux 目录总结 1.lin ...
- linux vi/vim编辑文件显示行号
方法一(最尴尬的方法): 1.显示当前行行号,在VI的命令模式下输入 :nu 2.显示所有行号,在VI的命令模式下输入 :set nu #这是:set number 的简写 方法二(最好的方法): 使 ...
随机推荐
- swift开发网络篇 - 网络基础
GET & POST GET GET的语义是获取指定URL的资源 将数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用"?"连接 ...
- 使用maven进行测试设置断点调试的方法
在Maven中配置测试插件surefire来进行单元测试,默认情况下,surefire会执行文件名以Test开头或结尾的测试用例,或者是以TestCase结尾的测试用例. ...
- vue-cli 3.x 移除console总结
网上找了很多vue-cli 3.x的配置,很多已经不适用了,把采坑的经历记录下来,供参考. 一.使用 uglifyjs-webpack-plugin 插件 配置如下: // vue.config.js ...
- WIN32得到HWND
HWND hwndFound //= FindWindow(_T("RC352_Win32"),NULL); = GetConsoleWindow();
- PatentTips - Multi-host SATA Controller
BACKGROUND The present subject matter relates, in general, to a computing system having multi-host p ...
- Android开发之SpannableString具体解释
在实际的应用开发过程中常常会遇到.在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等. 普通情况下,TextView中的文本都是一个样式.对于类似的情况.能够 ...
- ios开发瀑布流框架的封装
一:瀑布流框架封装的实现思路:此瀑布流框架的封装仿照tableView的底层实现,1:每个cell的frame的设置都是找出每列的最大y值,比较每列的最大y值,将下一个cell放在最大y值最小的那一列 ...
- 【物理/数学】概念的理解 —— pivot、position
0. 基本释义 pivot: n. 枢轴:中心点:旋转运动 vt. 以-为中心旋转:把-置于枢轴上 vi. 在枢轴上转动:随-转移 adj. 枢轴的:关键的 position: n. 位置,方位:职位 ...
- [tmux] Copy and paste text from a tmux session
One non-obvious, but extremely useful, feature in tmux is copy-pasting text between panes. This also ...
- Java 之 assert (断言)
我们知道C/C++语言中有断言的功能(assert).在Java SE 1.4版本以后也增加了断言的特性. 断言是为了方便调试程序,并不是发布程序的组成部分.理解这一点是很关键的. 默认情况下,JVM ...