Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

How do i set up a key binding in fish, so that fish understands not to execute the bindingstring after appending it to commandline but just appending it as string to commandline.

I want to set up a binding that appends | less by pressing i.e. Alt + Y.

It seems that by default fish understands the command to automatically execute.

I.e. When i type ls on commandline and then would press Alt + Y it only should complete the command to look like this ls | less but still not executing it.

i'm trying something like this

bind \ey " \| less"

But fish doesn't accept my syntax

share|improve this question

1 Answer 1

up vote 2 down vote accepted

To append the |less at the end of the command line it's already a default function in fish, using the Alt-p

http://fishshell.com/user_doc/index.html#editor

You can create a function to do that if you prefer:

function __fish_less
       commandline -i -- "|less"
end

bind \ey __fish_less

I'm not sure if you need to escape the | make some tests...

EDIT:

Regarding append, the commandline help say:

* -a or --append do not remove the current commandline, append the specified string at the end of it
* -i or --insert do not remove the current commandline, insert the specified string at the current cursor position
* -r or --replace remove the current commandline and replace it with the specified string (default)

So to append instead of inserting a command, I guess you should use -a

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.
{"cc_re__cc_re__cc_by_sa_3_0": ["                  <li><a href=\"//area51.stackexchange.com\" title=\"proposing new sites in the Stack Exchange network\">Area 51</a></li>\r\n                        <li><a href=\"//careers.stackoverflow.com\">Stack Overflow Careers</a></li>\r\n                    \r\n                </ol>\r\n            </td>\r\n    </tr>\r\n</table>\r\n                </div>\r\n            </div>\r\n\r\n            <div id=\"copyright\">\r\n                site design / logo &#169; 2015 stack exchange inc; user contributions licensed under <a href=\"http://creativecommons.org/licenses/by-sa/3.0/\" rel=\"license\">cc by-sa 3.0</a>                   with <a href=\"http://blog.stackoverflow.com/2009/06/attribution-required/\" rel=\"license\">attribution required</a>\r\n            </div>\r\n            <div id=\"svnrev\">\r\n                rev 2015.1.25.2220\r\n            </div>\r\n                <div id=\"additional-notices\">\r\n                    Ubuntu and Canonical are registered trademarks of Canonical Ltd.\r\n                </div>\r\n            \r\n        </div>\r\n    </div>\r\n    <noscript>\r\n        <div id=\"noscript-wa"], "copyright__copyright__copyright": ["--insert do not remove the current commandline, insert the specified string at the current cursor position\n* -r or --replace remove the current commandline and replace it with the specified string (default)\n\nSo to append instead of inserting a command, I guess you should use -a\n\nshare|improve this answer\n\nYour Answer\n\n\u00a0\ndiscard\n\nBy posting your answer, you agree to the privacy policy and terms of service.\n\nNot the answer you're looking for? Browse other questions tagged or ask your own question."]}