如何在Vim中移动到行尾

如何在Vim中移动到行尾

技术背景

Vim是一款强大的文本编辑器,在命令行环境下广泛使用。在编辑文本时,经常需要快速将光标移动到行尾。了解不同的移动方式,可以提高编辑效率。

实现步骤

移动到行尾

  • 命令模式下
    • 按下<kbd>$</kbd>键,可将光标移动到行尾,且仍处于命令模式。例如在编辑代码时,想快速跳到当前行末尾添加内容,可使用此快捷键。
    • 按下<kbd>A</kbd>键,会移动到行尾并切换到编辑模式(Append)。比如在写代码时,发现行尾少了个分号,按下<kbd>A</kbd>就可以直接在行尾输入。
    • 先按<kbd>g</kbd>再按<kbd>_</kbd>,能将光标移动到行内最后一个非空白字符处。
  • 插入模式下
    • 若想在插入模式下快速到行尾,可以在vimrc文件中添加imap <C-l> <Esc>$a。之后在插入模式按下Ctrl + l,就相当于依次按下<kbd>Esc</kbd>(进入命令模式)、<kbd>$</kbd>(移动到行尾)、<kbd>a</kbd>(进入插入模式)。
    • 按下<kbd>Ctrl</kbd> + <kbd>O</kbd>后再按<kbd>$</kbd>,也能在插入模式下将光标置于行的最后一个字符之后。

移动到行首

  • 命令模式下
    • 按下<kbd>^</kbd>,光标会移动到行内第一个非空白字符处,且保持在命令模式。
    • 按下<kbd>0</kbd>(零),光标会移动到行首(包含空白字符)。
    • 按下<kbd>I</kbd>(大写的i),会移动到行首并切换到插入模式。
  • 区分物理行和屏幕行
    • <kbd>$</kbd><kbd>0</kbd>分别移动到物理行或段落的末尾或开头。
    • <kbd>g</kbd><kbd>$</kbd><kbd>g</kbd><kbd>0</kbd>分别移动到屏幕行或段落的末尾或开头。若希望总是使用屏幕行的移动方式,可以在Vim中执行以下命令进行键映射:
1
2
:noremap 0 g0
:noremap $ g$

其他相关操作

  • 在命令行启动Vim时,可以使用+$参数,例如vi +$ any.txt,会直接将光标定位到文件的最后一行。使用+30则会将光标定位到第30行。

核心代码

映射Ctrl + l到行尾插入模式

1
imap <C-l> <Esc>$a

映射物理行和屏幕行移动键

1
2
:noremap 0 g0
:noremap $ g$

.vimrc中映射Ctrl + ACtrl + D到行首行尾

1
2
:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>

最佳实践

  • 对于经常使用Vim进行编码的用户,建议将常用的光标移动快捷键配置到vimrc文件中,这样可以提高操作效率。
  • 在编辑代码时,根据不同的场景选择合适的移动方式。如只是查看行尾内容,用<kbd>$</kbd>;若要在行尾添加内容,用<kbd>A</kbd>

常见问题

某些快捷键在Mac上无法使用怎么办?

在Mac上的标准终端使用Vim时,可以使用以下快捷键:

  • <kbd>fn</kbd> + <kbd> ← </kbd>:移动到行首。
  • <kbd>fn</kbd> + <kbd> → </kbd>:移动到行尾。
  • <kbd>fn</kbd> + <kbd> ↑ </kbd>:向上翻一页。
  • <kbd>fn</kbd> + <kbd> ↓ </kbd>:向下翻一页。
  • <kbd>fn</kbd> + <kbd> g </kbd>:移动到文档开头。
  • <kbd>fn</kbd> + <kbd> shift </kbd> + <kbd> g </kbd>:移动到文档结尾。

$End键有什么区别?

  • End键在正常模式和插入模式都能使用,它可以直接将光标移动到行尾。
  • $只能在正常/命令模式下使用,但在经典的vi编辑器中也能使用,当没有Vim环境时它很有用。

如何在Vim中移动到行尾
https://119291.xyz/posts/how-to-move-to-end-of-line-in-vim/
作者
ww
发布于
2025年7月17日
许可协议