VIM 移动

来源

http://www.cnblogs.com/nerxious/archive/2012/12/21/2827303.html


断断续续的使用VIM也一年了,会的始终都是那么几个命令,效率极低

前几个星期把Windows换成了Linux Mint,基本上也稳定了下来

就今晚,我已经下定决心开始新的VIM之旅,顺便写一系列的笔记和总结

还是那句话,我只是个新人,代码也没写过多少行,但我一直在默默努力自学着

所以,还请老鸟们看看笑笑就行了,不要鄙视我,我很脆弱……

这是俺写的《轻快的VIM系列》第一节,每一节都会不断更新,加入更多技巧在里面

VIM新手们加油,咱一起总结,一起努力练习……

基础

字符移动

k            上移                k
h            左移            h        l
l            右移                j
j            下移

你也可以使用键盘上的方向键来移动,但这么做h j k l的存在就失去了意义

之所以使用h j k l来控制方向,其主要目的是让你的手不离开键盘中心,从而提高效率

tips:在命令前加上数字代表命令执行次数,如:5k,表示上移5行

 

单词移动

W w            移动到下一个单词开头
E e            移动到下一个单词结尾
B b            倒退到上一个单词开头

需要注意的是,E会忽略标点符号,如:I‘m,e会当成两个单词,E则不会

同样,在命令前加上数字代表执行次数,如:2w,表示往下移动2个单词

开头我也许会多说几遍,因为这个技巧很重要

 

整行移动

0            移动到行首
$            移动到行末
+            移动到下一行开头
-            移动到上一行开头

这里需要注意的是+ -和上面的j k有什么不同之处

j k也是移动到上一行和下一行,但它们移动的是光标所在的位置

+ -不管你的光标在何处,总是移动到下一行或上一行的行首

 

进阶

滚屏

复制代码
Ctrl+f            往前滚动一整屏
Ctrl+b            往后滚动一整屏
Ctrl+d            往前滚动半屏
Ctrl+u            往后滚动半屏

Ctrl+e            往后滚动一行        
Ctrl+y            往前滚动一行
复制代码

看似比较多,但是可以根据键盘的位置来进行记忆,并且下面两个也不常用

上面的滚屏都有一个共同点,就是会改变光标的位置,且屏幕也在改变

如果想让光标维持在原来的位置实现滚屏请看下面

 

用z调整光标

z<Enter>        将光标所在行移动到屏幕顶端
z.              将光标所在行移动到屏幕中间
z-              将光标所在行移动到屏幕低端

tips:980z<Enter>可以将第980行移动到屏幕顶端

好吧,有时候你其实不想滚屏,你只想在当前屏幕中移动

请往下看

 

在屏幕中移动

H            移动到屏幕顶端的行
M            移动到屏幕中央的行
L            移动到屏幕底端的行

nH           移动到屏幕顶端往下的第n行
nL           移动到屏幕顶端往上的第n行

据我猜测这三个字母应该是HIgh、Middle和Low的缩写,其实挺好记的

多练习几遍就行了,需要注意的是:这里只是光标的位置变化,和上面两种不同

tips:你可以用+ -和j k实现同样的位置变化,只不过要操作多次而已

+ -和j k的区别忘了吗?往上看看吧

 

在当前行移动

^            移动到当前行的第一个非空格处
n|           移动到当前行的第n列

这里的^与上面的0通常情况下表示的位置是一样的

而n|,个人感觉还没有h l方便,慢慢的数出行数还不如直接按着h l 左右移

 

根据文本块移动

所谓的文本块也就是句子、段落、小节等

(            移动到当前句子开头
)            移动到下一个句子开头
{            移动到当前这一段开头   
}            移动到下一段开头
[[           移动到当前这一节的开头
]]           移动到下一节的开头

其中,VIM以? . !等符号来标记一个句子

空白行来标记一个段落

用节宏来标记一个节(节宏是什么我还没搞清楚)

 

根据行号来移动

Ctrl+g            显示当前行信息
nG                转至第n行
G                 转至文本末尾
gg         移至文本开头

如果你不知道当前是多少行的话就可以用Ctrl+g来查看

如果想转到第800行,可以用800G

其实z命令也可以做到,并且把光标移动到第一行

tips:``反引号可以返回到使用G之前的位置

 

 

 

 


<think>好的,用户问的是如何在Vim移动到最后一个位置。我需要先回忆一下Vim的相关命令,确保自己记得准确。首先,Vim中的“最后位置”可能有不同的含义,比如文件的末尾、行的末尾,或者是上次编辑的位置。用户可能指的是其中一种情况,所以需要分别解释清楚。 首先,用户可能想知道如何移动到文件的最后一行。这时候应该用G命令,也就是大写字母G。在普通模式下按G,光标会跳转到文件末尾。这个我记得没错,但需要确认是否有其他方式,比如使用:$命令,但通常G更常用。 接下来,行的末尾。通常行的末尾是使用$命令,在普通模式下按$,光标会移动到当前行的最后一个字符。不过有时候用户可能想包括行尾的换行符,这时候可能需要用g_,但一般来说$已经足够。需要说明这两种情况吗?可能用户只是想知道基本的$命令。 然后,上次编辑的位置。Vim中有一个功能,可以通过`` ` ``(反引号)或者''(两个单引号)来跳转到上次修改的位置。这个功能对用户来说可能很有用,尤其是在进行多次编辑时快速回到之前的位置。需要解释清楚两者的区别,比如`` ` ``保持列位置,而''可能只回到行首。 另外,还有可能用户指的是最后一次跳转的位置,这时候可以用Ctrl+o和Ctrl+i在跳转历史中前进后退。不过这可能稍微复杂,用户的问题可能更基础,所以可能不需要深入,但可以简单提一下。 需要检查是否有其他可能的“最后位置”情况,比如最后搜索的位置,但用户的问题可能不涉及这个。要确保回答覆盖主要的移动命令,比如文件末尾、行末尾和上次编辑的位置。 在解释每个命令时,要给出具体的按键和示例,比如普通模式下按G,然后举例说明。同时,提醒用户注意大小写,因为Vim是区分大小写的。比如G是大写,而g_是小写组合。 还需要考虑用户可能的错误操作,比如在普通模式下误触其他键,或者没有正确进入普通模式。不过用户的问题主要是如何移动,所以可能不需要涉及错误处理,但可以提到确保在普通模式下操作。 最后,总结一下,分点列出三种常见情况:文件末尾、行末尾、上次编辑的位置,并分别给出命令。这样结构清晰,用户容易理解。同时,可以附上示例,比如按G后显示行号变化,或者按$后光标的位置变化。这样用户能更直观地理解每个命令的作用。 检查是否有遗漏的命令,比如跳到文件开头是gg,但用户问的是最后位置,所以不需要提这个。确保每个命令都正确无误,比如G确实是跳转到最后一行,$是行尾,`` ` ``和''的区别。如果有不确定的地方,可能需要查阅文档确认,但根据已有的知识,这些应该是正确的。 最后,用中文简洁明了地组织回答,分点说明,每个部分用小标题,命令用代码块或引号标出,帮助用户快速找到关键信息。同时,补充一些使用技巧,比如组合其他命令(如dG删除到文件末尾),增加实用性。</think>在 Vim移动到最后位置的操作需要分场景理解,以下是常见用法: --- ### 1. **移动到文件末尾** - **命令**:在普通模式下按 `G`(大写字母) ```vim G ``` - 效果:光标跳转到文件最后一行行首 - 示例:编辑长文件时,按 `G` 可快速定位到结尾 --- ### 2. **移动到当前行末尾** - **命令**:在普通模式下按 `$`(美元符号) ```vim $ ``` - 效果:光标跳转到当前行的最后一个字符位置 - 扩展操作:结合其他命令(如删除到行尾 `d$`) --- ### 3. **跳转回上一次编辑的位置** - **命令**:在普通模式下按 `g;` 或 `gi` ```vim g; " 跳转到最近一次修改的位置 gi " 直接进入插入模式并定位到最后一次编辑的位置 ``` - 适用场景:反复修改代码时快速回溯 --- ### 4. **跳转到最后一次全局位置** - **命令**:在普通模式下按 `''`(两个单引号) ```vim '' ``` - 效果:返回最后一次跳转前的光标位置 - 对比:`Ctrl+o` 可查看跳转历史并回退 --- ### 示例流程 1. 打开文件后,按 `G` 跳转到文件末尾。 2. 修改内容后按 `Esc` 退出插入模式。 3. 按 `''` 返回修改前的位置,或按 `g;` 定位到最近修改点。 --- ### 附:其他相关命令 - **跳转到第 N 行末尾**:`N$`(如 `5$` 跳转到第 5 行末尾) - **删除到文件末尾**:`dG`(从当前位置删除到结尾) 掌握这些操作能显著提升 Vim 编辑效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值