Vim:在多行中插入相同的字符

2024-01-31

有时我想跨多行编辑某个视觉文本块。

例如,我会采用如下所示的文本:

name
comment
phone
email

并让它看起来像这样

vendor_name
vendor_comment
vendor_phone
vendor_email

目前我现在要做的方式是......

  1. Select all 4 row lines of a block by pressing V and then j four times.
  2. Indent with >.
  3. Go back one letter with h.
  4. Go to block visual mode with Ctrlv.
  5. Select down four rows by pressing j four times. At this point you have selected a 4x1 visual blocks of whitespace (four rows and one column).
  6. Press C. Notice this pretty much indented to the left by one column.
  7. 键入一个" vendor_"没有报价。请注意我们必须放回的额外空间。
  8. Press Esc. This is one of the very few times I use Esc to get out of insert mode. Ctrlc would only edit the first line.
  9. 重复步骤 1。
  10. Indent the other way with <.

I don't need to indent if there is at least one column of whitespace before the words. I wouldn't need the whitespace if I didn't have to clear the visual block with c.

但是,如果我必须清除,那么有没有一种方法可以完成我上面执行的操作,而无需创建带有缩进的所需空白?

Also why does editing multiple lines at once only work by exiting out of insert mode with Esc over Ctrlc?


这是一个更复杂的例子:

name    = models.CharField( max_length = 135 )
comment = models.TextField( blank = True )
phone   = models.CharField( max_length = 135, blank = True )
email   = models.EmailField( blank = True )

to

name    = models.whatever.CharField( max_length = 135 )
comment = models.whatever.TextField( blank = True )
phone   = models.whatever.CharField( max_length = 135, blank = True )
email   = models.whatever.EmailField( blank = True )

在此示例中,我将在.,然后在插入模式下将其重新插入,即键入.whatever.。希望现在您可以看到此方法的缺点。我仅限于选择一列文本在垂直位置上都是一样的.


  1. 将光标移至n in name.
  2. Enter visual block mode (Ctrlv).
  3. Press j three times (or 3j) to jump down by 3 lines; G (capital g) to jump to the last line
  4. Press I (capital i).
  5. Type in vendor_. Note: It will only update the screen in the first line - until Esc is pressed (6.), at which point all lines will be updated.
  6. Press Esc.

一个大写I必须使用小写字母i,因为小写i被解释为一个的开始文本对象 http://vimhelp.appspot.com/motion.txt.html#text-objects,它本身就相当有用,例如用于在标签块内选择(it http://vimhelp.appspot.com/motion.txt.html#it):

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vim:在多行中插入相同的字符 的相关文章

  • 如何在 Vim 中转置文件中的行和列的内容?

    我知道我可以使用 Awk 但我使用的是 Windows 机器 并且我正在为可能没有 Awk 的其他人创建一个函数 我也知道我可以编写 C 程序 但我不希望我正在制作的 Vim 实用程序需要编译和维护 原始文件可能是 THE DAY WAS
  • Vimscript 检查当前缓冲区是否有未保存的更改

    我目前已设置状态行 使其在插入模式下为橙色 否则为白色 如果文件有任何未保存的更改 我想让它在我回到正常模式时变成另一种颜色 因为我经常在兔子洞里走一会儿 想知道为什么我的更改没有生效 小 还不够打我的脸 我找不到任何以 buf 开头且看起
  • Pathogen 不加载插件

    病原体对我不起作用 我正在遵循 Adam Lowe 发布的提示here http www adamlowe me 2009 12 vim destroys all other rails editors html 还有更多 没有任何成功 我
  • Vim / vi 生存指南

    基本的 vim 命令有哪些 新用户需要了解什么才能避免陷入麻烦 请每条评论一条命令 我发现不可替代的 因为它也可以在 vi 中使用 与 vim 的视觉模式不同 是标记 您可以用以下标记标记不同的点m 小写 然后是您选择的字母 例如 x 然后
  • 运行 tmux 时映射箭头键

    这些键映射在 tmux 中停止工作 在我的 vimrc 我有 nmap
  • 禁用 VIM 中的警告?

    有没有办法禁用 VIM 中的警告 特别是 当文件从只读变为可写时 我想禁用警告 12 我有一个脚本可以打开文件进行编辑 但 vim 认为文件已更改并发出警告 Thanks 我的 vimrc 中有以下内容 你应该只需要第二个 它将消息回显到状
  • 在后台从 gVim 运行 :make

    我在 Windows 中使用 gVim 来编辑我的代码 主要是 C 我在 gVim 中使用 make 来编译项目 但这是一个阻塞操作 在编译完成之前我无法使用 gVim 我怎样才能异步执行 make 并仍然获得将错误读回 Vim 并跳转到源
  • VIM 始终使用选项卡式页面

    我想要一个可以放入 vimrc 文件中的命令 该命令将使 vim 始终以选项卡式页面模式打开 而无需传递 p在命令行上 有这样的命令吗 如果没有 是否有更好的方法来做到这一点 目前 我正在使用 alias vi vim p 在我的 bash
  • Alt 键快捷键在使用 Vim 的 gnome 终端上不起作用

    我在 gnome 终端上运行 Vim 但 alt 键映射不起作用 例如 imap
  • 如何让 Vim 突出显示非 ascii 字符?

    我试图让 Vim 突出显示非 ASCII 字符 是否有可用的设置 正则表达式搜索模式或插件来执行此操作 在 a 中使用范围 搜索中的字符类 您应该能够excludeASCII 十六进制字符范围 因此突出显示 假设您有hlsearch启用 所
  • 什么是 .un~ 文件或者为什么终端中的 Vim 会创建 .un~ 文件?

    我注意到我有一些以 un 例如我有一个 vividchalk vim un 但我不确定它是从哪里来的 看起来它们是我在终端中使用 Vim 时创建的 这些文件是什么 当我关闭正在编辑的文件时 可以让它们自行删除吗 当你编辑和保存文件时 Vim
  • VIM:我如何知道关键字使用了哪个突出显示规则?

    colorscheme default 文件类型是php 谁能帮我找出突出显示规则 hi light 将列出所有定义的规则并进行预览 您还可以查询单个项目 hi Keyword 手动查找任何语法组在光标下 有选择 我的是一个绑定到键的函数
  • 仅当源文件为 LaTeX 时,Vim 才会重新映射 [重复]

    这个问题在这里已经有答案了 我的键盘上有一个 键 有时我想在 Vim 中编辑 LaTeX 时使用它来扩展为正确的表达式 即 frac 1 2 我知道我应该做类似的事情 inoremap frac 1 2 现在 我如何使其仅适用于 LaTeX
  • 如何在 vim 中覆盖 ~/.vim 和 ~/.vimrc 路径(但不能覆盖其他路径)?

    假设我有一个所有 vim 配置的 tarball 通常在 vim 中的所有内容 插件 自动加载 颜色 所有这些东西 和一个 vimrc 文件 我将其提取到某个目录中 所以在我所在的目录 PWD 中 有一个 vim 文件夹和一个 vimrc
  • 在 Vim 中,选择、删除或注释掉大部分多屏幕文本的最佳方法是什么?

    在像 Eclipse 这样的 IDE 中选择延伸到多个屏幕的大量文本相当容易 因为您可以使用鼠标 但是最好的方法是什么 例如 选择并删除多屏幕文本块或写入例如三个大方法导出到另一个文件 然后在 Vim 中删除它们以进行测试 当通过 putt
  • Linux/Ubuntu 目录位置 ~/.vim/syntax/

    文件夹的默认位置在哪里 vim syntax 在Linux系统上 我正在尝试添加一个 Python 插件 您正在寻找 runtimepath 选项 该文档非常详细 使用 help runtimepath 但我会尝试在这里总结一下 The 运
  • 为什么使用 键取消搜索时 vim incsearch 会暂停?

    在 vim 中 如果你set incsearch然后它将滚动到当前搜索词的下一个匹配项 而无需移动光标 我经常用它来阅读一段代码而不用将光标移动到那里 因为我可以点击
  • 如何让 vim 很好地对齐三元 ?: 运算符?

    我喜欢使用三元 运算符编写代码 如下所示 std string result input empty createNewItem processInput input 我如何配置vim 以便在输入后按回车键createNewItem 缩进下
  • Vim 和 snipMate(插件)- 添加新代码片段不起作用

    我正在尝试为我的 snipMate 插件创建一个新的片段 我使用一些名为 即 myfile endfile 的文件 所有 endfile 文件都应具有与 html 文件相同的 片段 所以我做了 cp html snippet endfile
  • 设置 vim 命令的键盘快捷键

    说我想要

随机推荐