Commit Graph

97 Commits

Author SHA1 Message Date
9d756c2748 zsh:alias: Add duration that formats seconds 2024-09-20 16:29:51 +02:00
61f1a7ee9b vim:keys: Cycle spelllangs only between en & de
If :h 'spelllang' is something else, do nothing.

A possible future improvement could be to keep a list of the languages
to cycle between and first adding any other languages to this list so
that one could return to the original setting. I see this especially
useful when the current setting is `en,de`.
2024-09-18 15:16:42 +02:00
e54b1fc71a vim:keys: WIP fix swapping of ]] and ][
Make ][ and ]] work like they used to with the new functionality through
a workaround.

The problem is that recursive mappings are evaluated at runtime not
"compiletime" - which is what I would need in this situation.

I still want both mappings blocks so that they are not entangled and I
can turn each one off without affecting the other.
2024-08-30 18:14:20 +02:00
034db637c7 vim:keys: Relax [[ maps for different style guides
I use the [[ & etc. mappings to jump between function definitions in C.
This works as long as the braces are put on a newline (like in the
kernel coding style guide).

Relax the mappings for opening braces to jump to unindented lines with
an opening brace to cover also different style guides.
2024-08-30 18:14:20 +02:00
6260c84f3a vim:aucmd: Clear highlights on exiting visual mode
When exiting visual mode I want to clear the highlights of the visual
selection. As this is done automatically now, <Esc> does not need to do
it (and i had problems with keys.vim executing ClearHighlights because
of the script variables).

This reverts commit b3f1a469db ("vim:keys: Clear highlights on
normal-mode Esc").
2024-03-24 16:56:11 +01:00
a4405ee614 vim:keys: Change family of <C-w>gf mappings
The mapping to split and open the file under cursor exists by default
(not as I thought), but is not <C-w>gf but rather <C-w>f.

Swap the mappings for tab and split 'destination'.

Fixes: 8096917ad ("vim:keys: Open file in split with `<C-w>g[fF]`")
2024-03-18 14:39:03 +01:00
8096917ad4 vim:keys: Open file in split with <C-w>g[fF]
Open the file under the cursor in a split window similar to the rest of
the `<C-w>` mappings. I'm surprised this mapping does not exist by
default.
2024-03-07 13:09:41 +01:00
b3f1a469db vim:keys: Clear highlights on normal-mode Esc
Clear highlights from visual selection or word highlighting together
with the highlight of the search results.
2024-02-20 01:21:46 +01:00
58243e0510 *: Update and add TODOs 2024-01-05 16:20:42 +01:00
35536bfa7b vim:keys: VMap <leader>\_ to escape underscores 2023-07-16 13:13:44 +02:00
4e79b369c3 vim:keys: Rewrite mapping functions to use dicts
Instead of having a long list of `map` commands, define a dictionary for
the mappings and take shortcuts were possible.
2023-07-16 13:11:14 +02:00
80e09685e7 vim:keys: Add macro_type for uppercase snakecase 2023-06-27 18:23:02 +02:00
b64e5fef4d vim:keys: Add <leader>g* analog to <leader>*
Do the same thing without the word boundaries.
2023-05-22 15:14:13 +02:00
7065f4b043 keys:vim: Fix display of search count on n & N
When 'lazyredraw' is set the search count is not displayed. This seems
like a bug as it is being displayed if `n` and `N` are not remapped.

Fix this by shortly turning off lazyredraw and resetting it after.

This leads to the new problem that hlsearch is not triggered. It does
stay though after searching with `/<CR>`, so this is a smaller issue I
can fix later.

Found thanks to: https://github.com/kevinhwang91/nvim-hlslens/issues/34
2023-05-21 16:01:37 +02:00
848df05810 vim:keys: Fix <Tab>/<C-I> confused mapping
In a terminal with libtermkey support (e.g. my st build), <Tab> and
<C-I> can be differentiated.

Because of that the keys have to be mapped explicitly.
2023-05-12 12:06:46 +02:00
5f20d6d26f vim:keys: Respect 'foldopen' on remapped movements
Execute 'zv' depending on the existence of the equivalent movement type
in 'foldopen'.
2023-05-12 12:05:20 +02:00
f18cc6f05a vim:keys: Open folds on remapped movement commands
See 'foldopen':

> NOTE: When the command is part of a mapping this option is not used.
> Add the |zv| command to the mapping to get the same effect.
2023-05-12 12:04:43 +02:00
7462b5a7af vim:keys: Remove <C-U> uses behind <Cmd>
<C-U> is not needed when using <Cmd> for visual mappings.

Fix: fc9874bf97 ("vim:keys: Use <Cmd> for plain command mappings")
2023-03-22 13:19:41 +01:00
3066eed1c7 vim:keys:TODO: Fix search results center mappings 2023-02-27 14:09:32 +01:00
3fac79115f vim:keys: Fix &spell toggle mapping
I don't if something changed or if this was broken from the get to, but
now it is fixed.
2023-02-27 11:02:47 +01:00
fc9874bf97 vim:keys: Use <Cmd> for plain command mappings
<Cmd> executes the command directly in the current mode without changing
to command-line mode and triggering Cmdline{Enter,Leave}.
2023-02-27 10:59:41 +01:00
a4c6e4ebfd vim:keys: Center hunk after moving with gitgutter 2023-02-23 14:47:59 +01:00
44194bd09c vim:keys: Expand visual selection on <leader>[jk]
Add two vmaps that call ExpandVisualSelection() for the appropriate
direction.

That expands the selection over all directly following lines in the
given direction that contain the current selection at the same position.

Example:

```
 - TODO: ...
 - TODO: ...
 - TODO: ...
```

In visual block one can select `TODO: ` on the first line and then call
`ExpandVisualSelection(1)` which results in a block selection that spans
over all other TODOs as well.
2023-02-15 16:44:17 +01:00
b7dcc1f79c vim:keys: Map real <C-BS> to delete one word
Map <C-BS> (i.e. Ctrl-Backspace) to delete one word in insert mode & co.
as it is properly recognized in some terminals implementing [fixterm][1]
(e.g. kitty and patched st).

Keep the <C-H> mapping for other terminals but reuse the <C-BS> mapping.

[1]: http://www.leonerd.org.uk/hacks/fixterms/
2023-02-15 14:30:52 +01:00
a05d99df95 vim:keys: Add <leader>v/ as vmap too
Just escape visual mode and reuse the existing normal-mode mapping.
2023-02-15 14:28:35 +01:00
1d58eb729d vim:keys: Add <leader>* vmap to ripgrep selection
Similar to <leader>* in normal mode, set the search pattern to the
visual selection and start a ripgrep search.

To not mess up the commandline, potential quotes that are the same as
the ones used around the string need to be escaped. As this is only
possible with double quotes, a second layer of backslash escaping is
needed as well.

Because of that, **before** escaping backslashes and double quotes, all
backslashes need to be escaped a second time. The other way around would
result in two backslashes in front of each double quote, which would
miss the whole point entirely.

In addition GetVisualSelection needed to be expanded to first reselect
the visual selection for it to work in the new mapping.
2023-02-15 14:26:05 +01:00
1933218756 vim:keys: Center search results after N too
Forgot that one.
2023-02-15 11:37:07 +01:00
8e71a3f12e vim:keys:vmap *: Center search results
Center search results by further evaluating mappings in {rhs}.
2023-02-15 11:37:00 +01:00
9f3b9ac79a vim:keys: Save unnamed reg when getting selection
Fix that the mappings modified the unnamed register.
2023-02-15 11:35:50 +01:00
647a022782 vim:keys: Group together * mappings in the code 2023-02-15 10:52:06 +01:00
be763b9ff2 vim:keys: Center search on <CR> too
In addition to center the cursor-line on `n` do it right after accepting
the search as well.
2023-02-13 15:14:30 +01:00
11fc486768 vim:keys: Fix search result centering mapping
The cursor should be vertically centered **after** we moved to the next
search result.
2023-02-13 14:55:41 +01:00
fc04a6a682 vim:keys: Add leader mappings to switch the case
I find myself quite often to type `gUl` but find that it has quite some
brain overhead. We will see, if these mappings aid in this regard.
2023-02-09 14:32:15 +01:00
6930d9b2d9 vim:keys: Fix <leader>grc when on end of hash
When the cursor is on the last character of the hash (e.g. after
pasting), the mapping would break and insert the commit subject behind
the next word.

Fix this by using `viw<Esc>` which places the cursor on the end of the
current word independent of the placement of the cursor.
2023-01-23 19:52:07 +01:00
93e8517ab2 vim:keys: Center next search result on n 2023-01-21 02:01:57 +01:00
e51427143f vim:keys: Format paragraph with <C-q> in INSERT
`i_CTRL-Q` is not really useful anyways:

> Same as CTRL-V.
> Note: Some terminal connections may eat CTRL-Q, it doesn't work then.
> It does work in the GUI.
2023-01-11 21:42:39 +01:00
fed62f3b6d vim:keys: Keep the cursor position when formatting
Quickly formatting multiple paragraphs is now not as simple as before,
but the benefits still prevail.
2023-01-08 14:04:13 +01:00
06c0d17fe4 vim:keys: Add <leader>v/ to search in visual selec 2022-12-29 19:55:02 +01:00
616988560a vim:keys: Add mapping for commit amending
Map `<leader>gca` to fugitives `G commit --amend`, as I use that quite
often.

Also change the normal commit mapping to use double `c`s for unambiguity
between the mappings and as I already got the habit of pressing `c`
twice to skip waiting `timeoutlen` (As the mapping was already
ambiguous with `<leader>gcd` for `:Gcd`).
2022-12-28 13:55:08 +01:00
dacd6d5de0 vim:keys:<leader>": Convert only pairs of quotes
When converting double to single quotes with `<leader>"`, only pairs of
quotes should be converted. This lowers the false positive rate by
trying to make sure that the double quotes are really used for string
quotation and not for something else (e.g. exactly these mappings).
2022-12-28 13:53:33 +01:00
fe669c0aa7 vim:keys: Add visual equivalent of substitute maps 2022-12-28 13:23:05 +01:00
731a290d7b vim:keys: Map <leader>" to s/"/'/g
I prefer single quotes when a language supports them for normal strings
(e.g. python & vimlang). Add this mapping for a quick conversion.
2022-12-28 12:57:13 +01:00
fd1cb36437 vim:keys: Rephrase wrap-move comment s/real/normal 2022-12-28 12:32:55 +01:00
46ec34826e vim:keys: Map display movements only when wrapping 2022-12-27 04:24:21 +01:00
3a7f06256f vim:keys: Keep selection when changing indentation 2022-12-25 22:42:22 +01:00
4c111c0e3b vim:keys: Make display-line movements the default
I'd rather have the movement mappings behave on display-lines to make it
easier when navigating in very long lines.
2022-12-22 10:55:16 +01:00
7a4e8e6df2 vim: Set only local value when cycling spelllang
When having multiple windows open, I want it to change only for the
current buffer/window.
2022-11-21 15:18:13 +01:00
b698873d2c vim:keys: Fix BCommits and G blame mapping clash 2022-10-21 00:52:45 +02:00
a94f72c4d9 vim:keys:<leader>*: Start vim's search too
Additionally to start the search with ripgrep, start a vim search as
well. That way navigation between search results in the opened file is
easier.

The register is modified directly and hlsearch is turned on manually
instead of using the builtin `*`, so that the cursor does not move to
the next result in the current file.
2022-10-21 00:45:47 +02:00
1aa6266200 vim:keys: Fix <leader>* for words starting w/ b
`<C-R><C-W>` inserts the cword, but skips over any character that were
already typed. This broke the search for words beginning with a `b`.
2022-10-21 00:39:21 +02:00