有没有办法在vim的特定行放置一个字符,即使该行很短?
例如,我正在为一个具有79列宽的注释块样式的项目做贡献,在任一端都有注释字符,例如。
!--------------!
! Comment !
! More Comment !
!--------------!
但即使猜测大数字(35i< SPACE>< ESC>)
,它仍然很烦人。是否有一个简单的命令可以为我,或宏或我能写的东西?
答案 0 :(得分:8)
set ve=all
然后你可以将(h,j,k,l)移动到你想要的任何地方。无论你的线路有多短。
有4个选项block, all, insert, onemore
了解详情:
检查:h virtualedit
以这种方式,在您输入简短评论后,请键入<ESC>080l
以转到正确的位置!
如果经常使用
,你也可以映射它然后就像这样:
答案 1 :(得分:2)
将其放入.vimrc
文件并重新启动vim:
inoremap <F1> <C-r>=repeat(' ', 79-virtcol('.'))<CR>!<CR>
在输入注释文本后,只需按插入模式中的 F1 (或任何键映射的键)以自动填充空格并在第79列中插入!
。
另一个简单的方法是在某个地方保留一个正确大小的空注释框,在需要的地方将其粘贴/粘贴,然后只需 R ,每次用你的注释替换它中的空格。
如果要重新格式化一个太短的框,一种方法是从示例中的注释开始,创建一个Visual Block( Ctrl + v )选择右侧边缘左侧的单个列,将其拉出( y ),然后重复粘贴它( p )。这将连续将评论的整个右侧移动一步,向右扩展框。重复,直到它具有所需的长度。
如果您已输入评论文字,则可以使用宏在正确的位置添加右侧!
标记。例如,记录一个宏( q a ),其附加的字符数多于任何行所需的字符数(例如 8 0 A 空间 Esc ),然后使用goto列( | )转到正确的位置( 7 9 | )并从那里替换多余的字符( C ! < kbd> Esc ),然后向下移动一行( j ),并停止录制( q )。重复这个宏( @ a )然后依次“修复”每一行并移动到下一行。总计:qa80A<space><esc>79|C!<esc>jq
然后根据需要@a
。听起来很复杂但是一旦你拥有它就很方便。
答案 2 :(得分:1)
这里肯定有很好的答案,特别是virtualedit答案。但是,我没有看到对我来说最直观的方法。我会为注释的最后一行创建一个空行,它只是被感叹号包围。然后我会猛拉并粘贴空行的新副本,转到旧空行并转到我要编辑的点并使用重击模式( R
)来添加我的文本而不影响结束感叹号的位置。
有时最简单的方法,虽然稍微笨重,但最容易使用和记忆。
答案 3 :(得分:0)
我通常只是复制并粘贴注释块中的现有行(或从另一个文件中复制一行),然后进行修改。如果您要替换的文本大小与您要编写的文本大小相同(例如,如果您要更改作者的名称),则可能只需添加或删除一些空格即可使所有内容对齐。与间距达到所需宽度相比,它的痛苦要小得多。
如果你有一个这么长的块,一个巧妙的技巧是将光标放在第79列并按 d w 。这将清除最后!
之前的所有空格。
答案 4 :(得分:0)
我的AlignFromCursor plugin提供命令和映射,只对齐光标右侧的文本,并保持文本左侧不变。因此,将光标放在尾随!
左侧的空白处,您可以将其与<Leader>ri
对齐。