学习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 的简写 方法二(最好的方法): 使 ...
随机推荐
- WIN32得到HWND
HWND hwndFound //= FindWindow(_T("RC352_Win32"),NULL); = GetConsoleWindow();
- Android Studio SVN使用和VisualSVN-Server配置(图解)
转载请标明出处: http://blog.csdn.net/zq2114522/article/details/51078544: 本文出自:[梁大盛的博客] Android Studio SVN使用 ...
- #308 (div.2) B. Vanya and Books
1.题目描写叙述:点击打开链接 2.解题思路:本题要求统计数位的个数,简单的试验一下发现有例如以下规律:一个n位数的个数有9*(10^n)个.因此全部n位数的数位是n*9*(10^n)个.因此能够利用 ...
- new File(String Path)加载资源问题
2017-12-17 15:07:38 [原创-wx] 一.我们在用IO流加载资源的时候,创建文件资源 1 File file = New File("String Path" ...
- 【codeforces 757A】Gotta Catch Em' All!
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- SpringSecurity3.2.5自己定义角色及权限的教程
近期阴差阳错的搞上了SpringSecurity3.由于是自己做的小系统.中间遇到了非常多坑,基本每一个坑都踩过了,网上也查了不少资料,发现有不少错误的.更是让我绕了一圈又一圈,如今把一些主要的东西总 ...
- 算法 Tricks(四)—— 获取一个数二进制形式第一个不为 0 的位置
int n = ...; int flag = 1; while ((flag & n) == 0) flag <<= 1; // & 运算时,其实判断的是二者的二进制形式 ...
- 我为什么要写FansUnion个人官网-BriefCMS-电子商务malling等系统
不少朋友一直关注我最近几个月,已经做的和正在做的项目,比如个人官网.BriefCMS.电子上午malling等系统. 但是呢,部分朋友比较好奇,为啥要去写.他们比较疑惑的是,市面上已经有很多类似的系统 ...
- Winfrom 屏蔽Alt+F4
/// <summary> /// 屏蔽Alt+F4 /// </summary> /// <param name="m">要处理的 Windo ...
- Linux之定时任务Crond介绍
Linux之定时任务 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便 ...