How to mimic Visual Studio's CTRL-X, CTRL-V functionality in Notepad++?
我正在使用Notepad ++进行某些项目,并且错过了Visual Studio的Ctrl + X,Ctrl + C功能,可以在没有选择文本时剪切或复制整个当前行。 剪切线快捷方式似乎是Ctrl + L,这不像Ctrl + X那样方便,复制快捷方式似乎是Ctrl + D,Ctrl + L,这甚至不太方便。
虽然之前已经提出了类似的问题,但是没有提供在Notepad ++中执行此操作的方法,我无法在Notepad ++站点或其论坛上找到解决方案。
我已经创建了一个Notepad ++插件来实现这一点(不需要python)。它可以在https://bitbucket.org/zastrowm/notepad-visualstudiolinecopy找到。
合成所有其他答案和评论,以及一些未提及的其他必要步骤:
Scintilla提供了一个"copyAllowLine"命令来执行此操作。 Notepad ++不会在快捷方式映射器中公开该命令,但您可以从Python脚本中调用它并将Ctrl + C映射到该脚本。"cutAllowLine"没有相应的命令,但是会有一些额外的Python代码。必须将这些脚本添加到菜单中,并且Notepad ++必须重新启动才能在快捷方式映射器中可用。
安装Python脚本插件(可以使用Notepad ++插件管理器完成)
使用菜单Plugins - > Python Script - > New script创建以下两个python脚本
copyAllowLine.py
1 | editor.copyAllowLine() |
cutAllowLine.py
1 2 3 4 | if editor.getSelectionStart() == editor.getSelectionEnd(): editor.lineCut() else: editor.cut() |
Python脚本 - >配置
- 在User Scripts下,为每个脚本添加一个菜单项。
重启记事本++(重要)
设置 - >快捷方式映射器...
-
在Scintilla命令下,删除Ctrl + C和Ctrl + X的现有关联。
-
在插件命令下,找到刚刚创建的脚本并将快捷方式映射到它们。
注意:通过插件管理器安装时,安装了1.0.6版。当我试图在Notepad ++中运行任何与python相关的东西时,我从插件管理器中得到了一个未知异常。解决方案是从这里手动下载并安装1.0.8 .msi:1.0.8安装程序
使用菜单插件 - > Python脚本 - >新脚本创建此python脚本:
1 2 3 4 | if editor.getSelectionStart() == editor.getSelectionEnd(): editor.lineCut() else: editor.cut() |
重启记事本++(重要)
转到菜单设置 - >快捷键映射器 - >插件命令
在列表中找到您刚刚创建的脚本,并为其设置CTRL + X快捷方式
请享用!
转到设置 - >快捷键映射器,然后单击顶部的"Scintilla命令"选项卡。在那里你应该能够将Ctrl + L命令更改为Ctrl + X。
来自MackieChan的插件:记事本 - 视觉工作室系列副本
必须仍然设置如下:
把它放到notepad ++ / plugin文件夹中
打开记事本++(重启)
在设置 - >快捷键映射器中
在Scintilla命令下,删除Ctrl + C,X的现有关联
在插件命令下,找到刚刚创建的脚本并将快捷方式映射到它们。
您可以使用Python Script Notepad ++插件添加脚本,并将Ctrl + C分配给脚本(从快捷方式映射器中的SCI_COPY中删除Ctrl + C映射,Scintilla Commands选项卡)
该脚本只是:
1 2 3 4 5 | if editor.getSelectionStart() == editor.getSelectionEnd(): line = editor.getCurLine() editor.copyText(line) else: editor.copy() |
显然,只需为Ctrl-X添加另一个类似的脚本即可删除该行。
在https://github.com/kbilsted/NppPluginCutNCopyLine上有一个插件,它的开源代码很容易修改,如果你有额外的需求。
你可以编写一个带有全局键事件挂钩的程序,每次你做一个Ctrl + X检查notepad ++是否是最重要的应用程序运行,抓住屏幕,检查是否选择了任何文本(通过查看截图和你的记事本++颜色)设置),并将WM_KEYPRESS消息发送到模拟Ctrl + L的记事本++窗口(假设您正在使用Windows)。
(这不会把线放到剪贴板中,你必须做一些字符识别才能允许它)