Notepad ++:光标超出行尾/虚拟空间?


11

TL; DR-如何启用虚拟空间将光标移动到文本行的末尾?

较长的版本 -在Notepad ++中,当尝试选择(使用鼠标)一长行文本超出窗口的右边缘,从而导致其水平滚动时,我的鼠标有时会稍微向上或向下移动足以移动光标到相邻(通常短得多)的行,导致光标向左移动到相邻行结束的位置;依次将窗口水平向左滚动到左侧,这使得很难快速重新调整并完成拖出我的选择。

一些(尽管很少)文本编辑器提供了“虚拟空间”选项或将光标移到EOL上的选项,以使鼠标/箭头轻松浏览而又不受限于现有文本/空白。

我该如何在Notepad ++中做到这一点(无需亲自破解源代码)?


1
行首,按住SHIFT + END,是否已选择整行?我知道这与您想要的不一样,但这是我的工作。
罗布

1
不是您要问的问题,但是换行会解决问题。
Eroen

@Rob:当我尝试选择非常长的代码行中的特定长块时,通常会遇到这个问题,但是该行与其他短得多的行混合在一起。我还可以使用SHIFT + CTRL + RIGHTARROW一次从我的起点快速向右选择一个单词,Notepad ++非常擅长在没有任何实际空格时检测断字字符,例如句点,括号等。单词(例如在长对象引用中),例如(javascript):someObjectName.subObject.property['index'](parameter)
acatalept 2012年

@Eroen:很高兴您提出这个建议,我已经很长时间没有在N ++中使用自动换行了,因为它曾经使程序带有大文件而屈膝……但是,即使对于我更大的20k,它也能很好地工作行文件,甚至在

Answers:


14

有点黑客(在启动时将窗口消息直接发送到Scintilla编辑控件),但效果很好:

  1. 安装NppExec插件

  2. 转到插件-> NppExec->执行

  3. 输入以下代码:

    // ensure console stays hidden
    NPP_CONSOLE 0
    
    // enable virtual spaces (cursor past end of line) outside column edit mode
    SCI_SENDMSG 2596 3 0
    
    // SCI_SENDMSG == send message to Scintilla edit control
    // 2596 == the message we're sending is SCI_SETVIRTUALSPACEOPTIONS
    // 3 == send the value (SCVS_RECTANGULARSELECTION | SCVS_USERACCESSIBLE)
    // the default value is 1 (just SCVS_RECTANGULARSELECTION) for
    //   virtual spaces in column select mode only
    // you can find these values by poking around the source code a bit, or
    // see http://www.scintilla.org/ScintillaDoc.html
    
  4. 单击底部的“ 保存”按钮,并为脚本命名

  5. 现在转到插件-> NppExec->高级选项

  6. 在右侧的“ Notepad ++启动时执行此脚本”下,选择刚刚保存的脚本名称

  7. 单击确定,关闭/重新打开记事本++,然后享受;)


2596其他scintilla命令一样,消息代码在哪里记录?仅戳Scintilla.h?目前在tortoisesvn.googlecode.com/svn/trunk/ext/scintilla/include/…吗?
n611x007

什么是0SCI_SENDMSG 2596 3 0
n611x007

@naxa:有关消息代码的信息,请参见Scintilla文档,例如scintilla.org/ScintillaDoc.html#SCI_SETVIRTUALSPACEOPTIONS(我相信大多数参数中未使用第3个参数,但必须将其设置为0而不是省略)
截至

“骇客排序”-骇客意味着访问该软件不应该执行的操作。在我看来,这是一个功能。
Natalie Adams

@Nathan:语义很有趣;)我的意思是,本质上讲,使用NppExec插件将窗口消息直接发送到控件有点像hack,而不是Notepad ++专门设计的功能(除了周到地提供插件框架来润滑车轮)
acatalept

0

没有管理员权限,请下载dll并安装到npp的插件o / s目录/文件夹来安装NppExec。关闭/重新打开npp。

编辑(+2年):我不知道这是否已更改,但是现在(如果不是最初的话)将NppExec 文件夹放入npp的plugins文件 -dll位于NppExec子文件夹中。

还要确保版本匹配(提醒自己是使用32位还是64位),如果您使用的是最新版本(2019年),则可能需要_PA版本的NppExec。

为什么我无法为Notepad ++安装NppExec插件?


Notepad ++中的某些更改。执行不再存在。是否对此有更正?
user215779
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.