I'm trying to bind my Tmux Prefix to Space - w but can't seem to unbind the C prefix.
That's where i'm stuck
unbind C-b
set -g prefix C-Space
bind Space send-prefix
How can I bind the prefix to Space - w
You can't bind multiple character combinations to perform an action in tmux (at least not up to current version 2.0).
That means binding space + w won't work.
If the above holds true, you might wonder how come ctrl key combinations work, for example Ctrl-b? The reason for this is that Ctrl-b is a single character, even though 2 keyboard keys are required to generate it.
Here's a good ascii table that shows which control keys are mapped to which ascii values. Example: Ctrl-b has value 2.
Related
This is about Zsh 5.5.1.
Say I have a glob pattern which expands to exactly one file, and I would like to assign this file to a variable. This works:
# N: No error if no files match. D: Match dot files. Y1: Expand to exactly one entry.
myfile=(*(NDY1))
and echo $myfile will show the file (or directory). But this one does not work:
myfile=*(NDY1)
In the latter case, echo $myfile holds the pattern, i.e. *(NDY1).
Of course I could do some cheap trick, such as creating a chilprocess via
myfile=$(echo *(NDY1))
but is there a way to do the assinment without such tricks?
By default, zsh does not do filename expansion in scalar assignment, but the option GLOB_ASSIGN could help. (This option is provided as for backwards compatibility only.)
local myfile=''
() {
setopt localoptions globassign
myfile=*(NDY1)
}
echo $myfile
;#>> something
Here are some descriptions in zsh docs:
The value of a scalar parameter may also be assigned by writing:
name=value
In scalar assignment, value is expanded as a single string, in which the elements of arrays are joined together; filename expansion is not performed unless the option GLOB_ASSIGN is set.
--- zshparam(1), Description, zsh parameters
GLOB_ASSIGN <C>
If this option is set, filename generation (globbing) is performed on the right hand side of scalar parameter assignments of the form 'name=pattern (e.g. foo=*'). If the result has more than one word the parameter will become an array with those words as arguments. This option is provided for backwards compatibility only: globbing is always performed on the right hand side of array assignments of the form name=(value) (e.g. foo=(*)) and this form is recommended for clarity; with this option set, it is not possible to predict whether the result will be an array or a scalar.
--- zshoptions(1), GLOB_ASSIGN, Expansion and Globbing, Description Of Options, zsh options
Main question
I would like to add powerline characters at the start and at the end of the selected completion, like this:
Started the completion menu by inserting c and pressing the TAB key.
Moved right in the completion menu by pressing the right arrow key.
Moved down in the completion menu by pressing the down arrow key.
Is there any way to make zsh look/behave like in the pictures?
Note
Added powerline triangle + blank character at the beginning and blank character + powerline triangle at the end should somehow be accounted when columns are created to keep the alignment correct.
Bonus
Add 2 blanks at the beginning of every completion in the list, so that when the completion is selected it doesn't look like the text was moved to the right.
( This issue can be seen by comparing the completion with and without the selection. )
Alternative question
In case that previously explained behavior is impossible to get without changing the zsh source code, is it at least possible to add powerline triangle only at the end of the selected completion?
My unsuccessful attempts
I have tried using the lc, rc, and ec variables in the list-colors style but that didn't help:
Completion list was badly aligned and it created all kinds of visual problems.
Symbols were inserted in all elements of the completion list, not just the selected one.
I have also tried using the ma variable, but I couldn't properly insert a character at the beginning:
The variable expects only a number that represents a color and it is probably wrapped in some escape sequences, so the output did not look as expected.
This works for me.
zstyle ":completion:*:default" list-colors ${(s.:.)LS_COLORS} "ma=48;5;153;1"
Uses my LS_COLORS and then ma sets the background of my selection to bold and color 153 from https://jonasjacek.github.io/colors/.
Found from https://www.zsh.org/mla/users/2010/msg00811.html
I'd like to know all of the special uses of the escape character in Unix terminals, by which I mean the character \e. I know about colors and \ec which clears the screen in a scrollable terminal, what others are there and what do they do? For instance, what does this string do: echo -e "\e[3;12r\e[3H"?
That particular example (both by the way are VT100 escapes where \e is used in some shells to mean the ASCII escape character):
sets scrolling margins to lines 3 through 12 (starting from 1), and
moves the cursor to the beginning of line 3 (putting it at the top of the scrolling margins)
By the way, \ec resets the terminal. Clearing the screen is just one of several things done.
Further reading:
XTerm Control Sequences
vt100.net
In Mac OS X Ctrl+Cmd+g replaces a word in the whole file. What's the alternative to that in Linux?
I tried to check the keybindings, but no luck.
You can use Command+. to active the Key Binding Resolver to look for the actual function bound to the shortcut on your Mac and search the function on Linux Atom to figure out what the key combination is.
Alternatively, your can search all your key binding here (see screenshot below) which accept both key combination and command name.
Using ctrl + e when you are on a word will open the find and replace panel for this word.
Then use tab to go into the "replace in current buffer field", type your replacement word.
Finally, hit enter to replace the occurrences one by one, or ctrl + enter to replace all.
I've just started programming in R and have discovered you make comments by using #.
I've never been too concerned with this key as I normally program using Matlab or C++.
I'm using Windows 8 on a Macbook Pro so the keyboard doesn't have a designated # key and the shortcut for an apple keyboard for the # key (which is alt+3) doesn't work.
I haven't been about to find a solution for this. Thanks.
On an Apple Keyboard, whilst using a third-party OS such as Windows, you type the # symbol by pressing the 2nd Alt key + 3.
The first (left hand side) Alt key doesn't have a shortcut function.
This applies to all programs (Visual Studio, R, Word etc).
When using Windows the keyboard reverts to a standard Windows keyboard layout, which is different from the Mac layout for some keys. So the hash key is mapped to what is marked as the backslash key \, to the left of the return, and the # key is mapped to the double inverted comma.
I've got an Apple "Magic Keyboard" on UK settings and can get the hash symbol by holding Command and pressing the Backslash key
I'm using Ubuntu Xfce on a Macbook, and none of the above answers helped me at all. Then I found I could type a hash character using SHIFT + RIGHT ALT + = twice. It makes sense, because a hash character looks like two '+' signs.
The RIGHT ALT key is listed in my Settings -> Keyboard -> Layout as the 'Compose Key', so if it doesn't work, check what your Compose Key is and try that.