首页 > 解决方案 > 如何调用编辑器到特定的行和相对于行的字符位置?

问题描述

我正在开发一个支持在 XML 验证错误上启动外部编辑器的应用程序,其中验证错误将包括发生错误的行中的特定行和字符偏移量。例如,“74:62”表示该行的第 74 行和第 62 个字符,也称为“第 74 行,第 62 列”。

我遇到的问题是编辑以不同的方式对待“列”。对于 Vim,第 62 列是一个字符位置。在 Oxygen XML Editor、Notepad++ 和 Emacs 中,列是一个渲染位置。

为什么这种区别很重要?如果目标行有制表符,Notepad++ 和 Emacs 的“列”不再表示字符偏移量,并且对于这些编辑器,光标的位置会有所不同:Notepad++ 将制表符视为 4 列,而 Emacs 将其视为 8 列(默认情况下)。

以下是我用于每个编辑器的命令,其中“L”是行号,“C”是列号,“FILE”是要打开的文件:

对于 Notepad++ 和 Emacs,是否有命令行调用将光标放置在相对于行的字符位置?

编辑

Oxygen XML Editor 的行为符合预期,其中column参数被解释为从line. 请参阅下面关于 Emacs 的@Rorschach 的回答,我没有 Notepad++ 的解决方案。

标签: emacsnotepad++oxygenxml

解决方案


我为 Oxygen XML 编辑器工作,据我所知,Oxygen 将插入符号放置在该特定字符偏移处,因此我们在此上下文中不使用可视制表符宽度表示。您应该注意的一件事是,默认情况下,在 Oxygen 中,如果您按下“Tab”键,您实际上会插入 4 个空格,如果您想插入“Tab”字符,请在 Preferences->“Editor / Format”页面中是一个名为“Indent with tabs”的设置,需要检查。


推荐阅读