Difference between revisions of "Nano"
Kynikos.bot (talk | contribs) (remove language suffix from Category:Text editors (English), see Talk:Table of Contents#English Category Names: Capitalization and Conflict with i18n) |
Kynikos.bot (talk | contribs) (Template:Keypress is deprecated in favor of Template:ic, see Help talk:Style/Migration to new Code formatting templates#Template:Keypress) |
||
(11 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Text editors]] | [[Category:Text editors]] | ||
− | + | [[de:Nano]] | |
+ | [[it:Nano]] | ||
{{Lowercase title}} | {{Lowercase title}} | ||
[http://www.nano-editor.org/ GNU nano] (or nano) is a text editor which aims to introduce a simple interface and intuitive command options to console based text editing. nano is the default console editor in distributions such as Ubuntu and supports features including colorized syntax highlighting, DOS/Mac file type conversions, spellchecking and [[Wikipedia:UTF-8|UTF-8]] encoding. nano opened with an empty buffer typically occupies under 1.5 MB of resident memory. [http://i275.photobucket.com/albums/jj281/adamchrista/Arch%20Linux/Wiki%20Examples/nano-man.png nano Screenshot]. | [http://www.nano-editor.org/ GNU nano] (or nano) is a text editor which aims to introduce a simple interface and intuitive command options to console based text editing. nano is the default console editor in distributions such as Ubuntu and supports features including colorized syntax highlighting, DOS/Mac file type conversions, spellchecking and [[Wikipedia:UTF-8|UTF-8]] encoding. nano opened with an empty buffer typically occupies under 1.5 MB of resident memory. [http://i275.photobucket.com/albums/jj281/adamchrista/Arch%20Linux/Wiki%20Examples/nano-man.png nano Screenshot]. | ||
− | == Package | + | == Package installation == |
{{Pkg|nano}} is part of the [[Official Repositories|Arch Linux [core] repository]], usually installed by default by AIF. | {{Pkg|nano}} is part of the [[Official Repositories|Arch Linux [core] repository]], usually installed by default by AIF. | ||
Line 19: | Line 20: | ||
Proceed to establish the nano console environment by setting and/or unsetting commands within {{Ic|.nanorc}} file. | Proceed to establish the nano console environment by setting and/or unsetting commands within {{Ic|.nanorc}} file. | ||
− | {{Tip|[http://www.nano-editor.org/dist/v2. | + | {{Tip|[http://www.nano-editor.org/dist/v2.2/nanorc.5.html NANORC] details the complete list configuration commands available for nano.|}} |
{{Note|Command-line arguments override and take precedence over the configuration commands established in .nanorc|}} | {{Note|Command-line arguments override and take precedence over the configuration commands established in .nanorc|}} | ||
− | ==== | + | === Syntax highlighting === |
− | This new version highlights like the | + | ==== for PKGBUILD files ==== |
+ | This new version highlights like the Arch Linux [https://projects.archlinux.org/svntogit/packages.git/tree "svntogit-server"]. | ||
# Arch PKGBUILD files | # Arch PKGBUILD files | ||
# | # | ||
Line 45: | Line 47: | ||
color brightblack "#.*$" | color brightblack "#.*$" | ||
− | This is another version from this [ | + | This is another version from this [https://bbs.archlinux.org/viewtopic.php?pid=565476 forum thread]. |
## Arch PKGBUILD files | ## Arch PKGBUILD files | ||
Line 73: | Line 75: | ||
To use, save as /usr/share/nano/pkgbuild.nanorc and add: | To use, save as /usr/share/nano/pkgbuild.nanorc and add: | ||
include "/usr/share/nano/pkgbuild.nanorc" | include "/usr/share/nano/pkgbuild.nanorc" | ||
− | to your {{Ic|~/.nanorc}} | + | to your {{Ic|~/.nanorc}} or to {{Ic|/etc/nanorc}}. |
− | + | ==== Other definitions ==== | |
+ | Syntax highlighting enhancements which replace and expand the defaults can be found in the AUR, {{AUR|nano-syntax-highlighting-git}}. | ||
− | === Suggested | + | === Suggested configuration === |
==== Suspension ==== | ==== Suspension ==== | ||
− | Unlike most interactive programs, suspension is not enabled by default. To change this, uncomment the 'set suspend' line in {{Ic|/etc/nanorc}}. This will allow you to use the keys {{ | + | Unlike most interactive programs, suspension is not enabled by default. To change this, uncomment the 'set suspend' line in {{Ic|/etc/nanorc}}. This will allow you to use the keys {{ic|Ctrl+z}} to send nano to the background. |
==== Do not wrap text ==== | ==== Do not wrap text ==== | ||
Line 87: | Line 90: | ||
set nowrap | set nowrap | ||
− | == nano | + | == nano usage == |
− | === Special | + | === Special functions === |
− | * {{ | + | * {{ic|Ctrl}} key modified shortcuts ({{Ic|^}}) representing commonly used functions are listed along the bottom two lines of the nano screen. |
− | * Additional functions can be interactively toggled by way of {{Ic|Meta}} (typically {{ | + | * Additional functions can be interactively toggled by way of {{Ic|Meta}} (typically {{ic|Alt}}) and/or {{ic|Esc}} key modified sequences. |
− | ==== Shortcut | + | ==== Shortcut lists overview ==== |
− | * {{Ic|^G Get Help}} ({{ | + | * {{Ic|^G Get Help}} ({{ic|F1}}) |
: Displays the online help files within the session window. A suggested read for nano users of all levels | : Displays the online help files within the session window. A suggested read for nano users of all levels | ||
− | * {{Ic|^O WriteOut}} ({{ | + | * {{Ic|^O WriteOut}} ({{ic|F3}}) |
: Save the contents of the current file buffer to a file on the disk | : Save the contents of the current file buffer to a file on the disk | ||
− | * {{Ic|^R Read File}} ({{ | + | * {{Ic|^R Read File}} ({{ic|F5}}) |
: Inserts another file into the current one at the cursor location | : Inserts another file into the current one at the cursor location | ||
− | * {{Ic|^Y Prev Page}} ({{ | + | * {{Ic|^Y Prev Page}} ({{ic|F7}}) |
: Display the previous buffered screen | : Display the previous buffered screen | ||
− | * {{Ic|^K Cut Text}} ({{ | + | * {{Ic|^K Cut Text}} ({{ic|F9}}) |
: Cut and store the current line from the beginning of the line to the end of the line | : Cut and store the current line from the beginning of the line to the end of the line | ||
− | * {{Ic|^C Cur Pos}} ({{ | + | * {{Ic|^C Cur Pos}} ({{ic|F11}}) |
: Display line, column and character position information at the current location of the cursor | : Display line, column and character position information at the current location of the cursor | ||
− | * {{Ic|^X Exit}} ({{ | + | * {{Ic|^X Exit}} ({{ic|F2}}) |
: Close and exit nano | : Close and exit nano | ||
− | * {{Ic|^J Justify}} ({{ | + | * {{Ic|^J Justify}} ({{ic|F4}}) |
: Aligns text according to the geometry of the console window | : Aligns text according to the geometry of the console window | ||
− | * {{Ic|^W Where}} ({{ | + | * {{Ic|^W Where}} ({{ic|F6}}) |
: Perform a case-insensitive string, or regular expression search | : Perform a case-insensitive string, or regular expression search | ||
− | * {{Ic|^V Next Page}} ({{ | + | * {{Ic|^V Next Page}} ({{ic|F8}}) |
: Display the next buffered screen | : Display the next buffered screen | ||
− | * {{Ic|^U UnCut Text}} ({{ | + | * {{Ic|^U UnCut Text}} ({{ic|F10}}) |
: Paste the contents of the cut buffer to the current cursor location | : Paste the contents of the cut buffer to the current cursor location | ||
− | * {{Ic|^T To Spell}} ({{ | + | * {{Ic|^T To Spell}} ({{ic|F12}}) |
: Spellcheck the contents of the buffer with the built-in {{Ic|spell}}, if available | : Spellcheck the contents of the buffer with the built-in {{Ic|spell}}, if available | ||
− | {{Tip|See the nano online help files via {{ | + | {{Tip|See the nano online help files via {{ic|Ctrl+g}} within nano and the [http://www.nano-editor.org/dist/v2.1/nano.html nano Command Manual] for complete descriptions and additional support.|}} |
− | ==== Selected | + | ==== Selected toggle functions ==== |
− | * {{Ic|Meta+c}} (or {{ | + | * {{Ic|Meta+c}} (or {{ic|Esc+c}}) |
: Toggles support for line, column and character position information. | : Toggles support for line, column and character position information. | ||
− | * {{Ic|Meta+i}} (or {{ | + | * {{Ic|Meta+i}} (or {{ic|Esc+i}}) |
: Toggles support for the auto indentation of lines | : Toggles support for the auto indentation of lines | ||
− | * {{Ic|Meta+k}} (or {{ | + | * {{Ic|Meta+k}} (or {{ic|Esc+k}}) |
: Toggles support for cutting text from the current cursor position to the end of the line | : Toggles support for cutting text from the current cursor position to the end of the line | ||
− | * {{Ic|Meta+m}} (or {{ | + | * {{Ic|Meta+m}} (or {{ic|Esc+m}}) |
: Toggles mouse support for cursor placement, marking and shortcut execution | : Toggles mouse support for cursor placement, marking and shortcut execution | ||
− | * {{Ic|Meta+x}} (or {{ | + | * {{Ic|Meta+x}} (or {{ic|Esc+x}}) |
: Toggles the display of the shortcut list at the bottom of the nano screen for additional screen space | : Toggles the display of the shortcut list at the bottom of the nano screen for additional screen space | ||
{{Tip|[http://www.nano-editor.org/dist/v2.1/nano.html#Feature-Toggles Feature Toggles] lists the global toggles available for nano.|}} | {{Tip|[http://www.nano-editor.org/dist/v2.1/nano.html#Feature-Toggles Feature Toggles] lists the global toggles available for nano.|}} | ||
− | == Tips & | + | == Tips & tricks == |
=== Replacing vi with nano === | === Replacing vi with nano === | ||
Casual users may prefer the use of {{Ic|nano}} over {{Ic|vi}} for its simplicity and ease of use and may opt to replace vi with nano as the default text editor for commands such as '''visudo'''. | Casual users may prefer the use of {{Ic|nano}} over {{Ic|vi}} for its simplicity and ease of use and may opt to replace vi with nano as the default text editor for commands such as '''visudo'''. | ||
− | ==== Method | + | ==== Method one ==== |
{{Warning|From {{Ic|man 8 visudo}}: ''Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.''}} | {{Warning|From {{Ic|man 8 visudo}}: ''Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.''}} | ||
Line 149: | Line 152: | ||
export EDITOR=nano | export EDITOR=nano | ||
− | ===== Example | + | ===== Example usage ===== |
export EDITOR=nano && sudo visudo | export EDITOR=nano && sudo visudo | ||
− | ==== Method | + | ==== Method two ==== |
{{Warning|From {{Ic|man 8 visudo}}: ''Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.''}} | {{Warning|From {{Ic|man 8 visudo}}: ''Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.''}} | ||
Line 173: | Line 176: | ||
}} | }} | ||
− | ==== Method | + | ==== Method three ==== |
{{Note|This method can be considered draconian and may not be suitable for all users. Nonetheless, the following procedure exists as a viable example solution.}} | {{Note|This method can be considered draconian and may not be suitable for all users. Nonetheless, the following procedure exists as a viable example solution.}} | ||
− | ===== Symbolic | + | ===== Symbolic linking ===== |
As root, or with {{Ic|su -}} | As root, or with {{Ic|su -}} | ||
Line 185: | Line 188: | ||
# ln -s /usr/bin/nano /usr/bin/vi | # ln -s /usr/bin/nano /usr/bin/vi | ||
− | Assuming sudo is installed and properly configured | + | Assuming sudo is installed and properly configured. You will need to add {{Ic|vi}} to the {{ic|IgnorePkg}} list in {{ic|pacman.conf}} to make this permanent. Otherwise it will revert back to {{Ic|vi}} the next time it is updated. |
===== Restoration of vi ===== | ===== Restoration of vi ===== | ||
Line 194: | Line 197: | ||
mv /usr/bin/vi.old /usr/bin/vi | mv /usr/bin/vi.old /usr/bin/vi | ||
− | ==== Method | + | ==== Method four ==== |
{{Note|This method can be considered draconian and may not be suitable for all users. Nonetheless, the following procedure exists as a viable example solution.}} | {{Note|This method can be considered draconian and may not be suitable for all users. Nonetheless, the following procedure exists as a viable example solution.}} | ||
− | ===== Removal & | + | ===== Removal & symbolic linking ===== |
Use [[Pacman|pacman]] to remove the {{Ic|vi}} package, its configuration, and all unneeded dependencies: | Use [[Pacman|pacman]] to remove the {{Ic|vi}} package, its configuration, and all unneeded dependencies: | ||
pacman -Rns vi | pacman -Rns vi | ||
Line 213: | Line 216: | ||
{{Box Note|Do not clean {{Ic|-c}} or refresh {{Ic|-y}} the package database if you wish to retain the previously installed version of the {{Ic|vi}} package.<br>If this case, subsequent updates will also require the judicious use of the {{Ic|--ignore vi}} switch (and optionally {{Ic|--ignore glibc ncurses coreutils}}).|}} | {{Box Note|Do not clean {{Ic|-c}} or refresh {{Ic|-y}} the package database if you wish to retain the previously installed version of the {{Ic|vi}} package.<br>If this case, subsequent updates will also require the judicious use of the {{Ic|--ignore vi}} switch (and optionally {{Ic|--ignore glibc ncurses coreutils}}).|}} | ||
− | == Additional | + | == Additional resources == |
− | * [ | + | * [[wikipedia:Nano_(text_editor)|nano (text editor)]] - Wikipedia Entry |
* [http://www.nano-editor.org/ GNU nano Homepage] - Official Site | * [http://www.nano-editor.org/ GNU nano Homepage] - Official Site | ||
* [https://savannah.gnu.org/bugs/?group=nano GNU nano Bugs] Bug Reporting | * [https://savannah.gnu.org/bugs/?group=nano GNU nano Bugs] Bug Reporting | ||
+ | * [https://github.com/craigbarnes/nanorc Better syntax highlighting definitions] |
Revision as of 10:42, 1 September 2013
GNU nano (or nano) is a text editor which aims to introduce a simple interface and intuitive command options to console based text editing. nano is the default console editor in distributions such as Ubuntu and supports features including colorized syntax highlighting, DOS/Mac file type conversions, spellchecking and UTF-8 encoding. nano opened with an empty buffer typically occupies under 1.5 MB of resident memory. nano Screenshot.
Package installation
nano is part of the Arch Linux [core] repository, usually installed by default by AIF.
Configuration
Creating ~/.nanorc
The look, feel and function of nano is typically controlled by way of either command-line arguments, or configuration commands within the file ~/.nanorc
.
A sample configuration file is installed upon program installation and is located at /etc/nanorc
.The file ~/.nanorc
must be first created by the user:
$ cd ~ $ touch .nanorc
or
$ cp /etc/nanorc ~/.nanorc
Proceed to establish the nano console environment by setting and/or unsetting commands within .nanorc
file.
Syntax highlighting
for PKGBUILD files
This new version highlights like the Arch Linux "svntogit-server".
# Arch PKGBUILD files # syntax "pkgbuild" "^.*PKGBUILD*" # commands color red "\<(cd|echo|enable|exec|export|kill|popd|pushd|read|source|touch|type)\>" color brightblack "\<(case|cat|chmod|chown|cp|diff|do|done|elif|else|esac|exit|fi|find|for|ftp|function|grep|gzip|if|in)\>" color brightblack "\<(install|ln|local|make|mv|patch|return|rm|sed|select|shift|sleep|tar|then|time|until|while|yes)\>" # ${*} icolor blue "\$\{?[0-9A-Z_!@#$*?-]+\}?" # numerics color blue "\ [0-9]*" color blue "\.[0-9]*" color blue "\-[0-9]*" color blue "=[0-9]" # spaces color ,green "[[:space:]]+$" # strings; multilines are not supported color brightred ""(\\.|[^"])*"" "'(\\.|[^'])*'" # comments color brightblack "#.*$"
This is another version from this forum thread.
## Arch PKGBUILD files ## syntax "pkgbuild" "^.*PKGBUILD$" color green start="^." end="$" color cyan "^.*(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license).*=.*$" color brightcyan "\<(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license)\>" color brightcyan "(\$|\$\{|\$\()(pkgbase|pkgname|pkgver|pkgrel|pkgdesc|arch|url|license)(|\}|\))" color cyan "^.*(depends|makedepends|optdepends|conflicts|provides|replaces).*=.*$" color brightcyan "\<(depends|makedepends|optdepends|conflicts|provides|replaces)\>" color brightcyan "(\$|\$\{|\$\()(depends|makedepends|optdepends|conflicts|provides|replaces)(|\}|\))" color cyan "^.*(groups|backup|noextract|options).*=.*$" color brightcyan "\<(groups|backup|noextract|options)\>" color brightcyan "(\$|\$\{|\$\()(groups|backup|noextract|options)(|\}|\))" color cyan "^.*(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums).*=.*$" color brightcyan "\<(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums)\>" color brightcyan "(\$|\$\{|\$\()(install|source|md5sums|sha1sums|sha256sums|sha384sums|sha512sums)(|\}|\))" color brightcyan "\<(startdir|srcdir|pkgdir)\>" color cyan "\.install" color brightwhite "=" "'" "\(" "\)" "\"" "#.*$" "\," "\{" "\}" color brightred "build\(\)" color brightred "package_.*.*$" color brightred "\<(configure|make|cmake|scons)\>" color red "\<(DESTDIR|PREFIX|prefix|sysconfdir|datadir|libdir|includedir|mandir|infodir)\>"
To use, save as /usr/share/nano/pkgbuild.nanorc and add:
include "/usr/share/nano/pkgbuild.nanorc"
to your ~/.nanorc
or to /etc/nanorc
.
Other definitions
Syntax highlighting enhancements which replace and expand the defaults can be found in the AUR, nano-syntax-highlighting-gitAUR.
Suggested configuration
Suspension
Unlike most interactive programs, suspension is not enabled by default. To change this, uncomment the 'set suspend' line in /etc/nanorc
. This will allow you to use the keys Ctrl+z
to send nano to the background.
Do not wrap text
If you are coming from another distribution, you might wonder about nano's strange behaviour, so just edit /etc/nanorc like this:
## Do not wrap text at all. set nowrap
nano usage
Special functions
-
Ctrl
key modified shortcuts (^
) representing commonly used functions are listed along the bottom two lines of the nano screen. - Additional functions can be interactively toggled by way of
Meta
(typicallyAlt
) and/orEsc
key modified sequences.
Shortcut lists overview
-
^G Get Help
(F1
)
- Displays the online help files within the session window. A suggested read for nano users of all levels
-
^O WriteOut
(F3
)
- Save the contents of the current file buffer to a file on the disk
-
^R Read File
(F5
)
- Inserts another file into the current one at the cursor location
-
^Y Prev Page
(F7
)
- Display the previous buffered screen
-
^K Cut Text
(F9
)
- Cut and store the current line from the beginning of the line to the end of the line
-
^C Cur Pos
(F11
)
- Display line, column and character position information at the current location of the cursor
-
^X Exit
(F2
)
- Close and exit nano
-
^J Justify
(F4
)
- Aligns text according to the geometry of the console window
-
^W Where
(F6
)
- Perform a case-insensitive string, or regular expression search
-
^V Next Page
(F8
)
- Display the next buffered screen
-
^U UnCut Text
(F10
)
- Paste the contents of the cut buffer to the current cursor location
-
^T To Spell
(F12
)
- Spellcheck the contents of the buffer with the built-in
spell
, if available
Ctrl+g
within nano and the nano Command Manual for complete descriptions and additional support.Selected toggle functions
-
Meta+c
(orEsc+c
)
- Toggles support for line, column and character position information.
-
Meta+i
(orEsc+i
)
- Toggles support for the auto indentation of lines
-
Meta+k
(orEsc+k
)
- Toggles support for cutting text from the current cursor position to the end of the line
-
Meta+m
(orEsc+m
)
- Toggles mouse support for cursor placement, marking and shortcut execution
-
Meta+x
(orEsc+x
)
- Toggles the display of the shortcut list at the bottom of the nano screen for additional screen space
Tips & tricks
Replacing vi with nano
Casual users may prefer the use of nano
over vi
for its simplicity and ease of use and may opt to replace vi with nano as the default text editor for commands such as visudo.
Method one
man 8 visudo
: Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.sudo from the core repository is compiled with --with-env-editor
by default and honors the use of the VISUAL
and EDITOR
variables. To establish nano as the visudo editor for the duration of the current shell session, set and export the EDITOR
variable before calling visudo.
export EDITOR=nano
Example usage
export EDITOR=nano && sudo visudo
Method two
man 8 visudo
: Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.The EDITOR variable can also be set within the following files for persistent use:
- ~/.bash_profile (login shell)
- ~/.bashrc (interactive, non-login shell)
- /etc/profile (global settings for all system users except
root
)
Example .bash_profile
. $HOME/.bashrc
Method three
Symbolic linking
As root, or with su -
Rename the vi
executable to vi.old
for ease of restoration:
# mv /usr/bin/vi /usr/bin/vi.old
Create a symbolic link from /usr/bin/nano
to /usr/bin/vi
# ln -s /usr/bin/nano /usr/bin/vi
Assuming sudo is installed and properly configured. You will need to add vi
to the IgnorePkg
list in pacman.conf
to make this permanent. Otherwise it will revert back to vi
the next time it is updated.
Restoration of vi
Remove the /usr/bin/vi
symbolic link:
unlink /usr/bin/vi
Rename the vi.old
executable back to vi
:
mv /usr/bin/vi.old /usr/bin/vi
Method four
Removal & symbolic linking
Use pacman to remove the vi
package, its configuration, and all unneeded dependencies:
pacman -Rns vi
Create a symbolic link from /usr/bin/nano
to /usr/bin/vi
:
ln -s /usr/bin/nano /usr/bin/vi
Restoration of vi
Remove the /usr/bin/vi
symbolic link:
unlink /usr/bin/vi
Use pacman to install the previously deinstallled vi
package:
pacman -S vi
Additional resources
- nano (text editor) - Wikipedia Entry
- GNU nano Homepage - Official Site
- GNU nano Bugs Bug Reporting
- Better syntax highlighting definitions