Comments (19)
keyboard chords are not currently supported in reedline, although we'd love to support them.
from reedline.
The vi editing modes are the last thing for me to more extensively try out nushell, otherwise the other parts feel very nice to me. Basically I would love to see the vi editing mode to be on par with zsh
. Some of the problems/missing pieces have been listed above, but I'll add my observations:
B
is completely wrong.abc def ghi
with the cursor at the end, pressingB
gets to theg
and thena
, completely skipping thed
(meanwhileW
seems to be correct)$
goes beyond the last character, leading to e.g.$x
doesn't delete the last character in the line- count on operations is missing e.g.
3f,
f/F/t/T
seems to be implemented in0.65.0
, but doesn't work on any chars that can otherwise have other meaning, e.g. numbers,^
,$
I would love to make these changes myself or at least dig into what the problems are, but unfortunately I won't have much free time for quite a while 😢
from reedline.
Ctrl bindings should be possible
from reedline.
mabye these keybindings are common knowledge to most people but for me, it would be good to have a description of what you're requesting other than just having keybindings by name. what do you want them to do? Also, have you tried defining them yourself? keybindings are pretty powerful in nushell these days. https://www.nushell.sh/book/line_editor.html#default-keybindings
from reedline.
- I'd like to see
r
replace current character. - I often use
x
(cut char at cursor)p
(paste) to move a character one space forwards, butp
seems to just paste random stuff, not the charcter I justx
d. - I use
C
(capital C) for "change until end of line" f
<some_char> - move forward to <some_char>F
same as above but move backwardsctrl+d
- exit the shell
All these were working until I updated today, now I feel like I'm disabled without my shortcuts :p
Also thank you very much for this great product.
from reedline.
mabye these keybindings are common knowledge to most people but for me, it would be good to have a description of what you're requesting other than just having keybindings by name. what do you want them to do? Also, have you tried defining them yourself? keybindings are pretty powerful in nushell these days. https://www.nushell.sh/book/line_editor.html#default-keybindings
u don't use vim?
from reedline.
-
normal mode
shift+s
clear entire line and switch to insert modeshift+i
prepend to line(switch to insert mode). It's similar toshift+a
but in the start of the line.
-
insert mode
ctrl+w
move right one word similar toctrl+f
except it "moves to the right, entire line"
-
search mode
Esc
exit search mode
I haven't included any of @matiu3 's suggestions do avoid duplication but they are just as important.
Also, I'm not sure if it's possible to implement Shift+Backspace
but it'd be nice too.
from reedline.
I think, as things are, one would need to manually add all these to reedline
and there's a lot of work there.
Perhaps an easier solution would be to make it possible to swap out reedline
with readline
or zle
, both of which already have the keybindings programmed ?
Or is it possible for us users to manually program these into the config file ? I get the feeling it's not that fine grained. If it is, please get us started and we can collaborate in filling it in.
from reedline.
Or is it possible for us users to manually program these into the config file ? I get the feeling it's not that fine grained. If it is, please get us started and we can collaborate in filling it in.
Can you please tell me how to use multiple edits?
{
name: clear_line
modifier: shift
keycode: char_c
mode: vi_normal
event: {
edit: cleartolineend
}
}
In the above keybinding I'm in normal mode and then I clear to the end of the line, now I want to switch to insert mode. How do I do that? Most of the bindings I need can be made if you just let me know how to switch between normal & insert modes while configuring a binding.
Or maybe paste the configuration for Shift+a
which is already present and works fine although I couldn't find it anywhere in the source code of this repo.
from reedline.
u don't use vim?
never.
... how to switch between ...
Have you tried adding multiple edit
events like the documentation shows? https://www.nushell.sh/book/line_editor.html#keybindings. Maybe adding an insertchar
or insertstring
will switch the mode. I'm not sure. @elferherrera is the keybinding guru, maybe he knows.
if you do keybindings list
you can see what events/etc are available in keybindings.
most all of the vi stuff is defined here https://github.com/nushell/reedline/tree/main/src/edit_mode/vi
from reedline.
u don't use vim?
never.
... how to switch between ...
Have you tried adding multiple
edit
events like the documentation shows? https://www.nushell.sh/book/line_editor.html#keybindings. Maybe adding aninsertchar
orinsertstring
will switch the mode. I'm not sure. @elferherrera is the keybinding guru, maybe he knows.if you do
keybindings list
you can see what events/etc are available in keybindings.
I've gone through the docs and also adding multiple edit statements including insert
, insertstring
... but there's no way I'm dropped to insert mode. I also tried sending event i
(switch to insert mode) but helpless.
from reedline.
Let's work on a single binding first as an example:
{
name: prepend
modifier: shift
keycode: char_i
mode: vi_normal # Options: emacs vi_normal vi_insert
event:[
{ edit: MoveToLineStart }
{ edit: InsertString,
value: "" }
]
}
}
Right now this only half works. It takes me to the start of the line but doesn't drop me into insert mode, not even keycode: insert
. Also the examples mentioned in the docs are mostly for emacs so don't help much.
from reedline.
@sholderbach also understands the vi configuation too. He may be able to help also.
from reedline.
The command parser for the typical vi sequences is hand built at the moment and not amenable to configurable keybindings yet. Only ctrl sequences are handled by the configurable keyparser used with emacs style mode.
There is definitely work to be done on vi mode to get more of the commands and movements to parity. I don't know if parity in configurable keybindings for vi (a la "nmremap whatever") is a reasonable goal at the moment.
from reedline.
Hey, @sholderbach I was just taking a look at the reedline's source code. I'm still a rust beginner but looking at the source code I wondered why some of the bindings are missing or why they haven't been implemented and maybe there's a way to quickly implement them.
As an example I thought the since the behavior of shift+i
is similar to that of shift+a
, then a little copy pasting got me to this:
https://github.com/zim0369/reedline/commit/5621bf829d969e38a72925aa1216c6bcb127a3b5
Would this commit successfully implement the vim's shift+i
behavior?
from reedline.
I think there is one extra step, to make sure it switches into insert mode but I am happy to walk you through a PR. Thanks for giving it a shot!
from reedline.
insert mode
ctrl+w move right one word similar to ctrl+f except it "moves to the right, entire line"
Hey @fdncred , Is it possible to make this binding in config.nu
without having to make any changes to "reedline"?
from reedline.
I will close this issue once 'x', 'w' & 's' are fixed and 'e', '?', 'S', 'r', 'R', 'y', 'around' & 'inside' are implemented.
from reedline.
Many vim users (myself included) rebind <ESC>
or Ctrl+[
to a chord like "jk" or "jj".
How difficult would it be to modify the keybindings keycode property to accept a list of keybinds?
from reedline.
Related Issues (20)
- Select All shortcut with Ctrl A HOT 1
- More granular config for triggering tab completions, and inserting completions HOT 2
- Event for accepting a menu item HOT 3
- Problemes autocompleting/suggesting with underscore or other characters HOT 1
- Why not a Helix Mode, to go along with Vi and Emacs? HOT 3
- Using `SHIFT+ENTER` to enter newline instead of submitting command HOT 5
- POLL_WAIT hurts user experience HOT 1
- No operations in `until` will be handled after an `EditCommand` HOT 6
- bracketed paste only works the first time HOT 12
- multiline paste doesn't render text when ending in newline HOT 1
- Open current line in editor with ctrl+x e HOT 1
- IDE style completions menu HOT 3
- Key events are reported incorrectly
- Prompt jumps to end of screen HOT 2
- vi mode `word` definition shouldn't include the period `.`
- Navigating by-argument in addition to by-word HOT 2
- Allow specifying a display label different than the value in a suggestion
- Redraw prompt on resize HOT 6
- Incorrect resolution of cursor position HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reedline.