TASK: Add initial state
This commit is contained in:
parent
5b19bffac3
commit
6d6775ebda
4 changed files with 348 additions and 0 deletions
44
lorem-ipsum.md
Normal file
44
lorem-ipsum.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque accumsan
|
||||
maximus nibh, commodo pellentesque sapien congue sed. Cras suscipit urna sed
|
||||
nisl maximus, vitae dignissim lectus interdum. In non consectetur libero.
|
||||
Maecenas at quam sed est luctus varius. Aenean rutrum, nibh eget malesuada
|
||||
imperdiet, mauris felis gravida orci, vitae tincidunt dolor nunc sit amet
|
||||
tortor. Vestibulum eget rhoncus arcu, ut interdum nulla. Phasellus quis lacus eu
|
||||
purus scelerisque faucibus. In hac habitasse platea dictumst. Nullam efficitur
|
||||
ex a tortor semper sagittis. Suspendisse potenti. Suspendisse vel auctor enim.
|
||||
Sed sed pretium augue, ac commodo nunc. Sed malesuada enim est, non congue velit
|
||||
gravida id.
|
||||
|
||||
Duis suscipit consequat leo, et hendrerit arcu consectetur vel. Maecenas congue
|
||||
porta finibus. Etiam in maximus enim. Curabitur ac dapibus felis, commodo
|
||||
facilisis lorem. Aliquam urna ante, imperdiet non ipsum non, feugiat ornare
|
||||
magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
|
||||
cubilia Curae; Sed vestibulum dolor erat, in posuere ipsum ultricies non.
|
||||
Suspendisse potenti. Maecenas laoreet tincidunt elementum.
|
||||
|
||||
Mauris eros ligula, volutpat non mollis non, mattis ornare quam. Donec et semper
|
||||
mauris. Suspendisse dictum tortor ut massa tristique, ut sagittis elit
|
||||
fermentum. Mauris pellentesque at diam at accumsan. Duis hendrerit tempor
|
||||
sapien, quis faucibus libero sagittis ut. Sed vitae arcu nisi. Nulla ac nibh
|
||||
diam. Suspendisse eget massa euismod, congue lorem a, fringilla nibh. Orci
|
||||
varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus
|
||||
mus. Nullam at quam non diam viverra ultrices ut ac nisi. Sed vel dapibus enim.
|
||||
Mauris rutrum et libero sit amet fermentum. Pellentesque at nulla bibendum,
|
||||
vulputate quam ac, laoreet turpis. Maecenas varius facilisis diam.
|
||||
|
||||
Nam laoreet eros ac orci consequat condimentum. Maecenas dictum felis eget massa
|
||||
imperdiet tempus. Proin viverra id erat in sagittis. Suspendisse id luctus
|
||||
neque. Pellentesque posuere massa vel ex ultricies fermentum. Donec semper
|
||||
sapien sed nunc porta congue. Aliquam elementum tortor non elit interdum, at
|
||||
sagittis mi feugiat. Nunc ultricies nisl velit, eget mollis nulla pulvinar ac.
|
||||
Nam consectetur magna in odio tempus porta. Class aptent taciti sociosqu ad
|
||||
litora torquent per conubia nostra, per inceptos himenaeos.
|
||||
|
||||
Integer ut dapibus ante, eget suscipit enim. Proin bibendum ligula quis
|
||||
malesuada malesuada. Aliquam hendrerit imperdiet lorem, in condimentum tellus
|
||||
varius nec. Donec mattis leo pharetra, vehicula orci vel, tristique ligula.
|
||||
Donec lacinia tincidunt viverra. Etiam imperdiet eu odio laoreet facilisis.
|
||||
Suspendisse non consectetur lacus, vel aliquam mi. Sed eu condimentum eros.
|
||||
Pellentesque dolor nunc, tempor eget gravida nec, mollis vitae mi. Curabitur non
|
||||
eleifend sem. Mauris vestibulum libero a nulla hendrerit gravida. Ut at sem
|
||||
ullamcorper, fringilla erat et, fermentum ante. Fusce a scelerisque velit.
|
53
lorem-ipsum.php
Normal file
53
lorem-ipsum.php
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
namespace Codappix\ExamplePackage\ExampleNamespace;
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 Daniel Siepmann <coding@daniel-siepmann.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Some comment explaining this class.
|
||||
*/
|
||||
class LoremIpsum extends AnotherClass
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $arg1 = '';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $arg2 = [];
|
||||
|
||||
public function __construct(string $arg1, array $arg2 = [])
|
||||
{
|
||||
$this->arg1 = $arg1;
|
||||
$this->arg2 = $arg2;
|
||||
}
|
||||
|
||||
public function getSum(): int
|
||||
{
|
||||
if ($this->arg1 === '+') {
|
||||
return 1 + 2;
|
||||
}
|
||||
|
||||
return 1 - 2;
|
||||
}
|
||||
}
|
43
lorem-ipsum2.php
Normal file
43
lorem-ipsum2.php
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
namespace Codappix\ExamplePackage\ExampleNamespace;
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 Daniel Siepmann <coding@daniel-siepmann.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Some comment explaining this class.
|
||||
*/
|
||||
class LoremIpsum2 extends AnotherClass
|
||||
{
|
||||
/**
|
||||
* @var LoremIpsum
|
||||
*/
|
||||
protected $loremIpsum;
|
||||
|
||||
public function __construct(LoremIpsum $loremIpsum)
|
||||
{
|
||||
$this->loremIpsum = $loremIpsum;
|
||||
}
|
||||
|
||||
public function getSum(): int
|
||||
{
|
||||
return $this->loremIpsum->getSum();
|
||||
}
|
||||
}
|
208
readme.rst
Normal file
208
readme.rst
Normal file
|
@ -0,0 +1,208 @@
|
|||
Vim introduction workshop
|
||||
=========================
|
||||
|
||||
Welcome
|
||||
-------
|
||||
|
||||
First things first, how to start and *quit* Vim.
|
||||
|
||||
To start Vim, just type `vim` into the terminal.
|
||||
|
||||
To exit Vim, try `CTRL+C` like for nearly all CLIs. Vim will display a help message
|
||||
in the bottom left with instructions how to quit Vim:
|
||||
|
||||
Type :qa! and press <Enter> to abandon all changes and exit Vim
|
||||
|
||||
So lets type in `:qa!` to quit Vim again.
|
||||
|
||||
Settings
|
||||
--------
|
||||
|
||||
By default Vim comes with no useful settings. Most developers like line numbers which
|
||||
can be turned on by typing `:set number`.
|
||||
|
||||
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
|
||||
------------
|
||||
|
||||
We now have the basics, let's learn some basic concepts.
|
||||
|
||||
Vim is a mode editor. Most editors are mode less.
|
||||
|
||||
What is a mode?
|
||||
|
||||
NORMAL
|
||||
^^^^^^
|
||||
|
||||
This is the default mode when you start Vim. If you open a file, e.g. `vim lorem-ipsum.md`
|
||||
keys are used to navigate in this file. E.g. use `h`, `j`, `k` and `l` to move the
|
||||
cursor around.
|
||||
|
||||
TASK: Navigate a bit within `lorem-ipsum.md`.
|
||||
|
||||
Press `ESC` from any mode to come back to the `NORMAL` mode.
|
||||
|
||||
VISUAL
|
||||
^^^^^^
|
||||
|
||||
Sometimes you want to highlight something, e.g. for a presentation or to interact
|
||||
with the highlighted parts.
|
||||
|
||||
You can enter different Visual Modes, e.g.
|
||||
|
||||
`v`
|
||||
Will start `VISUAL` mode where you can highlight stuff using the same keys as in
|
||||
`NORMAL` Mode.
|
||||
|
||||
TASK: Highlight line 19.
|
||||
|
||||
`V`
|
||||
`VISUAL LINE` to highlight lines, useful for presentations.
|
||||
|
||||
TASK: Highlight line 19.
|
||||
|
||||
`CTRL+v`
|
||||
`VISUAL BLOCK` to highlight blocks, useful for tables.
|
||||
|
||||
TASK: Highlight column 2.
|
||||
|
||||
INSERT
|
||||
^^^^^^
|
||||
|
||||
Insert some text, keys will be passed through as insertions.
|
||||
|
||||
Enter the `INSERT` mode by one of the following keys:
|
||||
|
||||
`a`
|
||||
Append behind the cursor
|
||||
|
||||
`i`
|
||||
Insert at the cursor
|
||||
|
||||
`A`
|
||||
Append at the end if line
|
||||
|
||||
`I`
|
||||
Insert at beginning of the line
|
||||
|
||||
TASK: Insert todays date at the end of the file.
|
||||
|
||||
REPLACE
|
||||
^^^^^^^
|
||||
|
||||
Replace some text, keys will be passed through as replacements.
|
||||
|
||||
`r`
|
||||
Replaces a single character.
|
||||
|
||||
`R`
|
||||
Switches to `REPLACE` mode.
|
||||
|
||||
TASK: Replace last line with todays date.
|
||||
|
||||
COMMAND
|
||||
^^^^^^^
|
||||
|
||||
Executes commands within Vim, e.g. adjust settings or quit.
|
||||
|
||||
`:`
|
||||
Inserts the command mode. The cursor will be set to the command line.
|
||||
The command mode has auto completion, just press `TAB`.
|
||||
|
||||
TASK: Activate line numbers, quit Vim.
|
||||
|
||||
And there are more Modes.
|
||||
|
||||
Better movement
|
||||
---------------
|
||||
|
||||
So far we now that we can move around in `NORMAL` mode with `h`, `j`, `k` and `l`.
|
||||
There are more keys to move around. E.g.:
|
||||
|
||||
`G`
|
||||
Go to end of file.
|
||||
|
||||
`gg`
|
||||
Go to beginning of file.
|
||||
|
||||
Most movements can be prefixed with a count, that's called Vim Grammar. So to move to
|
||||
Line x type `xG`.
|
||||
|
||||
TASK: Highlight Line 19 by jumping to Line 19.
|
||||
|
||||
Most of the time we are not working with text documents but source code. So how to
|
||||
move efficiently within source code? We will explain the help, to allow you to figure
|
||||
out yourself.
|
||||
|
||||
Help
|
||||
----
|
||||
|
||||
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
|
||||
----------------------
|
||||
|
||||
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
|
||||
------------------------------
|
||||
|
||||
There are a bunch of plugins and even some plugin manager to choose from.
|
||||
|
||||
To navigate within Code I use CTRLP and Tagbar in combination with Universal Ctags.
|
||||
|
||||
* TASK: Check out the benefits, run `nvim lorem-ipsum.php` and type in `,r`.
|
||||
|
||||
* TASK: Check out the benefits, run `nvim lorem-ipsum.php` and type in `,b`.
|
||||
|
||||
Code navigation Part 3 Go to definition
|
||||
---------------------------------------
|
||||
|
||||
Vim provides support for tags out of the box. Using `CTRL+]` we can jump to the
|
||||
definition of something.
|
||||
|
||||
TASK: Run `vim lorem-ipsum2.php` to to the constructor and run `CTRL+]` on
|
||||
`LoremUpsum` type hint.
|
||||
|
||||
Efficient editing
|
||||
-----------------
|
||||
|
||||
We now know some basics to move within source code. What about editing?
|
||||
|
||||
Let's change the content of an PHP if condition to just false.
|
||||
|
||||
TASK: Change content of if condition within `lorem-ipsum.php` within the `getSum`
|
||||
method.
|
||||
|
||||
Vim provides operators within the `NORMAL` mode. These can be copy, delete, change,
|
||||
uppercase. In our case we want to change the condition = `c`. Following Vim Grammar,
|
||||
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.
|
||||
|
||||
What's next?
|
||||
------------
|
||||
|
||||
That were some basics. What is most important to you? What would you miss when using
|
||||
Vim? Let's provide some guidance to make you more productive within Vim in your daily
|
||||
work.
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
* https://daniel-siepmann.de/Posts/Migrated/2015-10-10-vim-linklist.html
|
||||
|
||||
* https://vimawesome.com/plugin/ctrlp-vim-red
|
||||
|
||||
* https://vimawesome.com/plugin/tagbar
|
||||
|
||||
* https://ctags.io/
|
Loading…
Reference in a new issue