Is it possible to copy a line in exalted text without moving the cursor?

Say I have this code

body { margin: 0; padding: 0; } .navbar { margin: 0; padding: 0; background: rgba(0,0,0,0.1); } div { } 

Inside the div, I want to put the line, 'background: rgba (0,0,0,0.1.1);' so I can just copy it on top. I was wondering if there is a way to copy the line above if the cursor should not be copied and returned there. I know that I can just do ctrl-c and ctrl-v to quickly cut and paste, but I thought it would be much faster if I can just say which line I want to copy and paste to where my cursor is .

+5
source share
1 answer

Maybe. Although you should make a plugin for this.
I tried to do this, so I am not saying that this is the easiest way, but it works.

Here is the code snippet:

 import sublime_plugin class PromptCopyLineCommand(sublime_plugin.TextCommand): def run(self, edit): # prompt fo the line # to copy self.view.window().show_input_panel( "Enter the line you want to copy: ", '', self.on_done, # on_done None, # on_change None # on_cancel ) def on_done(self, numLine): if not numLine.isnumeric(): # if input is not a number, prompt again self.view.run_command('prompt_copy_line') return else: numLine = int(numLine) # NOL is the number of line in the file NOL = self.view.rowcol(self.view.size())[0] + 1 # if the line # is not valid # eg 0 or less, or more that the number of line in the file if numLine < 1 or numLine > NOL: # prompt again self.view.run_command('prompt_copy_line') else: # retrieve the content of numLine view = self.view point = view.text_point(numLine-1, 0) line = view.line(point) line = view.substr(line) # do the actual copy self.view.run_command("copy_line", {"string": line}) class CopyLineCommand(sublime_plugin.TextCommand): def run(self, edit, string): # retrieve current offset current_pos = self.view.sel()[0].begin() # retrieve current line number CL = self.view.rowcol(current_pos)[0] # retrieve offset of the BOL offset_BOL = self.view.text_point(CL, 0) self.view.insert(edit, offset_BOL, string+'\n') 

Just save this in a python file under Package/User/ (e.g. CopyLine.py )
You can also define a shortcut for it as follows:

 { "keys": ["ctrl+shift+c"], "command": "prompt_copy_line"} 

If you have any questions about this, please ask.

PS: demo version enter image description here

+7
source

Source: https://habr.com/ru/post/1200435/


All Articles