Vim进阶技巧(二)——更快地移动及跳转

动作命令是Vim中进行文档导航的核心,它们不仅可以移动光标,还能与操作符结合使用,选择文本区域进行编辑。熟练掌握这些跳转指令和方式,将会使你的开发效率成倍增长,而不是傻傻只会用jk和w进行跳转,从移动中节省大量时间。

1.让手指保持在本位行上

  • Vim针对盲打进行了优化,推荐使用h、j、k、l键代替光标键,以保持手指在本位行上。

初学者可以通过设置.vimrc文件

" Try to prevent bad habits like using the arrow keys for movement. This is
" not the only possible bad habit. For example, holding down the h/j/k/l keys
" for movement, rather than using more efficient movement commands, is also a
" bad habit. The former is enforceable through a .vimrc, while we don't know
" how to prevent the latter.
​
" Do this in normal mode...
nnoremap <Left>  :echoe "Use h"<CR>
nnoremap <Right> :echoe "Use l"<CR>
nnoremap <Up>    :echoe "Use k"<CR>
nnoremap <Down>  :echoe "Use j"<CR>
​
" ...and in insert mode
inoremap <Left>  <ESC>:echoe "Use h"<CR>
inoremap <Right> <ESC>:echoe "Use l"<CR>
inoremap <Up>    <ESC>:echoe "Use k"<CR>
inoremap <Down>  <ESC>:echoe "Use j"<CR>

将以上片段写入linux的~/.vimrc或者windows系统下的C:\Users\<username>\.vimrc,便可以实现屏蔽键盘传统利用上下左右键进行光标移动的习惯。从而训练自己尽快适应vim的移动方式

2.区分实际行与屏幕行

  • Vim区分实际行和屏幕行,其中j、k移动实际行,gj、gk移动屏幕行。

例如有一段特别长的代码,如果使用j则会直接跳到实际对应的下一行。

此时我们想要修改行中内容便极其不方便,但是使用gj便可以按照分行进行跳转

这里使用gj便会跳到第二行开头的“数”部分,而不是下一实际行

  • 动作命令如0、^、$、g$等用于移动到行首、第一个非空白字符、行尾和屏幕行的对应位置。

3.基于单词移动

  • Vim提供基于单词的动作命令,如w、b、e、ge,用于快速移动光标。w和b命令移动到单词的开头,e和ge移动到单词或字串的结尾。

4.对字符进行查找

  • f{char}命令在当前行内查找字符并移动光标,;命令重复上次的查找,,命令反向查找。

在此行中输入fo会跳转至don,输入;会跳转至to,再输入,又会跳转到don

  • F{char}、t{char}、T{char}命令用于在当前行内反向查找或查找至字符前或后。

5.通过查找进行移动

  • 查找命令/<content>可以跨行查找文本,n和N命令用于在查找结果间跳转。

6.遍历跳转列表

  • Vim记录每次跳转的位置,<C-o>和<C-i>命令可以在跳转位置间后退和前进。

  • 单独使用",也可以实现跳转回上一次跳转的位置(常用于gg到文件首添加头文件后,用"返回原来编辑位置)

7.遍历改变列表

  • Vim记录每次文档修改的位置,g;和g,命令可以在修改位置间后退和前进。(注意此处位置单独记忆,也就是说如果修改A,再修改B。那么第一次g;会回到B,之后移动而不修改,再使用g;会回到A而非B)

8.用全局位置标记在文件间快速跳转(重要)

  • 在 Vim 中,全局位置标记是一种非常有用的功能,它允许你在不同的文件之间快速跳转。这种标记实际上是书签的一种形式,你可以在某个文件的特定位置设置一个标记,然后随时跳转回这个位置。这对于需要在多个文件之间频繁切换的编辑任务来说尤其有用。

    8.1 如何设置全局位置标记

    要设置一个全局位置标记,你可以使用 m 命令后跟你想要用来表示该标记的字母。如果你使用的是小写字母,那么这个标记将只在当前的缓冲区(文件)内有效。如果你使用的是大写字母,那么这个标记将是一个全局标记,这意味着你可以在任何其他文件中跳转回这个位置。

    例如,如果你想在当前文件的当前位置设置一个全局标记,你可以按以下步骤操作:

    mM

    这将在当前位置设置一个名为 M 的全局标记。

    8.2 如何跳转到全局位置标记

    一旦设置了全局位置标记,你可以使用 '(单引号)后跟你设置的标记字母快速跳转回该位置。例如,如果你之前设置了名为 M 的标记,你可以使用以下命令跳转回那个位置:

    'M

    这将把你的光标移动到之前设置全局标记 M 的位置。

    8.3 全局位置标记的自动保存

    全局位置标记在 Vim 会话之间是持久的,这意味着即使你关闭 Vim 并重新打开,这些标记仍然存在。这得益于 Vim 的 viminfo 功能,它允许你在 Vim 会话之间保存一些信息,包括全局位置标记。你可以通过设置 viminfo 选项来控制哪些信息被保存,例如:

    :set viminfo='100,<50,s10,h

    这个设置意味着 Vim 将保存最多100个文件的标记,最后访问的50个文件,以及在插入模式下输入的最多10行文本。

        8.4 使用全局位置标记的好处

        在多个文件中工作时设置标记:当你在处理多个文件时,可以在每个文件的关键位置设置全局标记,这样你可以快速在这些文件间切换。在复杂的项目中导航:在大型项目中,你可以在不同文件的重要函数或代码段设置标记,以便于快速导航。


最后

Tips:

新手一枚,如果觉得有疑问可以私信询问!

如果上述文章内容有讲得不正确或者不清楚的地方,欢迎留言评论区或者私信!

最后,能给我一个小小的赞或者关注吗😘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值