Sublimetext2 复制整行快捷方式,然后将其粘贴到光标下

Sublimetext2 复制整行快捷方式,然后将其粘贴到光标下,sublimetext2,sublimetext3,sublimetext,shortcut,Sublimetext2,Sublimetext3,Sublimetext,Shortcut,在Sublime Text 3上(但我想它与ST2相同),我知道当您复制(CTRL+C)时,如果没有选择任何内容,则会复制整行内容,但我需要知道如何将其粘贴到光标下方 它现在把它贴在上面,我觉得它不符合逻辑,有没有办法修改这种行为?不是它贴“上面”或“下面”,而是它在当前行上运行。如果在不进行选择的情况下进行复制,则会复制当前行。当你粘贴它时,它也会在当前行上运行——它会将缓冲区粘贴到该行中,作为一个副作用,该行上的任何内容都会跳转到下一行。它不能向上凸起-文件只能向下增长或添加新行,不能向上增

在Sublime Text 3上(但我想它与ST2相同),我知道当您复制(
CTRL+C
)时,如果没有选择任何内容,则会复制整行内容,但我需要知道如何将其粘贴到光标下方

它现在把它贴在上面,我觉得它不符合逻辑,有没有办法修改这种行为?

不是它贴“上面”或“下面”,而是它在当前行上运行。如果在不进行选择的情况下进行复制,则会复制当前行。当你粘贴它时,它也会在当前行上运行——它会将缓冲区粘贴到该行中,作为一个副作用,该行上的任何内容都会跳转到下一行。它不能向上凸起-文件只能向下增长或添加新行,不能向上增长超过第1行


至于如何修改行为,我建议尝试制作一个宏

正如您在评论中指出的,宏可以工作,但它留给您两种不同的粘贴方式,一种用于正常使用,另一种用于此“整行”行为。这是不幸的,尽管还有另一个(更难的)解决方案。您可以尝试编写一个Sublime插件来检测在每种情况下如何表现和做您想做的事情。这有点超出了我为你做的能力。。。但是考虑到这一点,我意识到Vintage包已经有了一个用于此的命令,因为它的p键和p键分别粘贴在光标之前和之后。我看了看古董包装,想知道他们在哪里做的。这是他们的代码,尽管我无法向你解释它是如何工作的。您可能希望尝试模拟
vipasterright

class ViPrefixableCommand(sublime_plugin.TextCommand):
#确保寄存器和重复从g_输入_状态中拾取,并且
#它将被记录在撤销堆栈上
def run_(自我、编辑_标记、参数):
如果不是args:
args={}
如果g_输入_状态寄存器:
args['register']=g_input_state.register
g_输入_状态寄存器=无
如果g_输入_状态。前缀_重复_数字:
args['repeat']=数字到数字(g\U输入\U状态。前缀\U repeat\U数字)
g_输入_状态。前缀_重复_数字=[]
如果参数中有“事件”:
del args['event']
edit=self.view.begin\u edit(编辑标记,self.name(),args)
尝试:
返回self.run(编辑,**参数)
最后:
self.view.end\u编辑(编辑)
类ViPasteRight(ViPrefixableCommand):
def预付款(自身、pt):
如果self.view.substr(pt)='\n'或pt>=self.view.size():
返回点
其他:
返回pt+1
def运行(自我、编辑、寄存器=“”,重复=1):
visual\u mode=self.view.has\u non\u empty\u selection\u region()
如果不是可视模式:
变换_选择(self.view,lambda pt:self.advance(pt))
self.view.run_命令('paste_from_register',{'forward':非可视_模式,
“重复”:重复,
“寄存器”:寄存器})
类ViPasteLeft(ViPrefixableCommand):
def运行(自我、编辑、寄存器=“”,重复=1):
self.view.run_命令('paste_from_register',{'forward':False,
“重复”:重复,
“寄存器”:寄存器})
下面是它们如何将它们绑定到键上。如果您想尝试适应这种情况,您可能不需要
上下文
,这是他们需要的,因为Vintage mode的模态特性

{“keys”:[“P”],“command”:“vi_paste_left”,
“context”:[{“key”:“setting.command_mode”}]
},
{“键”:[“p”],“命令”:“vi_粘贴右键”,
“context”:[{“key”:“setting.command_mode”}]
},
这里是关于插件的文档部分,如果你想用这种方式解决它的话


根据丹·洛的回答,我制作了这个文件:

并添加了这一行
{“键”:[“ctrl+shift+v”],“命令”:“运行宏文件”,“参数”:{“文件”:”res://Packages/User/paste_no_line.sublime-macro“},

到我的用户的密钥绑定。

按预期工作,但我现在有两个不同的“粘贴命令”。

那么,我想要的是:
ENTER
CTRL+V
CTRL+MAJ+K
(删除整行)我不遵循删除行部分。您正在尝试使用粘贴替换当前行吗?我以为你想把它粘贴到当前行的下方而不是上方。我确实想把它粘贴到当前行的下方,但是如果我在当前行上,按ENTER键,按paste hit键,删除按ENTER键创建的空行,我就有了想要的行为。你是说我绝对不可能得到我想要的吗?我建议试着做一个宏。您可能希望在第一个操作中转到行的开头,然后是您建议的其他操作。这样,无论cusror在当前行中的位置如何,它都会工作。我编辑了答案,也提出了这个建议。按照你的建议制作了一个宏,它可以工作,但我现在有两个粘贴快捷方式。