Vim能否自动将更改/插入命令(例如dd
,O
和u
)应用于所有打开的窗口?我正在一个窗口中编写一个LaTeX文档,并希望使用第二个窗口作为我的保证金注释,TODO等(类似于Cornell notes)。我的Vim标签看起来像
|1 \documentclass{article} |1
|2 \begin{document} |2
|3 Lorem ipsum dolor sit amet, |3 TODO: reword this.
| …consectetur adipisicing elit.|
|4 Ut enim ad minim veniam, quis |4 Could use some more examples.
| …nostrud exercitation ullamco.|
|5 |5 Put bibliography here.
|6 \end{document} |6
我需要保持wrap
(最好showbreak
)切换,因为我的句子通常很长。
到目前为止,我已成功使用scrollbind
和cursorbind
并行导航这两个文件。但是,当我在一个文件中插入或删除行时,对齐会中断。例如,我可以在左侧窗口中插入一行(使用o
)来加载包,生成
|1 \documentclass{article} |1
|2 \usepackage{hyperref} |2
|3 \begin{document} |3 TODO: reword this.
|4 Lorem ipsum dolor sit amet, |4 Could use some more examples.
| …consectetur adipisicing elit.|
|5 Ut enim ad minim veniam, quis |5 Put bibliography here.
| …nostrud exercitation ullamco.|
|6 |6
|7 \end{document} |~
现在右侧窗口中的所有注释都在错误的行上。如果我在左侧窗口中的编辑也在右侧窗口中的第1行之后插入了一个新行,则将保留对齐。我使用windo
命令取得了一些成功(例如windo normal dd
删除了两个文件中的一行);我应该将dd
映射到window normal dd
,对于我可能使用的每个命令都是如此吗?对于像o
这样让你处于插入模式的命令,它会如何工作?
为了使问题复杂化,我希望任何操作创建或删除要在两个文件中复制的换行符。例如,插入模式下的回车应该被捕获并在另一个窗口中重复。
是否有更好的方法可以做到这一点(我会坚持使用Vim,但有兴趣听听其他具有此功能的编辑器),还是应该将我的评论保留在文档文件中?
答案 0 :(得分:3)
很好,我从来没有听说过Cornell notes,但我怀疑是否可以按照你想要的方式同步两个缓冲区,而不需要任何关键(我很乐意被证明是错误的)
但是,如果我们退一步而不是尝试同步两个缓冲区,我们尝试仅使用一个缓冲区,通过在第120列创建一个装订线怎么办?
<强>工作流强>
:set virtualedit=all
80@='120|i|^M^['
以在位置120处创建超过80行的装订线。 ^ M为 ctrl -v 输入
^ [输入为 ctrl -v esc
<强>优点强>
<强>缺点强>
R
(替换)而不是i
(插入)不要弄乱我们创造的阴沟。答案 1 :(得分:2)
在Vim中,您将无法实现100%完整且一致的完美系统。
虽然dd
之类的命令可以直接应用于其他缓冲区,但插入模式已经要求您等待文本条目的结束。像u
这样的命令根本无法直接应用;您需要注意更改的内容,并将其应用于其他缓冲区。大多数Ex命令也是如此,例如:global
,:substitute
。
我宁愿在:autocmd
之类的事件上定义CursorHold,InsertLeave
,而不是重新映射大多数命令,而是将总行数与先前存储的值进行比较,然后调整其他缓冲区因此在当前行。如果您愿意接受某些编辑将通过该方案,并且您要么避免或者手动更正它们,这可能是一个可行的解决方案。