diff --git a/lorem-ipsum2.php b/lorem-ipsum2.php index d6e4906..d136687 100644 --- a/lorem-ipsum2.php +++ b/lorem-ipsum2.php @@ -40,4 +40,13 @@ class LoremIpsum2 extends AnotherClass { return $this->loremIpsum->getSum(); } + + public function getSomeStuff(): array + { + return [ + 'key1' => 'value1' + 'key2' => 'value2' + 'key3' => 'value3' + ]; + } } diff --git a/readme.rst b/readme.rst index 540bf54..eeaed27 100644 --- a/readme.rst +++ b/readme.rst @@ -1,6 +1,10 @@ Vim introduction workshop ========================= +.. contents:: + +This information can be found at https://github.com/DanielSiepmann/vim-introduction-workshop + Welcome ------- @@ -26,8 +30,8 @@ Run `vim lorem-ipsum.md` and type `:set number` to activate line numbers. If you quit Vim and re open the file, line numbers are gun. Settings adjusted within a session are not persisted. We get back to that later. -The concepts ------------- +The modes +--------- We now have the basics, let's learn some basic concepts. @@ -145,15 +149,18 @@ Vim has a huuuuge documentation on board. This can be accessed via `:help`. The help consists of a guide, reference, topics and plugins. -Code navigation Part 1 ----------------------- +Code navigation +--------------- + +1 Motions +^^^^^^^^^ Let's check out `:help object-motions` to get further movements. TASK: `vim lorem-ipsum.php` and navigate to the 2nd method via `]]` -Code navigation Part 2 Plugins ------------------------------- +2 Plugins +^^^^^^^^^ There are a bunch of plugins and even some plugin manager to choose from. @@ -163,8 +170,8 @@ To navigate within Code I use CTRLP and Tagbar in combination with Universal Cta * TASK: Check out the benefits, run `nvim lorem-ipsum.php` and type in `,b`. -Code navigation Part 3 Go to definition ---------------------------------------- +3 Go to definition +^^^^^^^^^^^^^^^^^^ Vim provides support for tags out of the box. Using `CTRL+]` we can jump to the definition of something. @@ -189,6 +196,142 @@ this can be combined with either a count as prefix, or a motion as suffix. In our case we want to change text within `()` as this is the condition in PHP. We can achieve this by typing `ci(` within the braces. +Editing remote files +-------------------- + +Vim implements different protocols and can open .gz or .zip files out of the box. +Also scp:// and other protocols are support. This way one can edit remote files from +local computer using his Vim. + +To open a remote file type ``vim scp://daniel-siepmann.de/apps/staemme/allys.py``. + +Or from within vim ``:e scp://daniel-siepmann.de/apps/staemme/allys.py``. + +See ``:help scp`` + +Also you can open files under the cursor with system settings using ``gx``. To open a +file under cursor with vim use ``gf``. + +TASK: Edit the file +https://tmp.daniel-siepmann.de/events/nca18/workshop-vim/example.html with vim. + +Vimrc +----- + +Vim will load specific files during startup and in specific circumstances. The main +file is ~/.vimrc on load. To persist settings, e.g. turned on line numbers, write +them down into the file. + +Like shell scripts, the file consists of Vim commands. E.g. turning line numbers on +results in ``:set number``, so write ``set number`` to the file. + +This way you can tune Vim to *YOUR* editor. You will not find two Vim users out there +with the same setup. Vim is always *YOUR* editor. + +Completion +---------- + +Wait, an editor has completion? Yes, and Vim has a lot! + +See: ``:help ins-completion`` It's a new mode! You can insert the mode inside the +insert mode by typing ``CTRL+x`` followed by the completion mode. + +TASK: Insert the word "hello" right here, using completion: + +TASK: Insert the filename "lorem-ipsum2.php" right here, using completion: + +TASK: Insert this chapter name right here, using completion: + +The registers +------------- + +Vim comes with a lot of "clipboards". You have installed some fancy application for +that? No need inside Vim. Clipboards within Vim are called registers. And there are a +lot of them. Some are auto filled, some are up to you. + +See ``:help registers`` You can copy stuff from within a file using ``"yyy`` or +``"ayy`` where ``"a`` and ``"y`` is the register to copy to and ``yy`` is the motion, +yank current line. As always, this can be combined with already known motions. + +To paste from a register, use ``"yp`` where ``"y`` again is the register and ``p`` or +``P`` is the paste after or before. + +TASK: Yank this line and add it to "The dot". + +TASK: Yank the first paragraph of "The registers" and paste if after this sentence. + +The dot +------- + +Last time I didn't mention the "dot". Once you learn to make atomic operations within +Vim, the dot becomes a huge productivity increase. He will repeat the last atomic +operation, e.g. you insert a comma to the end of a line, you can repeat that. + +TASK: Add a comma at the end of the first array entry within lorem-ipsum2.php and +repeat the change for the two following lines. + +Macros +------ + +Some might already know macros from Microsoft Excel or other editors. Vim also comes +with editors. A single macro is just a recorded set of keystrokes which can be +re-played. + +Each macro is saved into a register. Thus it can be saved, loaded and modified. + +The change done within "The dot" section can be achieved using a macro. + +To record a macro type ``qq`` where the first ``q`` starts the recording and the 2nd +``q`` defined the register. + +To replay a macro type ``@q`` where ``@`` starts the playback and ``q`` is the +register. As most of the time you can prefix the playback with a count, e.g. ``2@q`` +will repeat macro ``q`` two times. + +TASK: Repeat the task from "The dot" using a macro. + +Settings Part 2 +--------------- + +We now should now all we need to work effectively with Vim. Still we didn't cover +settings very well. We know how to show line numbers and how to store settings. But +what kind of settings do we have, what can we achieve with settings? + +Syntax highlighting +^^^^^^^^^^^^^^^^^^^ + +E.g. add the following to highlight hearts in red: + + hi ERROR ctermfg=9 + match ERROR /♥/ + +TASK: Highlight the word TYPO3 in orange. +Tip: Color code for orange is 214 + +See: ``:help hi`` ``:help match`` + +Autocommands +^^^^^^^^^^^^ + +You know events from Symfony, or signals / slots from TYPO3? You will love +autocommands in Vim. + +See: ``:help autocommand`` + +Workflows +--------- + +Now some workflows from my daily work within Vim. + +Linting +^^^^^^^ + +Executing tests +^^^^^^^^^^^^^^^ + +Rendering docs +^^^^^^^^^^^^^^ + What's next? ------------