Vytweakování si editoru
nano.
Nano je super malý textový editor. Hodí se do systémů s velmi malou kapacitou diskového prostoru. Jeho velikost je pouhých 176KB binárky plus složka konfiguráků dalších 192KB. Což je v dnešní době neskutečně malý program. Osobně pokud jsem omezen diskem jako první nainstaluji
mc který obsahuje i textový editor
mcedit. A hned od začátku mám skvělý souborový manager s texťákem o velikosti 1,1MB. Jenže, ten texťák není nic moc.
Nano je docela dobrá volba jako texťák, který si může člověk na rozdíl od mceditu přiohnout a udělat z toho docela použitelnou věc. Nejen, že dobře zvýrazňuje syntaxi editovaného. Ale už se dá nastavit kontrola gramatiky, spouštění editovaného skriptu, formátování a ještě pár drobností. A co je nejdůležitější, dají se omezeně nastavit
vlastní klávesové zkratky. Takže se dá v pohodě používat kombinace
ctrl+c ..+v ..+x atd. Zde přikládám můj rc soubor (~/.config/nano/nanorc) stačí si kopii uložit na to samé místo a hotovo:
## Sample initialization file for GNU nano.
##
## For the options that take parameters, the default value is shown.
## Other options are unset by default. To make sure that an option
## is disabled, you can use "unset <option>".
##
## Characters that are special in a shell should not be escaped here.
## Inside string parameters, quotes should not be escaped -- the last
## double quote on the line will be seen as the closing quote.
## Make 'nextword' (Ctrl+Right) and 'chopwordright' (Ctrl+Delete)
## stop at word ends instead of at beginnings.
set afterends
## When soft line wrapping is enabled, make it wrap lines at blanks
## (tabs and spaces) instead of always at the edge of the screen.
set atblanks
## Automatically indent a newly created line to the same number of
## tabs and/or spaces as the preceding line -- or as the next line
## if the preceding line is the beginning of a paragraph.
set autoindent
## Back up files to the current filename plus a tilde.
# set backup
## The directory to put unique backup files in.
# set backupdir ""
## Use bold text instead of reverse video text.
# set boldtext
## Treat any line with leading whitespace as the beginning of a paragraph.
# set bookstyle
## The characters treated as closing brackets when justifying paragraphs.
## This may not include any blank characters. Only closing punctuation,
## optionally followed by these closing brackets, can end sentences.
# set brackets ""')>]}"
## Automatically hard-wrap the current line when it becomes overlong.
set breaklonglines
## Do case-sensitive searches by default.
# set casesensitive
## Constantly display the cursor position in the status bar or minibar.
set constantshow
## Use cut-from-cursor-to-end-of-line by default.
# set cutfromcursor
## Do not use the line below the title bar, leaving it entirely blank.
# set emptyline
## Set the target width for automatic hard-wrapping and for justifying
## paragraphs. If the specified value is 0 or less, the wrapping point
## will be the terminal's width minus this number.
# set fill -8
## Draw a vertical stripe at the given column, to help judge text width.
## (This option does not have a default value.)
# 80 znaků je normohranice v pythonu
set guidestripe 80
## Remember the used search/replace strings for the next session.
# set historylog
## Display a "scrollbar" on the righthand side of the edit window.
# set indicator
## Scroll the buffer contents per half-screen instead of per line.
# set jumpyscrolling
## Display line numbers to the left (and any anchors in the margin).
#set linenumbers
## Enable vim-style lock-files. This is just to let a vim user know you
## are editing a file [s]he is trying to edit and vice versa. There are
## no plans to implement vim-style undo state in these files.
# set locking
## Fall back to slow libmagic to try and determine an applicable syntax.
# set magic
## The opening and closing brackets that are found by a matching-bracket
## search. This may not contain blank characters. The opening brackets
## must come before the closing ones, and they must be in the same order.
set matchbrackets "(<[{)>]}"
## Suppress the title bar and show the filename plus a cursor-position
## percentage in the space of the status bar.
set minibar
## Enable mouse support, if available for your system. When enabled,
## mouse clicks can be used to place the cursor, set the mark (with a
## double click), and execute shortcuts. The mouse will work in the
## X Window System, and on the console when gpm is running.
# set mouse
## Switch on multiple file buffers (inserting a file will put it into
## a separate buffer).
#set multibuffer
## Don't convert files from DOS/Mac format.
# set noconvert
## Don't display the helpful shortcut lists at the bottom of the screen.
set nohelp
## Don't automatically add a newline when a file does not end with one.
# set nonewlines
## Set operating directory. nano will not read or write files outside
## this directory and its subdirectories. Also, the current directory
## is changed to here, so any files are inserted from this dir. A blank
## string means the operating-directory feature is turned off.
# set operatingdir ""
## Remember the cursor position in each file for the next editing session.
set positionlog
## Preserve the XON and XOFF keys (^Q and ^S).
# set preserve
## The characters treated as closing punctuation when justifying paragraphs.
## This may not contain blank characters. Only these closing punctuations,
## optionally followed by closing brackets, can end sentences.
# set punct "!.?"
## Make status-bar messages disappear after 1 keystroke instead of after 20.
# set quickblank
## The regular expression that matches quoting characters in email
## or line-comment introducers in source code. The default is:
# set quotestr "^([ ]*([!#%:;>|}]|//))+"
## Try to work around a mismatching terminfo terminal description.
# set rawsequences
## Fix Backspace/Delete confusion problem.
#set rebinddelete
## Do regular-expression searches by default.
## Regular expressions are of the extended type (ERE).
# set regexp
## Save a changed buffer automatically on exit; don't prompt.
# set saveonexit
## Put the cursor on the highlighted item in the file browser, and
## show the cursor in the help viewer; useful for people who use a
## braille display and people with poor vision.
# set showcursor
## Make the Home key smarter: when Home is pressed anywhere but at the
## very beginning of non-whitespace characters on a line, the cursor
## will jump to that beginning (either forwards or backwards). If the
## cursor is already at that position, it will jump to the true start
## of the line (the left edge).
set smarthome
## Spread overlong lines over multiple screen lines.
set softwrap
## Use this spelling checker instead of the internal one. This option
## does not have a default value.
# set speller "aspell -x -c"
## Use the end of the title bar for some state flags: I = auto-indenting,
## M = mark, L = hard-wrapping long lines, R = recording, S = soft-wrapping.
set stateflags
## Use this tab size instead of the default; it must be greater than 0.
# set tabsize 8
## Convert each typed tab to the fitting number of spaces.
set tabstospaces
## Snip whitespace at the end of lines when justifying or hard-wrapping.
set trimblanks
## Save files by default in Unix format (also when they were DOS or Mac).
# set unix
## The two single-column characters used to display the first characters
## of tabs and spaces. 187 in ISO 8859-1 (0000BB in Unicode) and 183 in
## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these.
## The default when in a UTF-8 locale:
# set whitespace "»·"
## The default otherwise:
# set whitespace ">."
## Detect word boundaries differently by treating punctuation
## characters as parts of words.
# set wordbounds
## The characters (besides alphanumeric ones) that should be considered
## as parts of words. This option does not have a default value. When
## set, it overrides option 'set wordbounds'.
# set wordchars "<_>."
## Let an unmodified Backspace or Delete erase the marked region (instead
## of a single character, and without affecting the cutbuffer).
#set zap
## Hide the bars plus help lines and use the whole terminal as edit area.
# set zero
## Paint the interface elements of nano. These are examples; there are
## no colors by default, except for errorcolor and spotlightcolor.
# set titlecolor bold,white,blue
# set promptcolor lightwhite,grey
set statuscolor bold,white,green
set errorcolor bold,white,red
# set spotlightcolor black,lightyellow
set minicolor bold,black,magenta
# set selectedcolor lightwhite,magenta
# set stripecolor ,yellow
# set scrollercolor cyan
set numbercolor yellow
# set keycolor cyan
# set functioncolor green
## In root's .nanorc you might want to use:
# set titlecolor bold,white,magenta
# set promptcolor black,yellow
# set statuscolor bold,white,magenta
# set errorcolor bold,white,red
# set spotlightcolor black,orange
# set selectedcolor lightwhite,cyan
# set stripecolor ,yellow
# set scrollercolor magenta
# set numbercolor magenta
# set keycolor lightmagenta
# set functioncolor magenta
## === Syntax coloring ===
## For all details, see 'man nanorc', section SYNTAX HIGHLIGHTING.
## To include most of the existing syntax definitions, you can do:
include "/usr/share/nano/*.nanorc"
## Or you can select just the ones you need. For example:
# include "/usr/share/nano/html.nanorc"
# include "/usr/share/nano/python.nanorc"
# include "/usr/share/nano/sh.nanorc"
## In /usr/share/nano/extra/ you can find some syntaxes that are
## specific for certain distros or for some less common languages.
## If <Tab> should always produce four spaces when editing a Python file,
## independent of the settings of 'tabsize' and 'tabstospaces':
#extendsyntax python tabgives " "
## If <Tab> should always produce an actual TAB when editing a Makefile:
#extendsyntax makefile tabgives " "
## === Key bindings ===
## For all details, see 'man nanorc', section REBINDING KEYS.
## If you want to suspend nano with one keystroke (instead of with ^T^Z):
# bind ^Z suspend main
## The <Ctrl+Delete> keystroke deletes the word to the right of the cursor.
## On some terminals the <Ctrl+Backspace> keystroke produces ^H, which is
## the ASCII character for backspace, so it is bound by default to the
## backspace function. The <Backspace> key itself produces a different
## keycode, which is hard-bound to the backspace function. So, if you
## normally use <Backspace> for backspacing and not ^H, you can make
## <Ctrl+Backspace> delete the word to the left of the cursor with:
# bind ^H chopwordleft main
## For a more mnemonic Comment keystroke (overriding Cut-from-cursor):
#bind M-K comment main
## If you want ^L to just refresh the screen and not center the cursor:
# bind ^L refresh main
## When you sometimes type M-J instead of M-K, or M-T instead of M-R:
# unbind M-J main
# unbind M-T main
## (Those functions are still accessible through ^T^J and ^T^V.)
## For quickly uppercasing or lowercasing the word under or after the cursor.
## (These effectively select a word and pipe it through a sed command.)
#funguje jen při vypnutém multibuferu
bind Sh-M-U "{nextword}{mark}{prevword}{execute}|sed 's/.*/\U&/'{enter}" main
bind Sh-M-L "{nextword}{mark}{prevword}{execute}|sed 's/.*/\L&/'{enter}" main
## For copying a marked region to the system clipboard:
# bind Sh-M-T "{execute}|xsel -ib{enter}{undo}" main
## For snipping trailing blanks when you save a file:
# bind ^S "{execute}| sed 's/\s\+$//' {enter}{savefile}" main
#zrušení origo zkratek
unbind ^U all
unbind ^K all
unbind ^N main
unbind ^Y all
unbind M-J main
unbind M-T main
unbind F2 all
unbind F3 all
unbind F4 all
unbind F5 all
unbind F6 all
unbind F7 all
unbind F8 all
unbind F9 all
unbind F10 all
unbind ^W all
unbind ^\ all
unbind Ins all
unbind M-U all
unbind M-E all
unbind M-6 all
unbind M-Q all
unbind M-W all
unbind ^B all
unbind ^F all
unbind ^Space all
unbind M-Space all
unbind M-- all
unbind M-+ all
unbind M-7 all
unbind M-6 all
unbind M-8 all
unbind M-9 all
unbind M-0 all
unbind M-K all
unbind ^H all
unbind ^D all
#uložení a ukončení nano bez ptaní
bind ^W "{savefile}{exit}" all
#ukončení s optáním pokud byl změněn obsah
bind ^Q exit all
#vyjmutí řádku nebo vyznačené oblasti
bind ^X cut main
#skopírování řádku nebo vyznačené oblasti
bind ^C copy main
#vložení řádku
bind ^V paste all
#smazání řádku
bind ^D zap main
#uložení souboru
bind ^S savefile main
#otevření souboru
bind ^O insert main
#otevření velké nápovědy
bind ^H help all
#zavření velké nápovědy
bind ^H exit help
#přepnutí mezi zobrazením a schováním spodní nápovědy
bind F1 nohelp all
#vyhledání slov
bind ^/ whereis all
#další výskyt hledaného
bind ^N findnext all
#předchozí výskyt
bind ^B findprevious all
#nahrazení textu
bind ^R replace main
#jdi na daný řádek
bind ^G gotoline main
#spusť
bind ^P execute main
# všeobecná zkratka pro zpět ctrl+z
bind ^Z undo main
bind ^Z cancel insert
bind ^Z cancel yesno
bind ^Z cancel gotodir
bind ^Z cancel search
bind ^Z cancel replace
bind ^Z cancel replacewith
bind ^Z cancel gotoline
bind ^Z cancel writeout
bind ^Z cancel whereisfile
bind ^Z cancel execute
#bind ^L linter execute
#bind ^K "{mark}{end}{zap}" main
#bind ^U "{mark}{home}{zap}" main
#opět proveď
bind ^Y redo main
#zakomentuj/odkomentuj
bind ^K comment main
# některé zkratky z MCEDIT
bind F2 savefile main
bind F3 mark main
bind F4 replace main
bind F5 copy main
bind F6 cut main
bind F7 whereis all
bind F8 zap main
bind F9 paste main
bind F10 exit main
Díky tomu fungují zkratky jako u widlí. Nepřekáží řádky s nápovědou a je to ještě navíc trochu obarvené.
Klávesou
F1 se přepíná zobrazování spodní nápovědy.
ctrl+z je v editaci jako zpět, v ostatních případech je to o zrušení příkazu. Jako vždy to mám okomentováno co je na co a dle libosti může každý upravit dle sebe. Více na
man nanorc a
man nano. Bohužel některé věci jsou v nano hardcoded. Takže nepodporuje sekvence kláves, buffery nejsou ideální. A člověk je omezen na některé funkcionalitě.
Jen pro ilustraci příklad jak na to. Otevřeme nějaký soubor:
nano testovaci.txt
a do něho vložíme třeba toto (zkopírováno z internetu):
CREATE PROCEDURE ziskej_film (nazev_filmu varchar(100))
BEGIN
IF EXISTS(SELECT * FROM filmy WHERE nazev = nazev_filmu) THEN
SELECT * FROM filmy WHERE nazev = nazev_filmu;
ELSE
INSERT INTO filmy (nazev) VALUES (nazev_filmu);
SELECT * FROM filmy WHERE nazev = nazev_filmu;
END IF;
END
A teď chceme změnit slovo
filmy za slovo
movie. Zmáčkneme
ctrl+r a zobrazí se dole hláška
Hledat (k nahrazení). Zmáčkneme
F1 na malou nápovědu a napíšem
film a stisknem
enter. Napíšem
movie a opět
enter. A na nápovědě se nám zobrazí
Ano, Ne, Vše, Zrušit. Lepší je jen postupně odklikávat
a, jinak se může stát že se přepíše i nějaká část slova které jsme nechtěli. Všimněte si, že v nabídce se můžete přepnout na regulární výrazy. To už je pak přepisování o něčem jiném. Jinak
ctrl+home je zkratka na skok na začátek dokumentu.
ctrl+end překvapivě na konec.
alt+N zobrazí/skryje čísla řádků.
ctrl+D nebo
alt+Del výmaz řádku. Výběr se shiftem (bohužel není podporováno s celými slovy). Fungují terminálové zkratky
ctrl+a skok na začátek řádku a
ctrl+e skok na konec řádku. Dále
ctrl+/ (unix) hledání je také funkční. Tato zkratka se používá hlavně ve spojení s příkazem
less. Ten je používán jako
pager nejen manuálových stránek a díky této zkratce se v tom dá dobře vyhledávat. Klávesou
n se vyhledává další výskyt a klávesou
b předchozí. Můžete si vytvořit i vlastní syntaxi a bude to s ní pracovat.
Na závěr jen doplním, že na
neovim to ani náhodou nemá, ale na základní editaci to stačí.
EDIT: typo