ChatGPT解决这个技术问题 Extra ChatGPT

在vim中将光标移动到文件末尾

vim

当我想让光标在 Vim 中移动到文件的末尾(即最后一行的末尾)时,我必须键入六次击键:

<ESC>G$a - 转换为 ESC + Shiftg + Shift4 + a 在我的键盘布局上。

我怎样才能更有效地做到这一点?

由于我经常在许多不同的机器上工作,我不能总是更改 .vimrc,所以我正在寻找答案而无需编辑或创建该文件。

只想指出,您显示的命令应表示如下:<esc>G$a,您通过将字母变为大写来显示移位。并且您显示 $ 而不是 shift + 4,因为无论键盘如何,此键 ($) 的功能都不会改变,但如果您执行 shift + 4,则含义可以改变。 :)
@Eduan 我一般同意,但在这种情况下,实际上按键也是相关的。我都添加了:-)
@Eduan 对于效率问题,实际命令无关紧要。击键可以。而且由于语言之间的键盘布局存在巨大差异,我不知道 $ 在美国键盘上的位置,而且很可能对于美国人来说,输入命令 $ 只是一次击键。我想明确地表明,对我来说(使用德语键盘)是两次击键。
@什么集成电路。我可以理解。只是想指出这一点,所以在未来你知道。 :)

M
Maxime Lorant

这个比较快。就用这个

:$

这不会移动到最后一列,只移动到最后一行
如果您只想快速转到文件末尾并且您的键盘快捷键搞砸了,那么这是正确的命令。谢谢!
:$ + End 在这种情况下会这样做。
这需要 在末尾以及仍然需要到达行尾,这使得它不会更快。
:$ 成功了!问题问到文件末尾!谢谢
t
timss

在执行 a 之前无需显式转到行尾,使用 A
在行尾追加文本 [count] 次

<ESC>GA


如果您想保持正常模式,请尝试 G)(如果您处于插入模式并希望在最后一个字符上以正常模式结束,请尝试 <ESC>G))。击键次数相同,但以正常模式而不是插入模式结束。当我想在最后一个单词上运行一些普通命令而不是插入模式命令或编辑时,我偶尔会发现这很有用。
@Alejandro 虽然有用,但 ) 会向前移动 [count] 个句子,因此如果最后一行是 This is a test. Foo bar.,则不会走到行尾。不过,它适用于很多代码,这些代码通常不被视为句子,因此无论如何都会走到最后。
如果您打算写下一行,<ESC> G o 将执行回车并将您置于下一行(在文件末尾)的插入模式,从而节省更多的击键。
此外,如果您不想切换到插入模式,请使用 G$
P
Prasanth Ganesan

按 Esc 然后按:Shift + G


这将转到最后一行的开头,而不是文件的末尾。
这对我来说是文件的末尾,也是一个很好的简单键绑定
保持列号相同(如果可能)并移动到最后一行。雅各布可能在队伍的最后,而乔丹在运行命令时在最前面。
j
jvriesem

对于初学者来说,没有必要返回。 G$ 可以。而且您在正常模式命令的长度中计算 <Esc>a 是一种误导。

但是,如果您愿意,可以使用 Ctrl + End。


我的键盘上没有 End-Key(如果这是您的意思)。
实际上,timss 的回答表明我计算 <ESC>a 做得很好,因为他或她知道用 A 替换 Shift+$, a 的方法。
@如果现在大多数笔记本电脑键盘没有专用的 home/end 键,那么它们会将 home/end 与 Fn 一起放在上/下/左/右
f
fuat

转到顶部 - 双 g

转到底部 - Shift + g


出色的。也适用于 Mac。
在上述两种情况下将光标移至行首
j
jvriesem

我以为问题是“在vim中将光标移动到文件末尾”?

文件结束:Esc + G
文件开始 Esc + g(或gg 如果您已经在命令区)


g
greduan

转到文件最后一行的最佳方法是使用 G。这会将光标移动到文件的最后一行。

转到行中最后一列的最佳方法是使用 $。这会将光标移动到当前行的最后一列。

因此,只需执行 G$ 即可到达文件末尾和最后一行。

如果您想在文件末尾进入插入模式,那么您只需执行 GA。通过这样做,您将转到文件的最后一行,并通过附加到最后一列进入插入模式。 :)


b
broc.seib

如果您打算写下一行,ESCGo 将执行回车并将您置于下一行(在文件末尾)的插入模式,从而节省更多的击键。


S
Sandeep Amarnath

尝试执行 SHIFT + G,您将在页面末尾,但您还不能编辑。执行 G + G 到顶部


G
Gili

Ctrl + Home = 跳转到文件开头

Ctrl + End = 跳转到文件末尾


容易记住
D
D. Ben Knoble

您可以将其映射到 .vimrc 中的键,例如 F3

inoremap <F3> <Esc>GA

虽然可能,但这通常是个坏主意。而是针对肌肉记忆并使用 GAG$
不过,我仍然以 1 次击键获胜 :) 更严肃的一点是,如果您真的需要在 vim 中快速获得一些东西,那么学习如何使用 .vimrc 很有用。
最好有一个完整的地图示例,而不是告诉 OP 去查找它。因为如果你找不到它,OP应该怎么做?
你没有“赢得”任何东西,因为你不得不离开你的家乡。此外,如果您碰巧使用它,您不能在其他人的配置甚至 vi 上使用它。你真的没有节省任何时间。如果有的话,请使用 hobbs 提到的 C-end
我同意这里的评论,但我为你清理了映射
X
Xinyi Xiang

我一直在寻找将光标移动到行尾然后在mac终端上编辑的方法,这就是它对我的工作方式。退出编辑模式,输入 g_(即 'g' 然后下划线,前面没有冒号),然后只需按 'a' 键,您就可以将代码“添加”到脚本中


您是否在寻找 A
这很奇怪,A 基本上等同于 $a
S
Sergiy Kolodyazhnyy

另一种选择:

:call cursor('.',strwidth(getline('.')))

如果您正在编写函数,这可能很有用。另一种情况是当我需要打开一个特定的模板并跳转到第一行的末尾时,我可以这样做:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

以上也可以用

vi +"execute ':normal! $'" notetaking_template.txt

也可以看看:

vim - Get length of the current line


S
SergioAraujo

如果要在文件类型的末尾粘贴一些剪贴板内容:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard

M
Mostafa Wael

要转到最后一行并保留您已经在其中的列:Shift + g

在此移动之后转到行尾:Shift + $

我们可以使用 Shift + g + $ 组合这些动作

请记住, g + g 会将您返回到文件的开头。


O
Okamiram

您所要做的就是按 ESC 然后按 SHIFT G,光标将移动到文件的末尾。