1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
*novim_mode.txt* Vim keybindings for 'conventional' editor behaviour
NOVIM MODE DOCUMENTATION
==============================================================================
CONTENTS |novim-mode-contents|
Introduction ................................... |novim-mode-introduction|
Installation ................................... |novim-mode-installation|
Usage ................................................. |novim-mode-usage|
Keybindings ..................................... |novim-mode-keybindings|
Interoperability ........................... |novim-mode-interoperability|
Known Issues ................................... |novim-mode-known-issues|
References ................................. |novim-mode-known-references|
==============================================================================
1. Introduction *novim-mode* *novim-mode-introduction*
Novim-mode makes Vim behave like a 'conventional', non-modal editor. Where key
presses default to inserting text, `CTRL+S` saves the file and so on. In the
same way that 'vim-mode' plugins are available for other editors to enable
Vim-style keybindings, so too is 'novim-mode' available in Vim to enable
'traditional'-style keybindings.
Vim is one of the most battle-tested, ubiquitous and extensible editors
available. If your muscle memory is already fluent with non-vim keybindings
then you will be able to instantly benefit from all that is valuable about
Vim without the learning curve of Normal Mode.
==============================================================================
2. Installation *novim-mode-installation*
Use your favourite plugin manager, eg, for vim-plug; >
Plug 'tombh/novim-mode'`
<
==============================================================================
3. Usage *novim-mode-usage*
Most keybindings should work as you might expect from, say Atom or Sublime
Text; `SHIFT+ARROW` to select and `CTRL+C/V` to copy/paste. But don't expect
Vim to completely bend to your will, it is still useful to familiarise yourself
with some of Vim's basic concepts. For instance you may on occasion find
yourself stuck in a particular Vim mode, like when pasting text without 'Paste
Mode' then inserted text can trigger random mappings. In such case `CTRL+Q`
may not kill Vim and you'll need to find a way of getting to Normal Mode and
typing `:q` then `<RETURN>`. Such is life with Vim, this plugin is highly
unlikely to ever change that. (BTW conventional pasting is on by default,
but to exit an errant 'Paste Mode' use `:set nopaste`.)
If you are new to Vim, then perhaps the only remaining confusion after installing
this plugin will be about where files go when you open new ones. This question
will be answered by Vim's concept of 'buffers'. You may wish to install something
like [vim-buftabline](https://github.com/ap/vim-buftabline) to give a familiar
list of open files along the top of the editor.
==============================================================================
4. Keybindings *novim-mode-keybindings*
Many terminals default to intercepting `CTRL+S` to suspend output, if so you
will need to disable this behaviour. Most terminals will also bind `CTRL+Q`
to undo the suspend, useful, but you will also need to unmap that, or change
the mapping in this plugin for quitting Vim.
`CTRL`-based shortcuts are paired with uppercase letters here because Vim
does not recognise the difference between cases when using `CTRL` combinations
and documenting in uppercase implies something of this distinction.
General editor shortcuts
* `CTRL+N`: Open a new file.
* `CTRL+O`: Open an existing file.
* `CTRL+S`: Saves the current file.
* `CTRL+G`: Goto line.
* `ALT+;`: Vim command prompt.
* `ALT+o`: Replaces native `CTRL+O` to give one-off Normal Mode commands.
Pane controls
* `ALT+ARROW`: Change pane/buffer focus.
* `CTRL+W`: Closes current pane-like thing. Also closes associated
quickfix and location panes.
Selecting, copy and paste
* `SHIFT+ARROW`: Select text
* `CTRL+C`: Copy selection or copy line if no selection.
* `CTRL+X`: Cut selection or cut line if no selection.
* `CTRL+V`: Paste current selection.
* `CTRL+A`: Select all.
* `CTRL+D`: Select word under cursor. Use something like vim-multicursors
[1] for multi cursor support.
* `CTRL+L`: Select line under cursor, repetition selects more lines.
Indenting
* `TAB` or `ALT+]`: Indent current line or selected text.
_[`TAB` currently broken]_
* `SHIFT+TAB` or `ALT+[`: Unindent current line or selected text.
Finding, replacing
* `CTRL+F`: Find text. When text is selected that selection is searched
for.
* `F3` and `SHIFT+F3`: Find next and previous occurences.
* `CTRL+H`: Find and replace. `[FIND]` and `[REPLACE]` are prepopulated.
Undoing
* `CTRL+Z` or `CTRL+U`: Undo.
* `CTRL+Y`: Redo.
Other text manipulation tricks
* `CTRL+LEFT/RIGHT`: Move cursor per word (works in selection as well).
* `CTRL+ALT+k`: Delete current line.
* `CTRL+ALT+k`: Duplicate current line.
* `CTRL+UP/DOWN`: Move current line or selected text up/down.
==============================================================================
5. Interoperability *novim-mode-interoperability*
When adding a new binding of your own that needs Normal mode, you should use
`<C-O>` before the targeted command, for example; >
" Ensure CtrlP doesn't get overridden by autocomplete in insertmode
inoremap <C-P> <C-O>:CtrlP<CR>
<
Overriding or disabling shortcuts in this plugin can be done in several
ways. The simplest way is to use: >
let g:novim_mode_use_shortcuts = 0
inoremap ... custom mapping ...
call novim_mode#StartNoVimMode()
<
Alternatively you can unmap a mapping using commands such as `nunmap`,
`iunmap`, `sunmap`, etc.
Lastly shorcuts are also grouped roughly under the headings described above,
so you may be able to disable one of the
following: >
let g:novim_mode_use_general_app_shortcuts = 1
let g:novim_mode_use_pane_controls = 1
let g:novim_mode_use_copypasting = 1
let g:novim_mode_use_indenting = 1
let g:novim_mode_use_finding = 1
let g:novim_mode_use_undoing = 1
let g:novim_mode_use_text_tricks = 1
" Small fixes to HOME and PAGEUP behaviour
let g:novim_mode_use_editor_fixes = 1
" Allows scrolling through wrapped lines one visual line at a time
let g:novim_mode_use_better_wrap_navigation = 1
<
==============================================================================
6. Known Issues *novim-mode-known-issues*
* There seems to be a bug where only `SHIFT+TAB` and not `TAB` works for
indenting during selection mode. Again this may be fixed by simulating
selection mode with Visual mode in the future.
* When using `novim_mode_use_better_wrap_navigation`, then END key does not
go the end of a visual line, but to the end of the physically represented
line.
* Mapping `<CTRL+m>` internally means mapping `<RETURN>`. This is a
throwback to Vim's days as a pure terminal application.
* `CTRL+BACKSPACE` internally represents <CTRL+H>, which can be annoying.
Again this is a throwback to Vim's days as a pure terminal application.
==============================================================================
7. References *novim-mode-references*
[1] https://github.com/terryma/vim-multiple-cursors
|