This commit is contained in:
Miloslav Ciz 2022-06-06 21:13:46 +02:00
parent c8876c27c7
commit dd2c2a1f41
14 changed files with 177 additions and 18 deletions

View file

@ -32,6 +32,7 @@ Here is a list of some acronyms:
- **[BBS](bbs.md)** (bulletin board system)
- **[BC](bc.md)** (bytecode)
- **[BCD](bcd.md)** (binary coded decimal)
- **[BDFL](bdfl.md)** (benevolent dictator for life)
- **[BF](bf.md)** (brainfuck)
- **[BG](bg.md)** (background, bad game)
- **[BGR](bgr.md)** (blue green red)

3
assertiveness.md Normal file
View file

@ -0,0 +1,3 @@
# Assertiveness
Assertiveness is an [euphemism](euphemism.md) for being a [dick](dick.md).

13
c.md
View file

@ -48,13 +48,14 @@ So the standard library (libc) is a subject of live debate because while its int
C isn't perfect, it was one of the first relatively higher level languages and even though it has showed to have been designed extremely well, some things didn't age great, or were simply bad from the start. We still prefer this language as usually the best choice, but it's good to be aware of its downsides or smaller issues, if only for the sake of one day designing a better version of C. So, let's go:
- C specification (the ISO standard) is [proprietary](proprietary.md) :( The language itself probably can't be copyrighted, nevertheless this may change in the future, and a proprietary specs lowers C's accessibility and moddability (you can't make derivative versions of the spec).
- The specification is also long as fuck. A good, free language should have a simple definition. It could be simplified a lot by simplifying the language itself as well as dropping some truly legacy considerations (like [BCD](bcd.md) systems?) and removing a lot of undefined behavior.
- Some things could be made simpler, e.g. using [reverse polish](reverse_polish.md) notation for expressions, rather than expressions with brackets and operator precedence, would make implementations much simpler, increasing sucklessness.
- **C specification (the ISO standard) is [proprietary](proprietary.md)** :( The language itself probably can't be copyrighted, nevertheless this may change in the future, and a proprietary specs lowers C's accessibility and moddability (you can't make derivative versions of the spec).
- **The specification is also long as fuck**. A good, free language should have a simple definition. It could be simplified a lot by simplifying the language itself as well as dropping some truly legacy considerations (like [BCD](bcd.md) systems?) and removing a lot of undefined behavior.
- **Some behavior is weird and has exceptions**, for example a function can return anything, including a `struct`, except for an array. This makes it awkward to e.g. implement vectors which would best be made as arrays but you want functions to return them, so you may do hacks like wrapping them instide a struct just for this.
- **Some things could be made simpler**, e.g. using [reverse polish](reverse_polish.md) notation for expressions, rather than expressions with brackets and operator precedence, would make implementations much simpler, increasing sucklessness.
- Some things like [enums](enum.md) could be dropped entirely, they can easily be replaced with macros.
- The preprocessor isn't exactly elegant, it has completely different syntax and rules from the main language, not very suckless.
- The syntax isn't perfect, e.g. it's pretty weird that the condition after `if` has to be in brackets, it could be designed better. Keywords also might be better being single chars, like `?` instead of `if` or the weird long ass names with spaces like `unsigned long long` could be made nicer. A shorter, natural-language-neutral source code would be probably better. Both line and block comments could be implemented with a single character, e.g. `#` which would end either with a newline or another `#`.
- Some basic things that are part of the standard library or extensions, like fixed with types and binary literals, could be part of the language itself.
- **The preprocessor isn't exactly elegant**, it has completely different syntax and rules from the main language, not very suckless.
- **The syntax isn't perfect**, e.g. it's pretty weird that the condition after `if` has to be in brackets, it could be designed better. Keywords also might be better being single chars, like `?` instead of `if` or the weird long ass names with spaces like `unsigned long long` could be made nicer. A shorter, natural-language-neutral source code would be probably better. Both line and block comments could be implemented with a single character, e.g. `#` which would end either with a newline or another `#`.
- **Some basic things that are part of the standard library or extensions**, like fixed with types and binary literals, could be part of the language itself.
- TODO: moar
## Basics

View file

@ -2,7 +2,7 @@
*Capitalism is [cancer](cancer.md) of society.*
Capitalism is the worst economic system we've yet seen in the history.^[source](logic.md) Literally based on pure greed, abandoning all morals and putting profit above everything else including preservation of life itself, capitalism fuels the worst in people and forces them to compete and suffer for basic needs. Capitalism is anti-progress (see e.g. [antivirus paradox](antivirus_paradox.md)), anti-technology, anti-freedom, supports immense waste of resources, wars, abuse of people, destruction of environment, decline of morals, invention of [bullshit](bullshit.md), [torture](marketing.md) of people and animals and much more.
Capitalism is the worst economic system we've yet seen in the history.^[source](logic.md) Literally based on pure greed, abandoning all morals and putting profit above everything else including preservation of life itself, capitalism fuels the worst in people and forces them to compete and suffer for basic needs. Capitalism is anti-progress (see e.g. [antivirus paradox](antivirus_paradox.md)), anti-technology, anti-freedom, supports immense waste of resources, wars, abuse of people, destruction of environment, decline of morals, invention of [bullshit](bullshit.md), [torture](marketing.md) of people and animals and much more. Sadly, as it's been said, "it is easier to imagine the end of all life than any substantial change in capitalism."
Capitalism produces the [worst imaginable technology](capitalist_software.md), and rewards people for [being cruel to others](entrepreneur.md). It also inevitably leads to societal [collapse](collapse.md); in capitalism people own nothing and become wholly dependent on corporations which exploit this fact to abuse them. This is achieved by [slowly boiling the frogs](slowly_boiling_the_frog.md). No one owns anything, products become services (your car won't drive without Internet connection and permission from its manufacturer), all independency and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services. Then only a slight break in the chain is enough to bring the whole civilization down.

View file

@ -1,10 +1,10 @@
# Copyright
Copyright (better called copyrestriction) is one of many types of so called [intellectual property](intellectual_property.md) (IP), i.e. a legal concept that allows ownership of certain kind of information. Copyright specifically allows to own (i.e. restrict other people's rights to) artistic creations such as images, songs or texts, which include source code of computer programs. Copyright is not to be confused with [trademark](trademark.md) or [patent](patent.md). Copyright is symbolized by C in a circle or in brackets: (C).
Copyright (better called copyrestriction) is one of many types of so called [intellectual property](intellectual_property.md) (IP), i.e. a legal concept that allows ownership (restriction) of certain kind of information. Copyright specifically allows to own (i.e. restrict other people's rights to) [art](art.md) creations such as images, songs or texts, which include source code of computer programs. Copyright is not to be confused with [trademark](trademark.md) or [patent](patent.md). Copyright is symbolized by C in a circle or in brackets: (C).
When someone creates something that can even remotely be considered artistic expression (even such things as e.g. a mere collection of already existing things), they automatically gain copyright on it, without having to register it anywhere or let it be known anywhere. They then have practically full control over the work and can successfully sue anyone who basically just touches it in any way. Therefore any code without a license attached is implicitly fully owned by its creator (so called "all rights reserved") and can't be used by anyone without permission.
When someone creates something that can even remotely be considered artistic expression (even such things as e.g. a mere collection of already existing things), they automatically gain copyright on it, without having to register it anywhere or let it be known anywhere. They then have practically full control over the work and can successfully sue anyone who basically just touches it in any way. Therefore **any code without a [free](free_software.md) license attached is implicitly fully owned by its creator** (so called "all rights reserved") and can't be used by anyone without permission. It is said that copyright can't apply to ideas, only to expressions of ideas, however that's [bullshit](bs.md), the line isn't clear and is arbitrarily drawn by judges; for example regarding stories in books it's been established that the story itself can be copyrighted, not just its expression (you can't rewrite the Harry Potter story in different words and start selling it).
This current form of copyright (as well as other types of IP such as software patents) has been highly criticized by many people, even those who it's supposed to "protect" (e.g. small game creators). Strong copyright laws basically benefit corporations and "trolls" on the detriment of everyone else. It smothers creativity and efficiency by prohibiting people to use, remix and improve already existing works. Most people are probably for *some* form of copyright but still oppose the current extreme form which is pretty crazy: copyright applies to everything without any registration or notice and last usually 70 years (!!!) **after** the author has died (!!!). This is 100 years in some countries. In some countries it is not even possible to waive copyright to own creations. Some people are against the very idea of copyright (those may either use waivers such as [CC0](cc0.md) or [unlicense](unlicense.md) or protest by not using any licenses and simply ignoring copyright which however will actually discourage other people from reusing their works).
This current form of copyright (as well as other types of IP such as software patents) has been highly criticized by many people, even those whom it's supposed to "protect" (e.g. small game creators). Strong copyright laws basically benefit corporations and "trolls" on the detriment of everyone else. It smothers creativity and efficiency by prohibiting people to reuse, remix and improve already existing works. Most people are probably for *some* form of copyright but still oppose the current extreme form which is pretty crazy: copyright applies to everything without any registration or notice and last usually 70 years (!!!) **after** the author has died (!!!). This is 100 years in some countries. In some countries it is not even possible to waive copyright to own creations. Some people are against the very idea of copyright (those may either use waivers such as [CC0](cc0.md) or [unlicense](unlicense.md) or protest by not using any licenses and simply ignoring copyright which however will actually discourage other people from reusing their works).
Prominent critics include [Lawrence Lessig](lessig.md) (who established [free culture](free_culture.md) and [Creative Commons](creative_commons.md)) as a response), [Nina Paley](nina_paley.md) and [Richard Stallman](rms.md).
@ -14,12 +14,22 @@ Copyright rules differ greatly by country, most notably the US measures copyrigh
[Copyleft](copyleft.md) (also share-alike) is a concept standing against copyright, a kind of anti-copyright, invented by [Richard Stallman](rms.md) in the context of [free software](free_software.md). It's a license that grants people the rights to the author's work on the condition that they share its further modification under the same terms, which basically hacks copyright to effectively spread free works like a "virus".
Copyright does **not** apply to facts (including mathematical formulas) (even though the formulation of them may be copyrighted), ideas (though these may be covered by [patents](patent.md)) and single words or short phrases (these may however still be [trademarked](trademark.md)). As such copyright can't e.g. be applied to game mechanics of a computer [game](game.md) (it's an idea). It is also basically proven that copyright doesn't cover [computer languages](programming_language.md) (Oracle vs Google). Depending on time and location there also exist various peculiar exceptions such as the freedom of panorama for photographs or uncopyrightable utilitarian design. But it's never good to rely on these pecularities as they are specific to time/location and are often highly subjective, fuzzy and debatable. This constitutes a huge legal [bloat](bloat.md) and many time legal unsafety.
Copyright does **not** apply to facts (including mathematical formulas) (even though the formulation of them may be copyrighted), ideas (though these may be covered by [patents](patent.md)) and single words or short phrases (these may however still be [trademarked](trademark.md)). As such copyright can't e.g. be applied to game mechanics of a computer [game](game.md) (it's an idea). It is also basically proven that copyright doesn't cover [computer languages](programming_language.md) (Oracle vs Google). Depending on time and location there also exist various peculiar exceptions such as the freedom of panorama for photographs or uncopyrightable utilitarian design (e.g. no one can own the shape of a generic car). But it's never good to rely on these peculiarities as they are specific to time/location, they are often highly subjective, fuzzy and debatable and may even be retroactively changed by law. This constitutes a huge legal [bloat](bloat.md) and many time legal unsafety. Do not stay in the gray area, try to stay safely far away from the fuzzy copyright line.
A work which is not covered by copyright (and any other IP) -- which is nowadays pretty rare due to the extent and duration of copyright -- is in the [public domain](public_domain.md).
A work which is not covered by copyright (and any other IP) -- which is nowadays pretty rare due to the extent and duration of copyright -- is in the **[public domain](public_domain.md)**.
[Free software](free_software.md) (and free art etc.) is **not** automatically public domain, it is mostly still copyrighted, i.e. "owned" by someone, but the owner has given some key rights to everyone with a free software license and by doing so minimized or even eliminated the negative effects of full copyright. The owner may still keep the rights e.g. to being properly credited in all copies of the software, which he may enforce in court. Similarly software that is in public domain is **not** automatically free software -- this holds only if source code for this software is available (so that the rights to studying and modifying can be executed).
## See Also
- [copyleft](copyleft.md)
- [fair use](fair_use.md)
- [creative commons](cc.md)
- [license](license.md)
- [patent](patent.md)
- [trademark](trademark.md)
- [public domain](pd.md)
- [intellectual property](intellectual_property.md)

41
earth.md Normal file
View file

@ -0,0 +1,41 @@
# Earth
Well, Earth is the [planet](planet.md) we live on. It is the third planet from the [Sun](sun.md) of our Solar system which itself is part of the [Milky Way](milky_way.md) [galaxy](galaxy.md). So far it is the only known place to have [life](life.md).
Now behold the grand rendering of the Earth map in [ASCII](ascii_art.md) ([equirectangular](equirectangular.md) projection):
```
X v v v v v v v v v v v v v v v X
.-,./"">===-_.----..----.. : -==-
-=""-,><__-;;;<""._ / : -===-
___ .=---""""\/ \/ ><."-, "\ /" : .--._ ____ __.-""""------""""---.....-----..
> -=_ """""---"" _.-" \_/ | .-" /"\ : _.'' ".."" """ <
"" _.'ALASKA {_ ,".__ "" '"' _ : ( _/| _ _..
"-._.--"""-._ CANADA "--" "\ / \: ""./ / _--"","/
"" \ _/_ ",_/:_./\_.' ASIA "--. \/
> } /_\/ \:EUROPE __ __ /\| <
\ ""=- __.-" /"":_-. -._ _, /__\ \ ( .-" ) >-
\__ USA _/ """:___" " ", "" ,-. \ __//
|\ __ / /"": ""._..../ \ "" \_/
> \\_ ." \| ATLANTIC / : \\ <'\ | <
\ \_/| -=- OCEAN ) :AFRICA \\_.-" """\ .'
PACIFIC "--._\ \___: "/ \ .""\_ <^,..-" __
OCEAN \"""-""-.._ :""\ / " | _) \_\INDONESIA
>.............................|..........",.............:...\......./................_\\_....__/\..,__..........<
| SOUTH \ : / | "-._\_ \__/ \ ""-_
\ AMERICA / : ( } """""===- """""_
\_ | : \ \ __.-""._,"",
> \ / : / / /\ ," AUSTRALIA \ <
| | : \ / (_/ INDIAN "; __ )
| / : \___/ OCEAN """ ""-._ /
/ / : "" |\
> | / : {) // <
| | : ""
\_ \ :
""" :
> ., : <
__....___ _/"" \ : _____ ___.......___......-------...__
--....-----""""----"""" "" "-..__ __......--""""""" """ .;_.....
"""" : ANTARCTICA
X ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ X
```

7
kek.md Normal file
View file

@ -0,0 +1,7 @@
# Kek
Kek means [lol](lol.md). It comes from [World of Warcraft](wow.md) where the two opposing factions (Horde and Alliance) were made to speak mutually unintelligibile languages so as to prevent enemy players from communicating; when someone from Horde typed "lol", an Alliance player would see him say "kek". The other way around (i.e. Alliance speaking to Horde) would render "lol" as "bur", however kek became the popular one. On the Internet this further mutated to forms like *kekw*, *topkek* etc. Nowadays in some places such as [4chan](4chan.md) kek seems to be used even more than lol, it's the newer, "cooler" way of saying lol.
## See Also
- [meme](meme.md)

3
kids_these_days.md Normal file
View file

@ -0,0 +1,3 @@
# Kids These Days
TODO

View file

@ -1,11 +1,13 @@
# Selflessness
Selflessness means acting with the intent of helping others without harming or taking advantage of them or anyone else, with the possible exception of oneself. It is the opposite of [self interest](self_interest.md). Selflessness is the basis of an [ideal society](ideal_society.md) and [good technology](lrs.md) (while self interest is the basis of our current dystopian [capitalist](capitalism.md) society).
Selflessness means acting with the intent of helping others without harming them, gaining edge over them or taking advantage of them or anyone else in any way. It is the opposite of [self interest](self_interest.md). Selflessness is the basis of an [ideal society](ideal_society.md) and [good technology](lrs.md) (while sadly self interest is the basis of our current dystopian [capitalist](capitalism.md) society).
In the real world absolutely pure selflessness may be very hard to find, but an example that comes close may perhaps be [Langar](langar.md), the big community kitchens run by [Sikhs](sikhism.md) that prepare and serve free [vegetarian](vegetarian.md) food to anyone who comes without differentiating between religious beliefs, skin color, social status, gender etc. Sikhs sometimes also similarly offer a place to stay etc.
Selflessness is about the **intent** behind behavior rather than about the behavior itself; for example being a [vegetarian](vegetarian.md) (or even [vegan](vegan.md)) for ethical reasons (to spare animals of suffering) is selfless while being a vegetarian only because of one's health concerns is not selfless. Similarly if a selfless behavior unpredictably results in harming someone, it is still a selfless behavior as long as the intent behind it was pure. (Note that this does **NOT** at all advocate the "[ends justify the means](ends_justify_the_means.md)" philosophy.)
Selflessness doesn't mean one seeks no reward, there is practically always at least one reward for a selflessly behaving individual: the good feeling that comes from the selfless action. Selfless acting may also include physical rewards, for example if a programmer dedicates years of his life to developing a [free](free_software.md) [public domain](public_domain.md) software that will help all people, he himself will get the benefits of using that program himself. The key thing is that he doesn't use the program to harm others, e.g. by charging money for it or even by using a license that forces others to credit him and so increase his reputation.
In the real world absolutely pure selflessness may be very hard to find, partly because such behavior by definition seeks no recognition. But an example that comes close may perhaps be [Langar](langar.md), the big community kitchen run by [Sikhs](sikhism.md) that prepare and serve free [vegetarian](vegetarian.md) food to anyone who comes without differentiating between religious beliefs, skin color, social status, gender etc. Sikhs sometimes also similarly offer a place to stay etc. The mentioned ethical vegetarianism and veganism is another example, as well as [LRS](lrs.md) itself, of course.
The latter is important to show that what's many times called selflessness nowadays is only **pseudoselflessness**, a fake selflessness. This includes e.g. all the celebrities who publicly financially support charities; this seems like a nice gesture but it's of course just a marketing stunt, the money spent on charities is money invested into promoting oneself, increasing fame, lowering taxes etc. This also goes for professional firefighters, doctors, [FOSS](foss.md) programmers that use licenses with conditions such as attribution etc.
**Selflessness doesn't mean one seeks no reward**, there is practically always at least one reward for a selflessly behaving individual: the good feeling that comes from the selfless action. Selfless acting may also include physical rewards, for example if a programmer dedicates years of his life to developing a [free](free_software.md) [public domain](public_domain.md) software that will help all people, he himself will get the benefits of using that program. The key thing is that he doesn't use the program to harm others, e.g. by charging money for it or even by using a license that forces others to credit him and so increase his reputation. He sacrificed part of his life purely to increase good in the world for everyone without trying to gain an edge over others.
Selfless programs and art should be put into the [public domain](public_domain.md) with waivers such as [CC0](cc0.md).
The latter is important to show that what's many times called selflessness nowadays is only **pseudoselflessness**, fake selflessness. This includes e.g. all the celebrities who publicly financially support charities; this seems like a nice gesture but it's of course just a PR stunt, the money spent on charities is money invested into promoting oneself, increasing fame, sometimes even tax hacking etc. This also goes for professional firefighters, doctors, [FOSS](foss.md) programmers that use licenses with conditions such as attribution etc. This is not saying the behavior of such people is always pure evil, just that it's not really selfless.
Selfless programs and art should be put into the [public domain](public_domain.md) with waivers such as [CC0](cc0.md). Using licenses (free or not) that give the programmer some advantage over others (even e.g. attribution) are not selfless.

9
settled.md Normal file
View file

@ -0,0 +1,9 @@
# Settled
When a [software](software.md) is so good it makes you stop searching further for any other software in the same category, it makes the debate settled -- you've found the ultimate tool, you're now free, you no longer have to think about the topic or invest any more precious time into trying different alternatives. You've found the [ultimate](ultimate.md), nearly [perfect](perfect.md) tool for the job, the one that makes the others obsolete. Settling the competition of different tools is one of the goal of [good technology](lrs.md) as it frees users as well as programmers.
For example [Vim](vim.md) often settles the search for a text and programming editor for many programmers.
Nevertheless some soyboys just like hopping and switching their tools just because, they simply like wasting their time with things like [distrohopping](distrohopping.md) etc. There's no help to these people.
{ software that made the debate settled for me: [vim](vim.md), [dwm](dwm.md), [st](st.md), [badwolf](badwolf.md) ~drummyfish }

View file

@ -2,6 +2,8 @@
Unix is an [old](old.md) [operating system](operating_system.md) developed since 1960s as a research project of [Bell Labs](bell_labs.md), which has become one of the most influential pieces of software in history and whose principles (e.g. the [Unix philosophy](unix_philosophy.md)) live on in many so called Unix-like operating systems such as [Linux](linux.md) and [BSD](bsd.md) (at least to some degree). The original system itself is no longer in use, the name UNIX is nowadays a trademark and a certification.
Unix has reached the highest level a software can reach: it has transcended its implementation and became a [de facto standard](de_facto_standard.md). This means it has become a set of interface conventions, cultural and philosophical ideas rather than being a single system, it lives on as a concept that has many implementations. This is extremely important as we don't depend on any single Unix implementation but we have a great variety of choice between which we can switch without greater issues. This is very important for [freedom](freedom.md) -- it prevents monopolization -- and its one of the important reasons to use unix-like systems.
## History
In the 1960s, Bell Labs along with other groups were developing [Multics](multics.md), a kind of [operating system](os.md) -- however the project failed and was abandoned for its complexity and expensiveness of development. In 1969 two Multics developers, [Ken Thompson](key_thompson.md) and [Dennis Ritchie](dennis_ritchie.md), then started to create their own system, this time with a different philosophy; that of [simplicity](minimalism.md) (see [Unix philosophy](unix_philosophy.md)). They weren't alone in developing the system, a number of other hackers helped program such things as a file system, [shell](shell.md) and simple utility programs. At VCF East 2019 Thompson said that they developed Unix as a working system in three weeks. At this point Unix was written in [assembly](assembly.md).

79
vim.md Normal file
View file

@ -0,0 +1,79 @@
# Vim
{ This is WIP, I use Vim but am not such guru really so there may appear some errors in the text, be aware of that. ~drummyfish }
Vim (Vi Improved) is a legendary [free as in freedom](free_software.md), fairly [minimalist](minimalism.md) and [suckless](suckless.md) [terminal](terminal.md)-only (no [GUI](gui.md)) [text editor](text_editor.md) for skilled programmers and hackers, possibly the best editor you can choose for text editing and [programming](programming.md). It is a successor of a much simpler editor [vi](vi.md) that was made in 1976 and which has become a standard text editor installed on every [Unix](unix.md) system. Vim added features like tabs, [syntax highlight](syntax_highlight.md), [scriptability](script.md), sessions and plugins and as such has become not just a simple text editor but an editor that can comfortably be used for [programming](programming.md) instead of any bloated [IDE](ide.md). Observing a skilled Vim user edit text is really like watching a magician or a literal movie hacker -- the editing is extremely fast, without any use of mouse, it transcends mere text editing and for some becomes something akin a way of life.
Vim is generally known to be **"difficult to learn"** -- it is not because it is inherently difficult but rather for being very different from other editors -- it has no [GUI](gui.md) (even though it's still a screen-oriented [interactive](interactive.md) [TUI](tui.md)), it is keyboard-only and is operated via text commands rather than with a [mouse](mouse.md), it's also preferable to not even use arrow keys but rather [hjkl](hjkl.md) keys. There is even a [meme](meme.md) that says Vim is so difficult that just exiting it is a non-trivial task. People not acquainted with Vim aren't able to do it and if they accidentally open Vim they have to either Google how to close it or force kill the terminal [xD](xd.md) Of course it's not so difficult to do, it's a little bit different than in other software -- you have to press escape, then type `:q` and press enter (although depending on the situation this may not work, e.g. if you have multiple documents open and want to exit without saving you have to type `:wqa` etc.). The (sad) fact is that most [coding monkeys](coding.md) and "professional programmers" [nowadays](kids_these_days.md) choose some ugly [bloated](bloat.md) [IDE](ide.md) as their most important tool rather than investing two days into learning Vim, probably the best editor.
**Why use Vim?** Well, simply because it is (relatively) [suckless](suckless.md), universal and extremely good for editing any text and for any kind of [programming](programming.md), for many it [settles](settled.md) the search for an editor -- once you learn it you'll find it is flexible, powerful, comfortable, modifiable, lightweight... it has everything you need. Anyone who has ever invested the time to learn Vim will almost certainly tell you it was one of the best decisions he made and that guy probably only uses Vim for everything now. Many people even get used to it so much they download mods that e.g. add Vim commands and shortcuts to programs like web browsers. A great advantage is that **vi is installed on every Unix** as it is a standard utility, so if you know Vim, you can just comfortably use any Unix-like system just from the [command line](terminal.md): when you [ssh](ssh.md) into a server you can simply edit files without setting up any remote GUI or whatever. Therefore Vim is automatically a must learn skill for any sysadmin. A huge number of people also use Vim for **"[productivity](productivity_cult.md)"** -- even though we don't fancy the productivity cult and the bottleneck of programming speed usually isn't the speed of typing, it is true that **Vim makes you edit text extremely fast** (you don't move your hands between mouse and keyboard, you don't even need to touch the arrow keys, the commands and shortcuts make editing very efficient). Some nubs think you "need" a huge IDE to make big programs, that's just plain wrong, you can do anything in Vim that you can do in any other IDE, it's as good for editing tiny files as for managing a huge codebase.
Vim's biggest rival is [Emacs](emacs.md), a similar editor which is however more complex and [bloated](bloat.md) (it is [joked](jokes.md) that Emacs is really an [operating system](os.md)) -- Vim is more [suckless](suckless.md), yet not less powerful, and so it is naturally the choice of the suckless community and also [ours](lrs.md). Vim and Emacs are a subject of a **[holy war](holy_war.md)** for the the best editor yet developed; the Emacs side calls itself the *[Church of Emacs](church_of_emacs.md)*, led by [Richard Stallman](rms.md) (who created Emacs) while the Vi supporters are called members of the *[Cult of Vi](cult_of_vi.md)* (vi vi vi = 666).
It has to be noted that **Vim as a program is still kind of [bloated](bloat.md)**, large part of the [suckless](suckless.md) community acknowledges this. Nonetheless the important thing is that **Vim is a good [de facto standard](de_facto_standard.md)** -- the Vim's interface and philosophy is what matters the most, there are alternatives you can comfortably switch to. The situation is similar to for example "Unix as a concept", i.e. its interface, [philosophy](unix_philosophy.md) and culture, which together create a certain standardization that allows for different implementations that can be switched without much trouble. In the suckless community Vim has a similar status to [C](c.md), [Linux](linux.md) or [X11](x11.md) -- it is not ideal, by the strict standards it is a little bit bloated, however it is one of the best existing solutions and makes up for its shortcomings by being a stable, well established de-facto standard.
## How To
These are some Vim basics for getting started. There are two important editing modes in Vim:
- **insert mode**: For writing text, you just type text as normal. Pressing *ESC* enters command mode. Here **CTRL + `n`** can be used for text completion.
- **command mode**: For executing commands. Pressing *i* enters insert mode.
Some important commands in command mode are:
- **arrow keys**: Can be used for moving cursor, even though many prefer to use the *hjkl* keys. With *SHIFT* held down the cursor moves horizontally by words and by screens vertically.
- **`h`,`j`,`k`,`l`**: Cursor movement.
- **`$`**: Move cursor to end of the line.
- **`0`**: Move cursor to start of the line.
- **CTRL + `w` + `w`**: Move between windows (created with `:split` or `:vspit`).
- **CTRL + PAGEUP**, **CTRL + PAGEDOWN**: Move between tabs.
- **u**: Undo.
- **CTRL + SHIFT + `r`**: Redo.
- **`:`**: Allows entering longer commands. *TAB* can be used for completion and up/down keys for listing command history. Some of the commands are:
- **`q`**: Quit, or close the current extra window/tab. Use **`qa`** for closing all windows/tabs and quit. **`q!`** (or **`qa!`**) quits without saving changes, **`wq`** quits with saving changes, **`wqa`** quits all saving all changes etc.
- **`w`**: Save changes (can be followed by filename).
- **`noh`**: Cancel highlighted text (e.g. after search).
- **`!`**: Run command in terminal, you can e.g. compile your program this way. For running Vim commands before the terminal commands use **`vimcommands |! terminalcommands`**, e.g. `:wa |! make && ./program`.
- **`tabedit filename`**: Opens given file in a new tab (tabs are closed with `:q`).
- **`tabmove number`**: Move current tab to given position (`+` and `-` can be used for relative movement of tabs).
- **`vsplit`**: Creates a new window by splitting the current one vertically.
- **`split`**: Creates a new window by splitting the current on horizontally.
- **`>`**: Indent to the right, well combined with text selection (`v`, `V`).
- **`.`**: Repeat previous command.
- **`%s/find/replace/g`**: Search and replace [regex](regex.md), [sed](sed.md) style.
- **`help command`**: Show help about given command.
- **`set variable value`**: Set a variable, used e.g. in configs.
- **`/pattern`**: Search for a [regex](regex.md) patter entered after `/`. Found matches will be highlighted (`:noh` cancels the highlight), you can move to the next one with `n` and to the previous one with `N`.
- **NUMBER `G`**: Go to line with given number (0 means last line).
- **`v`**, **`V`**: Select/highlight text (by characters and by lines).
- **`d`**: Delete, this is followed by a command saying what to delete, e.g. `dw` deletes to the end of the word, **`dd`** deletes the whole line. WARNING: delete actually copies the deleted text into clipboard (it behaves like *cut*)!
- **`o`**: Insert new line.
- **`p`**: Paste.
- **`y`**: Copy (yank), followed by a command saying what to copy (e.g. `yw` copies a word), **`yy`** copies the whole line.
Vim can be configured with a file named **`.vimrc`** in home directory. In it there is a set of commands that will automatically be run on start. Example of a simple config file follows:
```
set number " set line numbering
set et " expand tabs
set sw=2
set hlsearch
set nowrap " no line wrap
set colorcolumn=80 " highlight 80th column
set list
set listchars=tab:>.
set backspace=indent,eol,start
syntax on
```
## Alternatives
Of course there are alternatives to Vim that are based on different paradigms, such as [Emacs](emacs.md), its biggest rival. In this regard any [text editor](text_editor.md) is a potential alternative. Nevertheless people looking for Vim alternatives are usually looking for other vi-like editors. These are for example:
- **[vi](vi.md)**: While you probably won't use the original ancient vi program but rather something like [nvi](nvi.md), vi is a [POSIX](posix.md) standard for a text editor that's much simpler and universal than Vim. It lacks many features one may be used to from Vim such as tabs, [autocompletion](autocomplete.md), [syntax highligh](syntax_highlight.md) or multiple [undos](undo.mf). But limiting yourself to only using the features specified by the standard makes you more likely to be able to operate any vi-like text editor you encounter. (List of features added by Vim to vi can be found in `runtime/doc/vi_diff.txt` in Vim source tree.)
- **[neovim](neovim.md)**: Tries to be the "[modernized](modern.md)" ([refactored](refactoring.md)) fork of Vim, it removes some code, adds a new plugin system but also [bloat](bloat.md) like [CMake](cmake.md). One of its self-stated goals is to be more "community driven". It is also written in C99 (while Vim is in C89, more portable). { At least I think. ~drummyfish }
- **[vis](vis.md)**: Inspired by Vim and [Sam](sam.md), written in C99, seems to have only a few dependencies. Has no tabs. { At least I didn't find them. ~drummyfish }
- **[nvi](nvi.md)** (new vi): Vi implementation originally made for [BSD](bsd.md), much simpler than Vim (see vi above).
- **[elvis](elvis.md)**: Another vi implementation, pretty simple (see vi above).
- **[BusyBox vi](busybox.md)**: Very minimal vi implementation with very few features (see vi above), missing even window splits etc.
- **[gvim](gvim.md)**: Various versions of Vim with [GUI](gui.md) frontends made with libraries such as [GTK3](gtk3.md) or [Xaw](xaw.md). These run in a graphical window and have a menu with items you find in mainstream editors (*save*, *open*, *find* etc.). Of course you can still use this in the same way as the terminal version.

1
xd.md Normal file
View file

@ -0,0 +1 @@
# xD

View file

@ -6,7 +6,7 @@ Xonotic is a [free as in freedom](free_software.md) fast multiplayer arena [firs
Xonotic was forked from a game called [Nexuiz](nexuiz.md) after a trademark controversy. Nexuiz itself was created on top of liberated Quake 1 engine, so Xonotic still bears a lot Quake's legacy, however it masterfully expands on its core principles and makes the gameplay even better. For example rockets shot by rocket launcher can be guided with mouse while holding down the left button which adds a new element of skill and beautiful frag opportunities. New types of weapons were added to the classic AFPS weapons (e.g. the infamous electro, a [meme](meme.md) spamming weapon used by noobs for its forgiveness of lack of skill). Movement physics was also modified to give better air control and faster movement as a result.
As of 2022 the game has a small but pretty active community of regular players, centered mostly in Europe. There are regulars playing every day, big pros, noobs, famous spammers, campers, and nice conversations can be held during games. There are [memes](meme.md) and inside jokes. The community is pretty neat.
As of 2022 the game has a small but pretty active community of regular players, centered mostly in Europe. There are regulars playing every day, big pros, noobs, famous spammers, campers, and nice conversations can be held during games. There are [memes](meme.md) and inside jokes. The community is pretty neat. Xonotic also has a very dedicated [defrag](defrag.md) ("racing with no shooting") community.
Better yet, the main servers have so far not been infected by the [SJW poison](tranny_software.md) and **allow a great amount of [free speech](free_speech.md)** -- another rarity. Even the game itself contains speech that SJWs would consider "offensive", there are e.g. voice lines calling other players "pussies" and even "retards". This is great.