NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Yet another tool for making copy/paste/run experience better (Windows) (github.com)
AnonHP 1344 days ago [-]
To the author: This is a really nifty tool. It's also great that it provides the ability to configure custom keyboard shortcuts. I will be trying this soon.

> Does the following sound familiar: you paste some text from a web page into a Terminal command line, and it gets executed immediately, before you even had a chance to edit it? Only because there was a CR/LF character at the end of the clipboard text.

Oh yes, that sounds very familiar! As the description says, I use another buffer (it says notepad.exe) to re-copy the line without the newline and then paste. __________

Aside: Is there a similar tool for macOS?

__________

The screenshot also shows a "Prevent Sleep Mode" option. I currently use an app called Caffeine [1] to keep my machine awake (and not automatically lock). I guess DevComrade could replace that too.

[1]: https://zhornsoftware.co.uk/caffeine/

JadeNB 1344 days ago [-]
> Aside: Is there a similar tool for macOS?

I don't know the state of Windows terminal emulators, but it seems strange to describe the problem without mentioning the term for the solution, which is 'bracketed paste'. This article discusses how bracketed-paste mode is signalled using ANSI escape sequences, which I guess can work in most macOS terminal emulators (although it's up to the shell to respond): https://cirw.in/blog/bracketed-paste . (I guess that Win+Ins is doing something similar on Windows?)

AnonHP 1344 days ago [-]
Thanks for this. I’ll check out bracketed pasting mode in terminal next time (not near one right now), though I have to admit that even after reading that post, I didn’t understand what exactly happens when it’s used. I understood that the command does not get executed, but what happens in the shell (I looked this up on Wikipedia too)? Does it just display the line and allow the user to edit it so that the starting and ending escape sequences can be removed along with any other edits and then the command executed?
JadeNB 1344 days ago [-]
> I understood that the command does not get executed, but what happens in the shell (I looked this up on Wikipedia too)? Does it just display the line and allow the user to edit it so that the starting and ending escape sequences can be removed along with any other edits and then the command executed?

My understanding is that it's up to the shell, or whatever program, to decide how to handle it. (I didn't make this clear in my original post, and have updated it accordingly.) All bracketed paste is doing is providing a mode that tells the program "everything between these two symbols should be interpreted as input, not as commands"; it's then up to the program to decide how it wants to respond to the user's intention.

At least for me, with Terminal.app and bash 5.0 (where it's not enabled by default), it behaves es you describe when enabled by `set enable-bracketed-paste on` in `.inputrc`. For vim, I believe the plugin is essentially doing the equivalent of `set paste` before and `set nopaste` after.

noseratio 1344 days ago [-]
> I guess that Win+Ins is doing something similar on Windows?

By default Win+Ins does nothing on Windows. I had to implemented this feature in DevComrade. I wish it was all part of Windows so I didn't have to maintain it :) Happy if they take the source, it's an Apache 2.0 license.

noseratio 1344 days ago [-]
Thanks! Prevent Sleep Mode is on my TODO list, same as publishing to Windows Store. I'm not sure if there's a similar tool for MacOS. If there isn't, that'd be a bit of a learning curve for me to implement it :)
TheSpiceIsLife 1344 days ago [-]
I ctrl-L / cmd-L to the URL bar in the browser and do the re-copy from there.
GordonS 1344 days ago [-]
I did something similar for years, but using the Windows 'run' dialog instead, so I'd select the text, CTRL-C, WIN-R, CTRL-V, CTRL-A, CTRL-X, and then paste in the now unformatted text where I wanted it. Sounds convoluted, but after doing it a few times, muscle memory made it really fast, 2s or so.

I discovered PureText a good while back (mentioned by the author), which instead let's me bind WIN-V to paste the current clipboard as unformatted text. Unfortunately the functionality has been a bit unreliable because of Windows updates, so I'll be giving this a try.

noseratio 1344 days ago [-]
I used to hit Alt+D or Win+R for that. But now I can do Win+Ins and it pastes a single unformatted line without line breaks anywhere. Works very well for me in the command line, especially when remoting with SSH.
noseratio 1344 days ago [-]
Also, DevComarade already has a shortcut for Presentation Mode, which just launches Presentationsettings.exe, but that should too keep you PC awake and without locking the screen, if that's what your want.
reaperducer 1344 days ago [-]
Aside: Is there a similar tool for macOS?

If you use iTerm on macOS, a disclosure sheet will ask if you really want the whole thing with the CR, or if you just want the regular text.

zzapplezz 1344 days ago [-]
> Aside: Is there a similar tool for macOS?

For small strings, you can paste in Spotlight Search and re-copy to strip formatting.

jaytong 1344 days ago [-]
Not sure if it works everywhere, but I normally do Cmd + Shift + V
Fiahil 1344 days ago [-]
On MacOS, you can use Flycut (https://github.com/TermiT/Flycut) to manage your clipboard. Just assign it to cmd + shift + v and it will allow you to cycle through your buffers.

This is nice when you need multiple items from the same source (say login/password from password manager), instead of doing "copy ; switch ; paste ; switch ; copy ; paste" you can now do "copy ; copy ; switch ; paste ; paste". It's a phenomenal time saver and it will take care of the additional LF at the end, as well!

cel1ne 1344 days ago [-]
When I copy a command to paste in the terminal I always start the selection from the end and move left to the start. That way I won't accidentally copy a newline.
noseratio 1344 days ago [-]
DevComrade is different from many similar utilities (e.g., from Puretext) in how it uses Win32 simulated input API to feed the text into the currently active window, as though it was typed by a person. For example, it works well with Google's Secure Shell App for Chrome.
AnonHP 1344 days ago [-]
Please edit the title of this submission with a "Show HN: " prefix.
GordonS 1344 days ago [-]
AFAIK you can't edit the title of posts, only mods can.
noseratio 1344 days ago [-]
My bad, but I can't find how to edit it. Long-time lurker with only a few submissions.
thunderbong 1344 days ago [-]
How does this compare to Ditto?

https://ditto-cp.sourceforge.io

noseratio 1344 days ago [-]
That's a good question. I've been a long-time user of PureText, but somehow I've only become aware of Ditto's existence last week, when DevComrade was already in the works :)

I've got a quick look and Ditto seem to be capable of doing much more than I personally need, like maintaining the clipboard history (I use Windows' Win+V for that), sharing clipboard over the network and using its own scripting language ChaiScript. OTOH, I'd like to keep the useful functionality of DevComrade at the very bare minimum.

I'm also not sure yet about how exactly they do pasting, i.e., if they use Win32 SendInput. That may affects how well Ditto works with terminals and shells. Conveniently, they provide the source code (looks like it is a C++/MFC project), so at some point I'll come up with a better comparison and update the Readme in my repro.

jessmay 1344 days ago [-]
Open URL from clipboard and Insert Guid seem pretty handy.
noseratio 1344 days ago [-]
Thanks! I've added "Insert Guid" merely as an example of how to bind a custom C# script to a menu item or hotkey:

<hotkey name="InsertGuid" menuItem="Insert &amp;Guid" isScript="true"> <!-- this is an example of a C# scriptlet handler --> <![CDATA[ await Host.FeedTextAsync(Guid.NewGuid().ToString("B").ToUpper(), Token); ]]> </hotkey>

stOneskull 1344 days ago [-]
just what i need. thank you.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 00:52:07 GMT+0000 (Coordinated Universal Time) with Vercel.