Python_vim_5. 移动命令

7 篇文章 0 订阅

 1. 方向和行内移动

学习一下移动光标的命令,首先认识一下怎么样在vi中能够实现上下左右的挪动,vi的设计者认为手指从键盘区域到方向区域来回切换,非常的影响效率.

那在vi中是怎么样实现上下左右的挪动呢?字母j 上有个小小的突起, 就用右手的食指放在字母j 上,然后再把右手的中指放在字母k上,紧接着再把无名指放在字母l上.

三个手指准备到位之后,如果在使用vi编辑文件的时候,如果希望向下,就用食指按下字母j 就可以,如果希望向上,就用中指按下字母k就可以,如果希望向右移动, 就用无名指按一下字母l就可以.

那向左挪动呢,只需要把右手的食指从字母j 上抬起来放到字母h上,h就可以实现向左挪动了.

在vi中,上下左右这4个命令是不需要记忆的,只需要把每个手指摆在正确的位置,就可以轻松的实现上下左右的挪动了.

做下演练,光标在文件的第1行第1列,

现在按下字母j , 光标向下挪动了,按一下字母k,又向上挪动了,如果按下字母l  向右移动,按下字母h呢, 光标又可以向左挪动.

再来看一下行内移动的命令,现在已经知道上下左右的移动,但是上下左右移动每次只能移动一个字符, 移动的跨度还不够,如果在编辑某一行的时候,希望在行内快速的移动光标, 可以记住两个单词,第一个单词是word,也就是单词的意思,第二个单词是back,也就是向回的意思,如果想要向前挪动一个单词,就可以嗯一下word的首字母w,如果想要向后挪动一个单词,就可以摁下back的首字母b.

那在开发中,想要立刻回到行首,就摁一下数字0, 想要立刻来到行尾, 就可以按下$ .

同时呢,如果要来到一行的第1个字符,这个字符啊不是空格这种空白字符,就可以按一下向上的尖尖^.

做个演练,现在光标是在第1行第1列,可以用l 向右移动,那如果想要加快移动速度呢,就可以摁下w,  word, 跳转一个单词,现在光标呢来到了print的末尾.

再按一个w来到了hello的开始位置,

再按一下w, 来到了第2个hello 的位置, 也就是每按一个w就向后挪动一个单词.

那如果按字母b呢,向前挪动了一个单词.

那想要一下子来到这一行的行首,按下数字0, 就来到了行首,

如果想来到行尾呢,按$ 符号, 光标来到了行尾.

那同时在开发中,还经常有一种情况, 就是代码并不是顶格的,而是有一些缩进.

现在先按一个数字0来到行首,然后摁一下字母i进入编辑模式,现在加4个空格,

按下esc键,回到命令模式.

现在如果按左右移动可以在这一行移动, 那如果输入数字0, 光标一下子来到这一行的行首,

但是在编写代码的时候,如果要编辑, 通常是希望从print 这个p开始,那因此如果想要快速的跳到print 这个p的位置,那么就可以使用^ 符号.

光标直接来到了print 的p的位置,

2. 行数跳转和上下翻页

 

介绍一下通过代码行数, 快速的定位光标, 要学会这个命令, 先记住一个英文单词, 就是去 的意思.

如果想让光标直接来到文件的顶部, 就可以连续接下来敲两个小写的gg, 就可以迅速的定位到文件的顶部.

如果要到文件的末尾, 敲一个大写的G, 就可以直接跳转到文件的末尾.

当然在开发中,更多的时候是跳转到某一行代码,在vi中提供有三种方式供选择.

看第1种方式, 先输入要编辑的代码行数, 然后跟上两个小写的gg就可以了,

也可以先写一个代码行数, 再来一个大写的G, 同样也可以.

同时在vi中还支持末行模式, 就是先敲一个冒号, 再写上要跳转到的代码行, 按下回车, 同样也可以.

但是绝大多数的程序员, 在跳转代码行的时候, 更喜欢用go这个命令,因为只要是跳转都记住一个go,就可以轻松搞定了.

做个演练,现在光标所在位置是文件的第1行,

如果想要跳到文件的末尾,就可以输入一个大写的G, 一下子来到28行, 到了文件末尾,

那如果想要回到文件的开始位置呢,就来两个小写的gg,又回到第1行,

那如果想跳到第15行呢,就可以先敲一个15,在敲15的时候, vi中是没有任何反应的,现在输两个小写的gg, 光标来到了第15行的位置.

如果想跳转的第八行, 输一个数字8, 同样没有任何的反应, 现在再出一个大写的G, 又来到了第8行.

同时还可以通过末行方式跳转代码,譬如希望跳转到第20行,要进入末行模式应该先输一个冒号,再输入一个20, 回车,回车之后光标直接来到了20行,

跳转具体代码行数, 有三种方式,可以根据自己的喜好记住对应的命令就可以, 不用三个都记.

但是在实际开发中, 更多的人会习惯向上翻页或者向下翻页,因为不愿意去记住准确的代码行数.

那在vi中怎么样实现向上翻页和向下翻页呢?同样需要记忆两个单词,第1个单back, 是有向后的意思, CTRL加b, 就可以向上翻页.

第2个单词呢是forward,forward有向前的意思, 只需要按住CTRL这个功能键,再按一下forward的第1个字母, CTRL加f, 就可以向下翻页了.

做个演练,现在代码行数是在第15行,

如果想向上翻页,就按一下CTRL键再按下字母b, 向上翻了一页.

如果向下翻页呢,就按一下CTRL键,再摁下forward这个单词, CTRL+ f, 向下翻了一页.

有的时候在开发时可能会遇到希望屏幕保持不动,但是希望光标在屏幕的顶部中间或者底部上下的切换,那如果有这种需求可以怎么做呢?

如果希望光标跳到屏幕的顶部,就可以输入一个大写的H,对应的英文单词呢是Head, 也就是脑袋.

那如果想跳到屏幕中间呢,就可以输入一个大写的M, 对应的英文单词是middle, 也就是中间的意思.

如果我想要跳到屏幕的底部,就可以输入一个大写的L, 对应的英文单词Low,就是底部的意思.

做个演练,现在光标是在第23行, 也就是屏幕的底部,

如果想让光标直接来到屏幕的顶部,就可以输入一个大写的H,这样呢就跳到屏幕顶部了.

如果想要跳到屏幕的中间呢,就可以输入一个大写的M,  middle, 就可以跳到中间了.

如果想要跳到底部呢,就可以来个大写的L, 就来到屏幕的底部,

这样就可以在屏幕保持不动的情况下, 上中下的快速切换光标.

3. 段落切换和括号切换

两组程序员比较常用的移动光标命令,第1组是段落移动,第2组是括号切换.

段落移动在vi中,是以空行来区分段落的,而在编写程序的时候,通常一段功能相关的代码,会紧紧的吸在一起,彼此之间没有任何的空行,这个就叫做段落.

现在在示例文件中,第1行到11行之间没有任何的空行,如果编写代码的时候,这段代码是实现某一个功能,就可以把这些代码紧紧的挨在一起.当这个功能实现完成之后,就增加一个空行,在空行下方在编写新的代码.

如果只是一句话就完成了一个功能,就再增加一个空行, 再来编写一个代码,

第1行到第11行是一个段落, 第13行是一个独立的段落, 第15行是一个独立的段落, 17行到21行又是一个完整的段落.

如果在使用vi 时, 希望以段落为单位, 来切换光标, 就可以使用左右花括号进行切换,

左花括号是向上寻找段落, 右括号是向下寻找段落.

演练一下, 现在光标是在23行,

现在按一下左括号,到了22行,

再按一下, 直接跳到了16行,

 左花括号是向上寻找段落, 右花括号是向上寻找段落, 同理.

左右花括号就可以以段落, 也就是代码的局部功能为单位, 进行快速的切换,这个是程序员比较常用的一种切换方式.

括号切换,在开发程序的时候,经常会使用一对小括号或者一对中括号或者一对花括号,在编写程序时,这些括号的使用频率很高,而且呢,每一组括号都是成对出现的.

那在vi中,为了方便切换括号,提供了一个特殊的命令叫做百分号%,按一下百分号% 就可以在括号间快速的切换了.

演练一下, 现在光标在第一行第一列,

如果现在摁一个%, 光标直接来到了这一行的末尾, 也就是括号的末尾,

如果再按一下呢, 光标就直接来到了左边的小括号,

现在把光标放在第9行,

再来演练一下%,现在因为光标是在括号内部,所以第1次按下呢,会来到括号的开始位置,

再摁一下, 又来到括号结束位置.

一句话讲, 用百分号%就可以在成对的括号之间快速的切换.

4. 利用标记返回之前需要编辑的代码位置

一个程序开发比较实用的命令, 叫做标记.

假设在编写代码的时候, 写到第十五行这里,写到这一行代码的时候产生疑虑了,这个地方需要看一下别的代码, 才能决定这行代码怎么编写,

要看其他的代码,就要把光标移走, 移走之后怎么样能够迅速回来呢?这个时候就可以使用到标记这个命令了.

在开发的时候, 如果某一块代码需要稍后处理, 这个时候就可以使用m这个命令,m对应的英文单词叫做mark,然后在m命令后面跟上一个字母,只能跟上一个字母,这个字母可以是小写的a到z,也可以是大写的a到z,

可以使用任意一个字母作为标记的名称, 当添加完成标记之后,对其他的代码浏览完成,想要回到添加标记的代码,就先输入一个单引号', 在单引号'  后面跟上标记的名称就可以.

做一下演练,如果正在编写15行代码,这个时候需要浏览其他位置的代码,那么敲完ma 之后, 仍然没有任何的效果.

那现在就把光标移开, 假设移动的27行,

看了一下这行代码之后, 现在已经知道第15行怎么写了, 那就可以先敲一个单引号', 再敲一个a,敲了a之后,这个光标直接就回到了15行.

在使用vi的时候,只需要增加标记就可以, 而不用去关心标记什么时候被删除, 因为标记的作用就是为了保证临时跳转回来.

而vi 中如果 把添加了标记的行给删掉, 标记也会同时删掉.

另外呢如果在其他的行使用相同的字母添加了相同的标记, 那之前添加的标记也会被同样替换掉.

一句话讲, 在开发的时候只需要快乐的使用标记就可以,至于标记的管理,vi可以帮我们全部搞定.
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值