当前位置: 首页 > 知识库问答 >
问题:

vim - 请问在 Vim 中如何跳到某一行首个字符,而不是首个非空字符?

阎令
2024-01-14

一、问题的起源

我是一名 Vim 的初学者,我碰到一个这样的需求:
复制如下代码的第49行~第51行
image.png

二、我的操作

  1. 49G 跳转到第49行
  2. v 进入 Visual Mode
  3. 52G 跳转到52行
  4. y 进行复制

三、具体问题描述

NG 对于行的移动是选中下一行首个非空字符,导致我在复制时会把第52行第一个字母 i 也复制进去,如何修改配置文件使其变成第一个字符,而不是非空字符?利用 Nj 可以跳到下面第 N 行,但我不想计算相对位置。利用 0 也可以跳到该行行首,但多一步比较麻烦。

共有2个答案

魏彦
2024-01-14

用 V(大写的)Visual Line mode:

49GV51G  # 这里 51 行就可以了y

或者直接不进 visual mode

49Gy2y
仲孙翔飞
2024-01-14

在 Vim 中,当你使用 jG 等命令进行行移动时,默认的行为是跳转到当前行的第一个非空字符。如果你想要修改这个行为,使其跳转到每一行的第一个字符,你可以在 Vim 的配置文件(通常是 ~/.vimrc 文件)中添加以下设置:

set virtualedit=all

这个设置会允许你在任何位置进行编辑,而不仅仅是当前光标所在的位置。当你使用 jG 等命令进行行移动时,Vim 会跳转到每一行的第一个字符,而不是第一个非空字符。

另外,如果你想要更快速地跳转到某一行的首个字符,你可以使用以下命令:

0

这个命令会将光标移动到当前行的第一个字符位置。

请注意,这些设置和命令可能会影响 Vim 的默认行为,所以在使用之前最好先了解它们的具体作用。

 类似资料:
  • Vim,如何在每一行下面 添加一个或多个空白行。 我在做一个表 , 需要在每一行下面 插入空白行。 有那个大神知道吗?

  • 问题内容: 我有一个字符串:“ hello good old world”,我想将每个单词的每个首字母大写,而不是使用.toUpperCase()整个字符串。是否有现成的java助手可以完成这项工作? 问题答案: 看看ACL WordUtils。

  • 我有一个从 IT 团队获得的数据集。他们有一个他们不愿意改变的自动提取。 文件如下所示(根据要求添加更多行) 1#|#2#|#3#|#4 数据1#|#数据2#|#data3#|#data4 数据1#|#数据2#|#data3#|#data4 cdata1#|#da#ta2#|#data3#|#数据4 (第 4 行,这是我的数据中的 # 搞砸了仅 # 的引号字符的示例) #看起来像是试图成为引号字符

  • 我正在尝试编写一个模式,该模式将只匹配按字面解释的字符串的第一个字符(可以是任何字符,也可以是空白)。 给定这个函数,它使用“非常没有魔力”来匹配作为参数给出的字符串,然后高亮显示该字符串,我如何修改它,使它只高亮显示第一个字符? 例如,在下面的文本中调用,只会在后面跟着,而不是在任何其他地方突出显示。目前,它突出显示整个给定字符串。 Lorem ipsum do{^(lor sit amet,

  • 问题内容: 我有一个带有文本框的页面,用户应在其中输入24个字符(字母和数字,不区分大小写)的注册码。我曾经限制用户输入24个字符。 注册代码通常以破折号分隔的字符组形式给出,但是我希望用户输入不带破折号的代码。 如何在没有jQuery的情况下编写JavaScript代码,以检查用户输入的给定字符串不包含破折号,或者更好的是,仅包含字母数字字符? 问题答案: 在中找到“你好”

  • 例如,假设您有字符串“greg”。程序会提示您输入要删除的字符,您说“g”,然后程序会提示“输入要删除的g(而不是索引-1=1、2=2等)”,然后输入“2”。然后程序输出新的句子,即“gre”。这是我的CSCI类程序的一部分,我知道如何使用replace(),但我的教授说,我们只能使用循环和这些字符串方法length、concat、charAt、substring和equals(或equalsIg