{"id":325096,"date":"2021-06-18T09:00:24","date_gmt":"2021-06-18T09:00:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=325096"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=325096","title":{"rendered":"Mein Konfig: \u044d\u043a\u0441\u043a\u0443\u0440\u0441\u0438\u044f \u043f\u043e dotfiles (\u0447\u0430\u0441\u0442\u044c 2)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u0421\u0442\u0430\u0442\u044c\u044f-\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/563426\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u043e\u043f\u0438\u0441\u0430\u0442\u044c. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 \u043d\u0435\u0439 \u044f \u043d\u0430\u0447\u0430\u043b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 dotfiles.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/859\/12f\/083\/85912f083e230deef747e59c2eec708f.jpg\"><br \/>  <a name=\"habracut\"><\/a><\/p>\n<h2>grep<\/h2>\n<p>  \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e <em>less<\/em>-\u043e\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 GNU grep:<\/p>\n<pre> ----- ~\/.zshrc ----- GREP_ARGS=(     --colour=always     --with-filename     --line-number     --dereference-recursive     --binary-files=without-match     --exclude-dir=.git     --exclude-dir=.tags ) g() { grep $GREP_ARGS $@ | less } GS() { grep $GREP_ARGS $@ | sort --numeric-sort | less } alias -g G=&quot;| grep --colour=always&quot; <\/pre>\n<p>  \u0412\u0441\u0435 \u043e\u043f\u0446\u0438\u0438 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0441\u0430\u043c\u0438 \u0437\u0430 \u0441\u0435\u0431\u044f. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0451 \u0432 \u043f\u0435\u0439\u0434\u0436\u0435\u0440. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 pipe-aware \u0430\u043b\u0438\u0430\u0441 <em>G<\/em>: <em>f bar G foo W<\/em> \u0431\u0443\u0434\u0435\u0442, \u0433\u0440\u0443\u0431\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u043c <em>find. -name &quot;*bar*&quot; | grep foo | wc -l<\/em>. <em>GS<\/em> \u0431\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0433\u0434\u0435 \u0432\u0430\u0436\u0435\u043d \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0410 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043e\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438, \u0442\u0430\u043a \u043a\u0430\u043a <em>gs<\/em> \u044d\u0442\u043e Ghostscript, \u0430 \u043d\u0430\u0431\u0438\u0440\u0430\u044f <em>gS<\/em> \u0447\u0430\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432\u043e\u0432\u0440\u0435\u043c\u044f Shift-\u0430 \u0434\u043b\u044f \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u00abS\u00bb.<\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 GNU grep, \u0432\u0435\u0434\u044c \u0443 \u043c\u0435\u043d\u044f \u0436\u0435 \u0435\u0441\u0442\u044c <em>grep<\/em> \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0432 \u0441\u0430\u043c\u043e\u0439 FreeBSD? \u041a\u0430\u043a \u0431\u044b \u043d\u0435 \u0443\u0432\u0430\u0436\u0430\u043b GNU \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430 \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0434\u0435\u044f\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u041f\u041e, \u043a\u0430\u043a \u0431\u044b \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u043b GNU \u043f\u0440\u043e\u0435\u043a\u0442 \u0437\u0430 \u0443\u043c\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u044b\u0439 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c, \u043f\u0443\u0445\u043b\u044b\u0439 \u0438 \u043f\u0435\u0440\u0435\u0443\u0441\u043b\u043e\u0436\u043d\u0451\u043d\u043d\u044b\u0439 \u0441\u043e\u0444\u0442, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441 GNU-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u043c\u0438, \u043d\u043e GNU grep \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 *BSD \u0432\u0435\u0440\u0441\u0438\u0439. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043d\u0435 \u0442\u0430\u043a\u043e\u0439 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 <em>ack<\/em>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Perl. \u041f\u043e \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e GNU sed \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u043e\u043d \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c.<\/p>\n<h2>.zshenv<\/h2>\n<p>  \u0412 <em>~\/.zshenv<\/em> \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u043b\u044c\u0448\u0443\u044e \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b. \u041d\u043e \u043f\u043e\u043a\u0430 \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u043b\u044b\u0435 \u043f\u044f\u0442\u043d\u0430:<\/p>\n<pre> ----- ~\/.zshenv ----- path=(~\/bin ~\/local\/bin \/usr\/local\/bin \/usr\/local\/sbin \/usr\/bin \/usr\/sbin \/bin \/sbin) manpath=(     ~\/local\/share\/man     \/usr\/local\/lib\/perl5\/5.26\/perl\/man     \/usr\/local\/lib\/perl5\/site_perl\/man     \/usr\/share\/openssl\/man     \/usr\/local\/share\/man     \/usr\/local\/man     \/usr\/share\/man ) export -TU INFOPATH infopath infopath=(~\/local\/share\/info \/usr\/local\/share\/info \/usr\/local\/info)  manpath=(~\/src\/suckless\/tabbed $manpath) path=(~\/src\/suckless\/tabbed $path)  path=(~\/work\/goredo $path)  export -TU PKG_CONFIG_PATH pkg_config_path pkg_config_path=(~\/local\/lib\/pkgconfig ~\/local\/libdata\/pkgconfig)  # C related {{{ export CFLAGS=&quot;-I$HOME\/local\/include -I\/usr\/local\/include&quot; export LDFLAGS=&quot;-L$HOME\/local\/lib -L\/usr\/local\/lib&quot; export -TU LD_LIBRARY_PATH ld_library_path ld_library_path=(~\/local\/lib) # }}}  # Go related {{{ export GOPATH=$HOME\/work\/gopath path=($GOPATH\/bin ~\/work\/go\/bin $path) # }}} <\/pre>\n<p>  \u0412\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0443\u0442\u0435\u0439 \u0434\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, man, info, pkg-config, \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e. <em>zsh<\/em> \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435\u00bb \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0441 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u044d\u0442\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0412\u0435\u0434\u044c <em>PATH=foo:bar<\/em> \u044d\u0442\u043e, \u043f\u043e \u0441\u0443\u0442\u0438, \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 <em>foo<\/em> \u0438 <em>bar<\/em>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0430\u043f\u0440\u0438\u043e\u0440\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b (<em>path<\/em>, <em>manpath<\/em>), \u0430 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u044e binding \u0447\u0435\u0440\u0435\u0437 <em>export -TU<\/em>. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u0430 \u0438 error prone.<\/p>\n<pre> ----- ~\/.zshenv ----- export XDG_CACHE_HOME=\/tmp\/stargrave-xdg export XDG_CONFIG_HOME=\/tmp\/stargrave-xdg export XDG_DATA_HOME=\/tmp\/stargrave-xdg export XDG_RUNTIME_DIR=\/tmp\/stargrave-xdg <\/pre>\n<p>  \u0422\u0430\u043a \u0443\u0436 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 freedesktop.org, \u043c\u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u0435\u0442 \u0432\u0441\u0435\u043c Unix, DJB-way \u0438 suckless \u043c\u0438\u0440\u043e\u0432\u043e\u0437\u0437\u0440\u0435\u043d\u0438\u044f\u043c. \u0425\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u0412 Unix \u043c\u0438\u0440\u0435 \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441 \u0442\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e. XDG \u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e. \u0411\u043b\u0430\u0433\u043e, \u0432\u0435\u0437\u0451\u0442, \u0447\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0443\u0432\u0430\u0436\u0430\u044e\u0442 XDG \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2014 \u043c\u043d\u0435 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0432 \u043f\u043b\u0430\u043d\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 tmpfs \u0441\u043e\u0437\u0434\u0430\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f \u043d\u0438\u0445, \u0433\u0434\u0435 \u043e\u0441\u0435\u0434\u0430\u044e\u0442 \u043a\u044d\u0448\u0438 \u0438 default \u043a\u043e\u043d\u0444\u0438\u0433\u0438.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre> ----- ~\/.zshev ----- export SHELL=\/bin\/zsh export EDITOR=vim export TZ=Europe\/Moscow export IFCONFIG_FORMAT=inet:cidr,inet6:cidr export SSH_AUTH_SOCK=$HOME\/.ssh\/agent export MAILDIR=$HOME\/mail export DBUS_SESSION_BUS_ADDRESS=disabled: export MYSQL_HISTFILE=\/tmp\/.mysql_history export SHARNESS_TEST_SRCDIR=$HOME\/local\/stow\/sharness\/share\/sharness <\/pre>\n<ul>\n<li><em>IFCONFIG_FORMAT<\/em> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 <em>ifconfig<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 CIDR \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c \u0438 \u0443\u0434\u043e\u0431\u043d\u043e\u043c \u0434\u043b\u044f \u043c\u0435\u043d\u044f.<\/li>\n<li><em>DBUS_SESSION_BUS_ADDRESS<\/em> \u2014 \u0437\u0430\u043f\u0440\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f DBus \u0434\u0435\u043c\u043e\u043d\u0430. \u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u044f\u0449\u0435\u0435 \u043c\u043d\u0435 freedesktop.org \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435.<\/li>\n<\/ul>\n<h2>autoenv<\/h2>\n<pre> ----- ~\/.zshrc ----- export AUTOENV_AUTH_FILE=~\/.zautoenv-auth . ~\/work\/zsh-autoenv\/autoenv.zsh <\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0436\u0443 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u043e \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443. \u0414\u043b\u044f Python \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <em>virtualenv<\/em>. \u0414\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u0421\u0438 \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 <em>PATH<\/em>, <em>LD_LIBRARY_PATH<\/em>. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b <em>PROJ\/.init<\/em> \u0444\u0430\u0439\u043b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u043b source (<em>.<\/em>-\u043a\u043e\u043c\u0430\u043d\u0434\u0430). \u0411\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u0432 \u043d\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0438 <em>cd<\/em> \u0432 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0422\u043e \u0435\u0441\u0442\u044c, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c source, \u0430 \u043f\u043e\u0442\u043e\u043c \u0435\u0449\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 <em>cd<\/em> \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e. \u0421 \u00ab\u043e\u0442\u043c\u0435\u043d\u043e\u0439\u00bb \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043d\u0435 \u043f\u0430\u0440\u0438\u043b\u0441\u044f \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 shell \u0441 \u0447\u0438\u0441\u0442\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>  \u041d\u0430\u0448\u0451\u043b \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438: <a href=\"https:\/\/direnv.net\/\" rel=\"nofollow noopener noreferrer\">direnv<\/a> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e\u0441\u0442\u0438, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0435\u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438) \u0438 <a href=\"https:\/\/github.com\/Tarrasch\/zsh-autoenv\" rel=\"nofollow noopener noreferrer\">zsh-autoenv<\/a>. \u041d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043c\u043d\u043e\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e <a href=\"http:\/\/www.git.stargrave.org\/?p=zsh-autoenv.git;a=blob;f=README;hb=HEAD\" rel=\"nofollow noopener noreferrer\">\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d<\/a>, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0431\u0438\u0440\u0430\u043d\u0438\u0435\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0436\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u0432\u043e\u0439 PyDERASN \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u0430\u0436\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 (<em>cd ~pyd\/tests<\/em>), \u0442\u043e \u0432 \u043d\u0451\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f:<\/p>\n<pre> ----- ~pyd\/.autoenv.zsh ----- venv workon pyderasn3 <\/pre>\n<pre> ----- ~\/.zshrc ----- venv() { . \/usr\/local\/bin\/virtualenvwrapper.sh } <\/pre>\n<p>  \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0449\u0438\u0439 <em>virtualenv<\/em>. \u0415\u0441\u043b\u0438 \u043f\u043e\u043a\u0438\u043d\u0443 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e <em>~pyd<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f:<\/p>\n<pre> ----- ~pyd\/.autoenv_leave.zsh ----- deactivate <\/pre>\n<p>  \u041d\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0434\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre> ----- ~arbeit\/.autoenv.zsh ----- autostash LD_LIBRARY_PATH MANPATH TESSERACT=ALTERED_STATE ld_library_path=(     ~\/work\/arbeit.ru\/deps\/libressl\/lib     ~\/work\/arbeit.ru\/local\/lib     $ld_library_path ) manpath=(~\/work\/arbeit.ru\/deps\/libressl\/share\/man $manpath) <\/pre>\n<p>  <em>autostash<\/em> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0432 \u043c\u043e\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <em>zsh-autoenv<\/em>, \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0435\u0439 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e <em>autostash<\/em> \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 <em>.autoenv_leave.zsh<\/em> \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439! \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c arbeit \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e <em>.autoenv_leave.zsh<\/em>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <em>direnv<\/em>, \u0432\u0441\u0451 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 <em>zsh<\/em> \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438, \u0430 \u043d\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438. \u041c\u043e\u0436\u043d\u043e \u0438 \u0446\u0432\u0435\u0442\u0430 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0441\u0451 \u0447\u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443.<\/p>\n<p>  \u0410 \u0434\u043b\u044f \u043f\u0443\u0449\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, <em>zsh-autoenv<\/em> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u044f\u0432\u043d\u043e\u0433\u043e \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0432 \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u041f\u043e\u0434\u0441\u0443\u043d\u0443\u0442\u044c <em>.autoenv.zsh<\/em> \u0432 git \u043a\u043e\u043c\u043c\u0438\u0442 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442.<\/p>\n<h2>.zprofile<\/h2>\n<p>  \u0417\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 <em>zsh<\/em> \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043a\u0443\u0447\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u0441\u043e\u0442\u043d\u0438 \u0441\u0442\u0440\u043e\u043a. \u041a\u043e\u043d\u0444\u0438\u0433 \u0434\u043b\u044f root-\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u0435\u0433\u043e-\u043b\u0438\u0448\u044c \u0438\u0437:<\/p>\n<pre> ----- \/root\/.zshrc ----- bindkey -v bindkey &quot;^[[1~&quot; beginning-of-line bindkey &quot;^[[4~&quot; end-of-line export PS1=&quot;%2~%# &quot; export PAGER=less export IFCONFIG_FORMAT=inet:cidr,inet6:cidr export LESSHISTFILE=- export XDG_CACHE_HOME=\/tmp\/root-xdg export XDG_CONFIG_HOME=\/tmp\/root-xdg export XDG_DATA_HOME=\/tmp\/root-xdg export XDG_RUNTIME_DIR=\/tmp\/root-xdg mkdir -p \/tmp\/root-xdg umask 077 <\/pre>\n<p>  \u0410 \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0444\u0438\u0447 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 <em>!$:h:s\/m\/f\/<\/em> (\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u0430\u043d \u0445\u0432\u043e\u0441\u0442 (\u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438) \u0438 \u0432 \u043d\u0451\u043c \u0437\u0430\u043c\u0435\u043d\u0430 \u00abm\u00bb \u043d\u0430 \u00abf\u00bb \u2014 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440) \u2014 \u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e <em>zsh<\/em>. \u042f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043d\u0430\u0445\u043e\u0434\u044f \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e \u0434\u044e\u0436\u0438\u043d\u0435 \u043d\u043e\u0432\u044b\u0445 \u0442\u0440\u044e\u043a\u043e\u0432, \u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430 \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c. \u041e\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e!<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0443 \u043f\u0440\u043e <em>zsh<\/em> \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u044b\u0445\u043e\u0434\u0430:<\/p>\n<pre> ----- ~\/.zprofile ----- umask 077 [[ -r $LESSKEY ]] || lesskey -o $LESSKEY [[ -e $XDG_DATA_HOME ]] || mkdir -p $XDG_DATA_HOME \/tmp\/stargrave-lldb \/tmp\/stargrave-flags [[ -n &quot;$XAUTHORITY&quot; ]] || ~\/bin\/rem ~\/bin\/cleanup.sh <\/pre>\n<pre> ----- ~\/.zlogout ----- ~\/bin\/cleanup.sh <\/pre>\n<pre> ----- ~\/bin\/cleanup.sh ----- #!\/bin\/sh rm -fr \\     ~\/.*_history \\     ~\/.cache ~\/.config ~\/.local* ~\/.thumbnails \\     ~\/.java \\     ~\/zathura.core <\/pre>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e <em>zsh<\/em> \u0447\u0438\u0442\u0430\u0435\u0442 <em>.zshenv<\/em>, \u0437\u0430\u0442\u0435\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043b\u043e\u0433\u0438\u043d\u0430 <em>.zprofile<\/em>, \u0437\u0430\u0442\u0435\u043c <em>.zshrc<\/em>, \u0430 \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 <em>.zlogout<\/em>. \u0412\u0441\u0451 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <em>.zshrc<\/em>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043b\u043e\u0433\u0438\u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u043c\u0443\u0441\u043e\u0440\u0430.<\/p>\n<pre> ----- ~\/bin\/rem ----- remind -g ~\/rem\/index.rem <\/pre>\n<pre> ----- ~\/rem\/index.rem ----- BANNER % INCLUDE \/home\/stargrave\/rem\/monthly.rem INCLUDE \/home\/stargrave\/rem\/payments.rem INCLUDE \/home\/stargrave\/rem\/birthdays.rem INCLUDE \/home\/stargrave\/rem\/domains.rem INCLUDE \/home\/stargrave\/rem\/peryear.rem INCLUDE \/home\/stargrave\/rem\/onetime.rem FSET sortbanner(x) iif(x == today(), &quot;***** Heute *****&quot;, &quot;===== %b =====&quot;) <\/pre>\n<p>  \u0414\u043b\u044f \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0439 \u043e \u0434\u0430\u0442\u0430\u0445\/\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/dianne.skoll.ca\/projects\/remind\/\" rel=\"nofollow noopener noreferrer\">remind<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u0443. \u041f\u0440\u0435\u0436\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0440\u043e\u0434\u043d\u044b\u043c <em>calendar<\/em>, \u043d\u043e \u0432 \u043d\u0451\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0435\u0440\u0438\u043e\u0434 \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0442\u044c \u043e \u0434\u0430\u0442\u0430\u0445. \u041a\u0430\u043a\u0438\u0435-\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u043c\u0435\u0441\u044f\u0446, \u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0437\u0430 1-2 \u0434\u043d\u044f. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0442\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435.<\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0443 \u043c\u0435\u043d\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0430\u043b\u0438\u0430\u0441\u043e\u0432, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432? \u0418\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 git \u0438 ssh \u2014 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u0431\u044b \u043e\u0449\u0443\u0442\u0438\u043c\u043e\u0433\u043e overhead-\u0430 \u043d\u0430 \u041e\u0421 \u0438 \u0424\u0421 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u044f \u043a\u043e\u0434 \u0438\u0437 <em>~\/bin\/XXX<\/em> \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u0410 \u0437\u0430\u0433\u0440\u043e\u043c\u043e\u0436\u0434\u0430\u0442\u044c namespace \u0438 \u043f\u0430\u043c\u044f\u0442\u044c <em>zsh<\/em> \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0430\u043b\u0438\u0430\u0441\u0430\u043c\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0433\u043e\u0436\u0435.<\/p>\n<h2>t<\/h2>\n<p>  \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0442\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0434\u0430\u0442, \u0434\u043b\u044f \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u0442\u0438\u043f\u0430 \u00ab\u043e\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0443\u00bb. \u0410 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u0430 \u0443 \u043c\u0435\u043d\u044f <a href=\"http:\/\/www.git.stargrave.org\/?p=t.git;a=blob;f=t\" rel=\"nofollow noopener noreferrer\">t<\/a> \u0441\u043a\u0440\u0438\u043f\u0442. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u0430 Python \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"https:\/\/github.com\/tasdikrahman\/tnote\" rel=\"nofollow noopener noreferrer\">tnote<\/a>. \u041d\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c, \u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a Python \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f. \u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u043d\u0430 POSIX shell, \u0430 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043d\u0430 <em>zsh<\/em>, \u0434\u0430\u0431\u044b \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434.<\/p>\n<p>  \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0435\u0436\u0435\u0447\u0430\u0441\u043d\u043e! \u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u0430\u043c\u0435\u0442\u043a\u0443, \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b \u043a\u0443\u0434\u0430 \u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u0432\u043e\u0436\u0443 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <em>t a \u043a\u0443\u043f\u0438\u0442\u044c \u0445\u043b\u0435\u0431\u0430<\/em>. \u0418 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0432 \u0437\u0430\u043c\u0435\u0442\u043a\u0430\u0445. \u0412\u043e\u0442 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f:<\/p>\n<pre> % t [0] \u043f\u0440\u0438\u043d\u0442\u0435\u0440 (1) [1] \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 (1) [2] \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441 \u0444\u043e\u0442\u043e\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0430 (1) [3] \u0432\u0435\u0434\u044c\u043c\u0430 \u0431\u043b\u044d\u0440 (1) [4] nncp ck wait (8) [5] forth book (1) <\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u044e \u00ab\u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432\u00bb (\u043a\u0430\u043a \u0433\u043b\u0430\u0441\u0438\u0442 \u043f\u0440\u0435\u0441\u0441\u0430), \u0442\u043e \u0441\u0434\u0435\u043b\u0430\u044e <em>t d 3<\/em>. <em>t e 4<\/em> \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043f\u043e\u0434 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 4. \u0410 <em>t 4<\/em> \u0435\u0451 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u043d\u0430 \u0432\u043e\u0441\u0435\u043c\u044c \u0441\u0442\u0440\u043e\u0447\u0435\u043a). \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 <em>N=XXX<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e namespace-\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0434\u0443 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u0442\u0438\u043f\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0432 \u0442\u0440\u044d\u043a\u0435\u0440.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b Palm PDA, \u0442\u043e \u0441 \u043d\u0438\u043c \u043d\u0435 \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u044b \u0431\u044b\u043b \u0431\u043b\u043e\u043a\u043d\u043e\u0442 \u0441 \u0440\u0443\u0447\u043a\u043e\u0439. <em>t<\/em> \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0440\u0443\u0447\u043a\u043e\u0439 \u0438\u043b\u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439, \u0442\u043e \u043c\u043e\u0433\u0443 \u0437\u0430\u0431\u044b\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0447\u0430\u0441\u0430 \u2014 \u0430 \u0442\u0430\u043a \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u043c\u043d\u044e \u0444\u0430\u043a\u0442 \u0437\u0430\u043f\u0438\u0441\u0438. \u042d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u0442\u0438\u043f\u0430:<\/p>\n<pre> ----- ~\/notes\/go-build-no-optimization ----- go build -gcflags=&quot;all=-N -l&quot; go build -ldflags=-s <\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>vimwiki<\/em> \u043f\u043b\u0430\u0433\u0438\u043d, \u0434\u0430\u044e\u0449\u0438\u0439 Wiki \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 Vim \u0438 \u0434\u0430\u0436\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u044f\u0449\u0443\u044e \u0435\u0451 \u0432 HTML \u0444\u0430\u0439\u043b\u044b, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0447\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u043b \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b. \u041d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0435 \u0438 \u043c\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 <em>~\/notes<\/em>, \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0438 \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u0445\u00bb \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445 <em>t<\/em> \u0437\u0430\u043c\u0435\u0442\u043e\u043a. \u0410 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u043b\u0443\u0447\u0448\u0435 \u0447\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h2>\u041c\u0443\u0437\u044b\u043a\u0430<\/h2>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u0443\u0442\u0438\u043b\u0438\u0442 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u043e\u0441\u043e\u0431\u043e\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 <a href=\"https:\/\/www.gnu.org\/software\/parallel\/\" rel=\"nofollow noopener noreferrer\">GNU parallel<\/a>. \u042d\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 Perl, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0442\u043e\u043b\u044c\u043a\u043e 5% \u0438\u0437 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043b\u044e\u0431\u043b\u044f\u0435\u0442. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e CPU-hungry \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0435 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u044b. \u0410 \u043c\u0443\u0437\u044b\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0414\u0435\u043b\u0430\u0435\u043c <em>parallel flac -d ::: **.flac<\/em> \u0447\u0442\u043e\u0431\u044b, \u0437\u0430\u043d\u044f\u0432 \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u0443\u0447\u0443 <em>flac<\/em> \u0434\u0435\u043a\u043e\u0434\u0435\u0440\u043e\u0432. <em>parallel opusdec {} {.}.wav ::: **.opus<\/em> \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 Opus. \u041c\u043e\u0436\u043d\u043e \u0430\u0443\u0434\u0438\u043e\u043a\u043d\u0438\u0433\u0438 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432 MP3 \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0435\u0435\u0440\u0435:<\/p>\n<pre> parallel 'opusdec {} {.}.wav &amp;&amp; lame --abr 128 {.}.wav &amp;&amp; rm {.}.wav' ::: **.opus <\/pre>\n<p>  \u041c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0444\u0430\u0439\u043b\u044b \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043d\u0430\u0434\u043e \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043a\u0430\u0447\u0430\u043b \u0441 YouTube-\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043b\u0438\u043f\u044b \u043e\u0442 RetroAhoy \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0431\u0449\u0438\u0439 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 (\u043c\u043d\u0435) \u043f\u0440\u0435\u0444\u0438\u043a\u0441. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 <em>zsh<\/em> \u043f\u043b\u0430\u0433\u0438\u043d <em>zmv<\/em>:<\/p>\n<pre> zmv 'RetroAhoy - (*)' '$1' <\/pre>\n<p>  \u0412\u0441\u0435 <em>.jpeg<\/em> \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0432 <em>.jpg<\/em>: <em>zmv -W &#8216;*.jpeg&#8217; &#8216;*.jpg&#8217;<\/em><\/p>\n<pre> zmv '(*).MetalBand-AlbumName-(*)-(*).wv' '$1-$3-$2.wv' <\/pre>\n<p>  \u0412\u043e \u0432\u0441\u0435\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0432\u043e \u0432\u0441\u0435\u0445 \u0438\u043c\u0435\u043d\u0430\u0445 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043d\u0430 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre> cur=`pwd` ; for i (**(\/)) { cd &quot;$i&quot; ; zmv '*' '$f:gs\/ \/_' ; cd $cur } <\/pre>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0437\u044f\u043b \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e <em>~\/secure\/.history<\/em>, \u043d\u0435 \u043d\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u041a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f? \u041f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e: \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u043b\u044c\u0431\u043e\u043c \u0432 \u0441\u0432\u043e\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0440\u044d\u043a \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. <em>\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c-\u0413\u043e\u0434-\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u0430<\/em>. \u0412\u0441\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0442\u043e \u0438\u0437\u0432\u043d\u0435 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 MP3, \u0442\u043e \u0432 \u043d\u0438\u0445 \u0443\u0434\u0430\u043b\u044f\u044e \u0432\u0441\u0435 IDv2 \u0442\u044d\u0433\u0438: <em>id3v2 -D *<\/em>.<\/p>\n<p>  \u042f \u0442\u0440\u0435\u0431\u0443\u044e lossless \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u0443\u0437\u044b\u043a\u0438! \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0430\u0436\u0443\u0441\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0435\u0451 lossy \u0432\u0435\u0440\u0441\u0438\u044e, \u0438\u0431\u043e \u0441 \u043c\u043e\u0438\u043c\u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c\u0438 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0430\u043c\u0438, \u0443\u0441\u0438\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0426\u0410\u041f\u043e\u043c \u043c\u043e\u0433\u0443 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c 320Kbps -q 9 MP3 \u0444\u0430\u0439\u043b \u043e\u0442 lossless. \u0418 \u044f \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0434\u0438\u043a\u043e\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435 \u043e\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0437\u0432\u0443\u043a\u0430. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u043e\u044e \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0436\u0430\u043d\u0440\u044b (\u043b\u044e\u0442\u044b\u0439 \u043f\u043e\u0440\u043d\u043e\/\u043a\u043e\u043f\u0440\u043e \u0433\u0440\u0430\u0439\u043d\u0434\u043a\u043e\u0440 \u0441 \u0445\u0430\u0440\u0448 \u043d\u043e\u0439\u0437\u043e\u043c) \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0438\u0433\u0434\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u044c, \u0434\u0430\u0436\u0435 \u043d\u0435\u043b\u0435\u0433\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u044f, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c MP3 (\u0451 \u043c\u043e\u0451, XXI \u0432\u0435\u043a, \u0430 \u0432\u0441\u0451 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043b\u044e\u0434\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442, \u0432\u0435\u0434\u044c \u0435\u0441\u0442\u044c \u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u0435\u043a\u0438, \u0432 \u0440\u0430\u0437\u044b \u043b\u0443\u0447\u0448\u0435 \u0441\u0436\u0438\u043c\u0430\u044e\u0449\u0438\u0435!).<\/p>\n<p>  \u0411\u044b\u0432\u0430\u0435\u0442, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043f\u043b\u0430\u0441\u0442\u0438\u043d\u043a\u0438, \u0434\u0430\u0436\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043d\u0438\u0445 \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c. \u042d\u0442\u043e \u0446\u0435\u043d\u043d\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0442\u0430 \u0447\u0430\u0441\u0442\u043e\u0442 \u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u041a\u0438\u0440\u0438\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b \u0438\u0437-\u0437\u0430 \u0432\u0441\u044f\u043a\u0438\u0445 \u0430\u0440\u0445\u0430\u0438\u0447\u043d\u044b\u0445 \u041e\u0421. \u0414\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0445 \u0438\u043c\u0451\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u0435\u0439\u0448\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432:<\/p>\n<pre> ----- ~\/bin\/torn ----- #!\/usr\/bin\/env perl [...] binmode STDOUT, &quot;:utf8&quot;; my $VERSION = &quot;0.10&quot;; my $src; my $dst; my $src_filename;  opendir DIR, &quot;.&quot; or die &quot;Can not open directory\\n&quot;; foreach (sort readdir DIR) {     # Skip directory itself     next if \/^\\.{1,2}$\/;     next if -d and not $ENV{FORCE_DIR};      $src_filename = $_;     $src = decode &quot;utf-8&quot;, $src_filename;     $dst = $src;      # Basic corrections for music files     $dst =~ s\/ \/_\/g;     $dst =~ s\/_-_\/-\/g;     $dst =~ s\/_\\(\/\\(\/g;     $dst =~ s\/-\\(\/-\/g;     $dst =~ s\/\\)_\/-\/g;     $dst =~ s\/\\,_\/\\,\/g;     $dst =~ s\/\\[\/\/g;     $dst =~ s\/\\]\/\/g;     $dst =~ s\/\\(_\/\\(\/g;     $dst =~ s\/_\\)\/\\)\/g;     $dst =~ s\/\\&amp;\/and\/g;      $dst =~ y\/\u0430\u0431\u0432\u0433\u0434\u0435\u0451\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u044c\u044a\u044b\u044d\/abvgdeezijklmnoprstufhcjjye\/;     $dst =~ y\/\u0410\u0411\u0412\u0413\u0414\u0415\u0401\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u042c\u042a\u042b\u042d\/ABVGDEEZIJKLMNOPRSTUFHCJJYE\/;     $dst =~ s\/\u0436\/zh\/g;     $dst =~ s\/\u0447\/ch\/g;     $dst =~ s\/\u0448\/sh\/g;     $dst =~ s\/\u0449\/sch\/g;     $dst =~ s\/\u044f\/ja\/g;     $dst =~ s\/\u044e\/ju\/g;     $dst =~ s\/\u0416\/Zh\/g;     $dst =~ s\/\u0427\/Ch\/g;     $dst =~ s\/\u0428\/Sh\/g;     $dst =~ s\/\u0429\/Sch\/g;     $dst =~ s\/\u042f\/Ja\/g;     $dst =~ s\/\u042e\/Ju\/g;      # Lowercase file extensions     if ($dst =~ \/^(.*)\\.([^\\.]+)$\/) {         $dst = $1 . &quot;.&quot; . lc $2;     };      # Change looking of track numbers     if ($dst =~ \/^(\\d+)[-.]_*(.+)$\/) {         $dst = &quot;$1.$2&quot;;     };      next if ($src_filename eq $dst);     print &quot;$src -&gt; $dst\\n&quot;;     die &quot;\\&quot;$dst\\&quot; exists&quot; if -e $dst;     rename $src_filename, $dst; }; <\/pre>\n<p>  \u0414\u043b\u044f lossless \u0441\u0436\u0430\u0442\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e WavPack. \u0421\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 (\u044f \u0442\u0443\u0442 \u0434\u0438\u0432\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442), \u043e\u043d \u043b\u0443\u0447\u0448\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u043f\u0440\u043e\u0449\u0435 \u0447\u0435\u043c FLAC. \u041f\u043b\u044e\u0441 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0448\u0435 \u0436\u043c\u0451\u0442. \u041f\u043b\u044e\u0441 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0438\u043f\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 32-bit float, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u043e \u043c\u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c. \u041d\u0430 \u043e\u0431\u044a\u0451\u043c\u0435 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0435\u043d \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043c\u0443\u0437\u044b\u043a\u0438 \u043e\u043d \u043c\u043d\u0435 \u0434\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 (\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 FLAC) \u2014 \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u044f\u0442\u043d\u043e.<\/p>\n<p>  \u041d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435, \u0433\u0434\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0432\u0443\u0447\u0430\u043d\u0438\u044f, \u0432\u043f\u043e\u043b\u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0438 lossy. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Opus \u043a\u043e\u0434\u0435\u043a. \u041f\u0440\u0435\u0436\u0434\u0435 \u0431\u044b\u043b Vorbis, \u043d\u043e Opus \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043b\u0443\u0447\u0448\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0436\u0430\u0442\u044c \u043f\u0440\u0438 \u0441\u0445\u043e\u0436\u0435\u043c \u043d\u0430 \u0441\u043b\u0443\u0445 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043a\u043e \u043c\u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0430\u0440\u0445\u0438\u0432\u044b \u0441 \u043e\u0434\u043d\u0438\u043c <em>.flac<\/em> \u0438 <em>.cue<\/em> \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0442\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044e, <em>cuebreakpoints *.cue | shnsplit *.wav<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f <em>.wav<\/em> \u043d\u0430 \u0442\u0440\u044d\u043a\u0438, \u0434\u0430\u043b\u0435\u0435 \u0434\u0440\u0435\u0432\u043d\u0435\u0439\u0448\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u043e \u0440\u0430\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u043d\u0435 \u0442\u0440\u043e\u043d\u044c) \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u043f\u0435\u0441\u0435\u043d \u0438\u0437 CUE \u0444\u0430\u0439\u043b\u0430:<\/p>\n<pre> ----- ~\/bin\/cueparser.sh ----- #!\/bin\/sh c=1 iconv -f latin1 -t utf-8 &quot;$1&quot; | sed -n 's\/^  *TITLE .\\(.*\\)&quot;.*$\/\\1\/p' | while read trackname; do     v=`printf &quot;%02d\\n&quot; $c`     echo mv split-track$v.wav $v.\\&quot;$trackname\\&quot;.wav     c=$(( $c + 1 )) done <\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e, \u0441\u0436\u0438\u043c\u0430\u044e <em>parallel wavpack -hh ::: **.wav<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u0438\u043a\u043e\u0432\u043e\u043c\u0443 \u0443\u0440\u043e\u0432\u043d\u044e \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0430\u043b\u044c\u0431\u043e\u043c\u0430: <em>normalize &#8212;peak *.wav<\/em>. <em>cdparanoia<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u0443\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u0430\u0443\u0434\u0438\u043e \u0434\u0438\u0441\u043a\u043e\u0432.<\/p>\n<h2>mpv<\/h2>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f, \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043b\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>mplayer+mencoder<\/em>. \u041d\u043e <em>mpv<\/em> \u0438\u043c\u0435\u0435\u0442 \u043b\u0443\u0447\u0448\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u0443, \u043f\u043b\u044e\u0441 \u0443\u043c\u0435\u0435\u0442 gapless playback, \u043f\u043e\u0434\u0445\u043e\u0434\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<pre> ----- ~\/.mpv\/config ----- vo=gpu profile=gpu-hq hwdec=vaapi hwdec-codecs=h264,hevc,vp8,mpeg2video,vc1 scale=ewa_lanczossharp cscale=ewa_lanczossharp cache=yes cache-secs=60 display-tags=* ytdl=no gapless-audio=yes autosync=30 oss-mixer-device=\/dev\/mixer oss-mixer-channel=vol  [AO] audio-device=oss\/\/dev\/dsp3  [AM] audio-device=oss\/\/dev\/dsp2 oss-mixer-device=\/dev\/mixer2 oss-mixer-channel=pcm  [VN] af=lavfi=loudnorm  [NV] video=no <\/pre>\n<pre> ----- ~\/.mpv\/input.conf ----- PGUP seek 600 PGDWN seek -600 Shift+PGUP add chapter 1 Shift+PGDWN add chapter -1 ENTER playlist-next force BS set speed 1.0 VOLUME_UP run &quot;mixer&quot; &quot;-f&quot; &quot;${oss-mixer-device}&quot; &quot;${oss-mixer-channel}&quot; &quot;+2&quot; VOLUME_DOWN run &quot;mixer&quot; &quot;-f&quot; &quot;${oss-mixer-device}&quot; &quot;${oss-mixer-channel}&quot; &quot;-2&quot; <\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 \u0432\u0432\u043e\u0434\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043c\u043e\u0435\u0439 20-\u043b\u0435\u0442\u043d\u0435\u0439 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f MPlayer. \u041f\u0440\u043e\u0449\u0435 \u043f\u0435\u0440\u0435\u0431\u0438\u0442\u044c \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u043f\u0440\u0438\u0432\u044b\u043a\u0430\u0442\u044c. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e <em>~\/.Xmodmap<\/em> \u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0431\u044b\u043b\u0438 binding-\u0438 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u043a\u043b\u0430\u0432\u0438\u0448 \u043c\u043e\u0435\u0439 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b.<\/p>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 <em>mpv<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438, gapless \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0437\u0432\u0443\u043a\u0430 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u0438. \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f?<\/p>\n<pre> ----- ~\/bin\/mp ----- #!\/usr\/bin\/env perl exec &quot;mpv&quot;, map { s\/^([A-Z][A-Z])$\/--profile=$1\/ ; $_ } @ARGV; <\/pre>\n<p>  \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e <em>mp<\/em> \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0439 \u0434\u0432\u0443\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430-\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 <em>&#8212;profile=XX<\/em>. <em>mp AM VN &#8230;<\/em> \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u0437\u0432\u0443\u043a\u0430 \u043d\u0430 HDMI \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0437\u0432\u0443\u043a\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <em>mencoder<\/em> \u0443\u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0412\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0438\u043b\u0441\u044f FFmpeg \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432\u0438\u0434\u044f \u0435\u0433\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0441\u0447\u0438\u0442\u0430\u044f \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043d\u0438\u043c \u044d\u0442\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u0430\u044f \u0431\u043e\u043b\u044c. \u041d\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u043f\u043e\u0431\u043b\u0438\u0436\u0435, \u0432\u0441\u0451 \u0436\u0435 \u043f\u043e\u0442\u0435\u043f\u043b\u0435\u043b. \u0421\u043e \u0432\u0441\u0435\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0445\u043e\u0442\u044f \u0438 \u043d\u0435 \u0431\u0435\u0437 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e <em>~\/notes\/cmd\/ffmpeg<\/em>. <em>mpv<\/em> \u043c\u0435\u043d\u044f \u043d\u0430\u043f\u0440\u044f\u0433\u0430\u043b \u0435\u0449\u0451 \u0442\u0435\u043c \u043f\u043e\u0441\u043b\u0435 <em>mplayer<\/em>, \u0447\u0442\u043e \u0432 \u043d\u0451\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438 \u043a\u0430\u043a dump \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0443\u0442\u0430\u044e) \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b\u043e \u043d\u0430 <em>ffmpeg<\/em>.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0443 <em>ffmpeg<\/em> \u0443 \u043c\u0435\u043d\u044f \u0442\u044c\u043c\u0430. \u041e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u044b\u0445 \u044d\u0442\u043e \u00ab\u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0430\u00bb \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0443\u0431\u0438\u0440\u0430\u044f \u0438\u0437 \u043d\u0435\u0433\u043e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0430\u0443\u0434\u0438\u043e\/\u0432\u0438\u0434\u0435\u043e \u0434\u043e\u0440\u043e\u0436\u043a\u0438:<\/p>\n<pre> ffmpeg -i IN -map 0:v:0 -map 0:a:0 -sn -map_metadata -1 -codec copy -y OUT <\/pre>\n<p>  \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 AVI \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432 \u043f\u043e\u043a\u043e\u0435. \u0410 \u0432\u043e\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 MP4 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044e \u0441\u0435\u0431\u0435 \u0438\u043c\u0435\u0442\u044c, \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044f \u0432 Matroska. \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0438 \u043a\u043e\u0434\u0435\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043b\u044e\u0434\u044c\u043c\u0438 \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u0430 \u043d\u0435 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0434\u043b\u044f DRM-\u0430. \u0427\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e Matroska\/WebM \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0443\u0434\u0438\u043e \u0438 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b\u043e\u0432 (\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0436\u0430\u043b Opus-\u043e\u043c \u0430\u0443\u0434\u0438\u043e, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b \u0432 VP8\/VP9 <em>vpxenc<\/em>-\u043e\u043c \u0432\u0438\u0434\u0435\u043e) \u2014 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/mkvtoolnix.download\/\" rel=\"nofollow noopener noreferrer\">MKVToolNix<\/a> \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0447\u0438\u0441\u0442\u043a\u0430 Matroska \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043e\u0442 \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e (\u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442) \u0438\u043b\u0438 \u043f\u0443\u0441\u043a\u0430\u0439 \u0435\u0451 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0432\u0441\u0435, \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre> ----- ~\/bin\/mkvclean.sh ----- #!\/bin\/sh mkvpropedit \\     --edit info \\     --delete title \\     --delete date \\     --set muxing-application=- \\     --set writing-application=- \\     --chapters &quot;&quot; \\     --tags all: $@ <\/pre>\n<p>  \u041a\u0430\u043a \u0441\u043c\u043e\u0442\u0440\u044e 4K \u0432\u0438\u0434\u0435\u043e? \u041a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432 \u0441\u0436\u0430\u0442\u043e\u043c \u0432\u0438\u0434\u0435\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u0442\u044c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 real-time? \u041f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u044e \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 MPEG2, \u0438\u043c\u0435\u044e\u0449\u0438\u043c (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u043c\u0430\u043b\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 CPU \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u043d\u043e \u0442\u0440\u0430\u0442\u0438\u0442 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e:<\/p>\n<pre> ----- ~\/bin\/4k2mpeg2.sh ----- #!\/bin\/sh ffmpeg -i &quot;$1&quot; -vf scale=w=iw\/4:h=ih\/4 -c:v mpeg2video -b:v 10000k -y &quot;$1&quot;.mpg <\/pre>\n<h2>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438<\/h2>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"http:\/\/netpbm.sourceforge.net\/\" rel=\"nofollow noopener noreferrer\">NetPBM<\/a> \u043d\u0430\u0431\u043e\u0440 Unix-friendly \u0443\u0442\u0438\u043b\u0438\u0442. \u0414\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043d\u0438\u0436\u0435\u043a <a href=\"http:\/\/djvu.sourceforge.net\/\" rel=\"nofollow noopener noreferrer\">DjVu<\/a> \u0444\u043e\u0440\u043c\u0430\u0442 (DjVuLibre \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430) \u043d\u0435\u0437\u0430\u043c\u0435\u043d\u0438\u043c. <em>cjpeg -optimize -progressive<\/em> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f JPEG. \u0414\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 JPEG: <em>jpegtran -optimize -progressive -perfect -copy none<\/em>. <em>pngcrush -rem alla -rem allb<\/em> \u0434\u043b\u044f \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u0436\u0430\u0442\u0438\u044f PNG. \u0414\u043b\u044f \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430 lossless WebP (<em>cwebp -pass 10 -alpha_filter best -m 6 -mt -q 100 -lossless<\/em>) \u0444\u043e\u0440\u043c\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u043d\u0430 50-60% \u043b\u0443\u0447\u0448\u0435\u0435 \u0441\u0436\u0430\u0442\u0438\u0435!<\/p>\n<p>  JPEG \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0436\u0438\u043c\u0430\u0442\u044c, \u0438\u0431\u043e \u0435\u0449\u0451 \u0431\u041e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0442\u0435\u0440\u044f \u0431\u0443\u0434\u0435\u0442, \u043d\u043e \u0443\u0434\u0430\u043b\u044f\u044e EXIF \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438\u0437 \u043d\u0438\u0445: <em>exiftool -all= -overwrite_original<\/em>.<\/p>\n<p>  \u0410 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a\u043e\u043c JPEG2000 \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0438\u0441\u0441\u044f\u043a\u0430\u043d\u0438\u044f \u043f\u0430\u0442\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u043d\u0435\u0433\u043e. \u0412\u0441\u0435 \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0445\u0440\u0430\u043d\u044e \u0432 <a href=\"http:\/\/www.openjpeg.org\/\" rel=\"nofollow noopener noreferrer\">OpenJPEG<\/a> lossless \u0441\u0436\u0430\u0442\u043e\u043c \u0432\u0438\u0434\u0435: <em>opj_compress -t 1024,1024 -i $i -o $i:r.jp2<\/em>. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c DPI \u0434\u0430\u0436\u0435 \u043d\u0435 \u0443\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c WebP, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0451\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, <em>.jp2<\/em> \u0444\u0430\u0439\u043b \u043d\u0430 \u0442\u0440\u0435\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0447\u0435\u043c PNG. \u0414\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c wavelet \u0441\u0436\u0430\u0442\u0438\u0435 \u043c\u043d\u0435 \u0438\u043c\u043f\u043e\u043d\u0438\u0440\u0443\u0435\u0442. \u041d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 tile, \u0438\u0431\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0436 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0418\u0437-\u0437\u0430 \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u043d\u0430 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445, \u0440\u044f\u0434\u043e\u043c \u0434\u0435\u043b\u0430\u044e <em>.webp<\/em> preview \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f <em>sxiv<\/em> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439: \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u0430, \u0431\u044b\u0441\u0442\u0440\u0430, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 rotate, zoom, \u0438 \u043f\u043e\u043a\u0430\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0432 \u0432\u0438\u0434\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0437 preview. \u0423\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u0432\u0441\u0435\u043c, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 JPEG2000 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 (\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u044f \u043a Imlib2).<\/p>\n<p>  \u0414\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f PDF, \u043b\u0443\u0447\u0448\u0435 \u0447\u0435\u043c <a href=\"https:\/\/pwmt.org\/projects\/zathura\/\" rel=\"nofollow noopener noreferrer\">Zathura<\/a> \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b! \u0423\u0434\u043e\u0431\u043d\u0435\u0439\u0448\u0438\u0435 vi-\u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0421\u0442\u043e\u044f\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 EPUB \u0438 DjVu \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432. \u041a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MuPDF backend \u0434\u043b\u044f PDF \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0431\u0435\u0437 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0439, \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0431\u044b\u0441\u0442\u0440\u0435\u0435 Poppler! \u0420\u0435\u0447\u044c \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 Poppler \u043c\u043e\u0436\u043d\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u0434\u0435\u0441\u044f\u0442\u044c \u0436\u0434\u0430\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0436\u0438\u0440\u043d\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0432 MuPDF \u043e\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u043e\u0449\u0443\u0442\u0438\u043c\u044b\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a. \u041f\u043b\u044e\u0441 MuPDF \u0443\u043c\u0435\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c FictionBook2 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 Zathura.<\/p>\n<pre> ----- ~\/.zathurarc ----- set sandbox strict set dbus-service false <\/pre>\n<p>  Zathura \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u2014 \u043e\u043d\u0430 \u0442\u044f\u043d\u0435\u0442 \u043f\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 GTK3 \u0438 DBus. \u041d\u043e\u2026 \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0438\u0437 \u0437\u043e\u043b \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0433\u043e\u0442\u043e\u0432 \u0441\u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f, \u0438\u0431\u043e \u0443\u0436 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0449\u0438\u043a.<\/p>\n<p>  \u0418\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0432 \u043d\u0435\u0439 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 tab-\u043e\u0432. \u0410 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0442\u044d\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043a\u043e\u043d \u0432 <em>dwm<\/em> \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e. Zathura \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 XEmbed \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 X11, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c (\u00abtab manager\u00bb) \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 embeddable \u043e\u043a\u043d\u0430. Unix-way! \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/tools.suckless.org\/tabbed\/\" rel=\"nofollow noopener noreferrer\">tabbed<\/a> suckless \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u0440\u043e\u043c\u0435 Zathura, \u0431\u043e\u043b\u044c\u0448\u0435 GUI \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f tab-\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442, \u0445\u043e\u0442\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0442\u0443\u0434\u0430 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b \u0438 Lynx (\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0441\u044f \u0447\u0442\u043e <em>tmux<\/em> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e).<\/p>\n<pre> ----- ~\/bin\/zat ----- #!\/bin\/sh export PATH=$HOME\/local\/bin:$PATH export XDG_DATA_DIRS=$HOME\/local export LD_LIBRARY_PATH=$HOME\/local\/lib:$LD_LIBRARY_PATH winid=`start-tabbed.sh zathura -c` bin.zathura -e $winid &quot;$1&quot; rm -f zathura.core # \u0430\u0433\u0430, zathura \u043b\u044e\u0431\u0438\u0442 \u0434\u0435\u043b\u0430\u0442\u044c coredump <\/pre>\n<pre> ----- ~\/bin\/start-tabbed.sh ----- #!\/bin\/sh tabname=$1 shift w=\/tmp\/tabbed-$tabname [ -r &quot;$w&quot; ] &amp;&amp; {     read winid &lt; $w     wmclass=`xprop -id $winid WM_CLASS 2&gt;\/dev\/null`     echo &quot;$wmclass&quot; | grep -q tabbed-$tabname &amp;&amp; {         echo $winid         exit     } } [ -z &quot;$NOTABSTART&quot; ] || exit 1 tabbed -n tabbed-$tabname -d $@ &gt; $w exec $0 $tabname $@ <\/pre>\n<p>  <em>~\/bin\/start-tabbed.sh<\/em> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Zathura, \u043d\u043e \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445. \u0415\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043a\u043d\u043e \u0432 \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u043d\u0443\u043b\u044f.<\/p>\n<p>  <em>zsh<\/em> \u043a\u0441\u0442\u0430\u0442\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0444\u0430\u0439\u043b\u043e\u0432. \u041c\u043e\u0436\u043d\u043e \u00ab\u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u00bb <em>.pdf<\/em> \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f Zathura. \u041d\u043e \u0447\u0442\u043e-\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0410 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043c\u043d\u043e\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u2014 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f, \u0434\u0430\u0431\u044b \u043d\u0435 \u043c\u043e\u0437\u043e\u043b\u0438\u0442\u044c \u0433\u043b\u0430\u0437\u0430 \u0438 \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u044d\u043a\u0440\u0430\u043d\u0430 \u0434\u0435\u043b\u0430\u044e \u0432\u044b\u0437\u043e\u0432\u043e\u043c <em>mylock<\/em> \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u0437 <em>dmenu<\/em>:<\/p>\n<pre> ----- ~\/bin\/mylock ----- #!\/bin\/sh xset dpms force off gpgconf --reload gpg-agent SSH_AUTH_SOCK=$HOME\/.ssh\/agent ssh-add -D slock <\/pre>\n<p>  \u041e\u043d \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u00bb \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0438 \u043e\u0447\u0438\u0449\u0430\u0435\u0442 \u043a\u043b\u044e\u0447\u043d\u0438\u0446\u044b GnuPG \u0438 SSH \u0430\u0433\u0435\u043d\u0442\u0430, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044f \u044d\u043a\u0440\u0430\u043d suckless <a href=\"https:\/\/tools.suckless.org\/slock\/\" rel=\"nofollow noopener noreferrer\">slock<\/a> \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439.<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0432\u044b<\/h2>\n<p>  \u0414\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0447\u0451\u0442\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0435: POSIX.1-2001 pax \u0444\u043e\u0440\u043c\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 <em>ustar<\/em>. \u0427\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e <em>ustar<\/em>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0441\u043e\u0431\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 keyvalue \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u043c\u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u043e\u0447\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0448\u0442\u0430\u043c\u043f\u044b \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u0435\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u044d\u0442\u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0430 \u043d\u0435 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c GNU-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0433\u0434\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u043f\u0440\u0438\u0440\u043e\u0434\u0430 tar \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u0448\u0430\u0442\u044c. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u043c\u0435\u044e \u043f\u0440\u043e\u0442\u0438\u0432 ZIP64 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0444\u0430\u0439\u043b\u043e\u0432. \u041d\u043e \u0432 \u043d\u0451\u043c \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c Unix-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>  \u041d\u043e \u0432\u043e\u0442 \u0431\u0435\u0434\u0430: <em>tar<\/em> API \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e Unix-way friendly, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0441 <em>cpio<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0443\u0442\u044f\u043c\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (<em>find<\/em>). POSIX \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a \u0441\u0430\u043c pax \u0444\u043e\u0440\u043c\u0430\u0442, \u0442\u0430\u043a \u0438 <em>pax<\/em> \u0430\u0440\u0445\u0438\u0432\u0430\u0442\u043e\u0440, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 <em>cpio<\/em>-like \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. <em>cpio<\/em> \u0438\u043c\u0435\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043c\u043d\u043e\u0433\u043e\u0435 \u0437\u0430\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c (\u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432), \u0430 <em>pax<\/em> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435\u0435 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0438\u0440\u043e\u0432 (API \u0438 \u0444\u043e\u0440\u043c\u0430\u0442). \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e <em>pax<\/em> \u043d\u0435\u0442\u0443 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445. \u0410 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438 \u0441\u0430\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f, \u0442\u043e \u043d\u0435 \u0444\u0430\u043a\u0442 \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 pax format.<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e, \u0432\u0441\u0451 \u0436\u0435 <em>tar<\/em> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 <em>cpio<\/em>-like \u0440\u0435\u0436\u0438\u043c\u0435, \u0447\u0438\u0442\u0430\u044f \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 stdin: <em>find\u2026 | tar cI \u2014 &#8230;<\/em>. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <em>libarchive<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 FreeBSD \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0432\u0430\u0442\u043e\u0440\u043e\u0432 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u0434\u0435\u043b\u0430\u0435\u0442 <em>ustar<\/em> \u0444\u043e\u0440\u043c\u0430\u0442 \u0430\u0440\u0445\u0438\u0432\u0430, \u0435\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0442\u0435\u0440\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c pax.<\/p>\n<p>  <em>tar<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0439 \u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438\/\u0447\u0442\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 LTO5 \u0441\u0442\u0440\u0438\u043c\u0435\u0440. \u0412 \u043a\u0443\u0440\u0441\u0435, \u0447\u0442\u043e LTO5 \u0443\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/LTFS\" rel=\"nofollow noopener noreferrer\">LTFS<\/a>, \u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0435\u043d\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041c\u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u0436\u0430\u0442\u044b\u0445 (\u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445) \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0441 \u0434\u0438\u0441\u043a\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f \u044f \u044f\u0440\u044b\u0439 \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a <a href=\"https:\/\/facebook.github.io\/zstd\/\" rel=\"nofollow noopener noreferrer\">Zstandard<\/a> \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c zlib\/gzip, \u043e\u043d \u0435\u0449\u0451 \u0438 \u043b\u0443\u0447\u0448\u0435 \u0441\u0436\u0438\u043c\u0430\u0435\u0442. \u042d\u0442\u043e \u0435\u0441\u043b\u0438 \u0441\u0430\u043c\u044b\u0439 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 <em>zstd<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0435\u0440\u0435\u0437 pipe. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0437\u0430\u043d\u0438\u043c\u0430\u044f \u0432\u0441\u0435 CPU. \u0410 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0441\u0436\u0430\u0442\u0438\u044f (<em>&#8212;ultra -22<\/em>), \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0430 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0441\u0436\u0430\u0442\u044c \u043f\u043e\u0445\u0443\u0436\u0435 \u0447\u0435\u043c <em>xz<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u0435\u0436\u0434\u0435.<\/p>\n<p>  \u041d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043c\u043e\u0435\u0439 \u043b\u044e\u0431\u0432\u0438 \u043a Zstandard \u2014 \u0443\u043c\u043e\u043f\u043e\u043c\u0440\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u0435\u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u0438. \u0414\u043e <em>zstd<\/em>, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u043b \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0443\u043f\u0438\u0440\u0430\u043b\u0441\u044f, \u043f\u0440\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432 CPU. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 CPU \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b \u0431\u0443\u0442\u044b\u043b\u043e\u0447\u043d\u044b\u043c \u0433\u043e\u0440\u043b\u044b\u0448\u043a\u043e\u043c, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0441 <em>zstd<\/em> \u0443\u043f\u0438\u0440\u0430\u044e\u0441\u044c \u0432 \u0434\u0438\u0441\u043a\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0443\u043f\u0438\u0440\u0430\u044e\u0441\u044c \u0432 CPU \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0439 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439: <em>zfs send -R\u2026 | zstd | gpg -e -r offline -z 0 &#8212;force-aead<\/em>, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0432\u043e\u0435\u0439 SATA SSD. FreeBSD \u0443\u0436\u0435 \u0443\u0439\u043c\u0443 \u043b\u0435\u0442 \u0438\u043c\u0435\u0435\u0442 <em>zstd<\/em> \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f \u044d\u0442\u043e \u0441\u0436\u0430\u0442\u0438\u0435 \u0434\u0430\u0436\u0435 \u0432 \u0434\u0435\u043c\u043e\u043d\u0435 \u0440\u043e\u0442\u0430\u0446\u0438\u0438 \u043b\u043e\u0433\u043e\u0432.<\/p>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u0431\u043e <em>gzip<\/em> \u0440\u0430\u0434\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u043b\u0438\u0431\u043e <em>zstd<\/em> \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e: \u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u0436\u0430\u0442\u0438\u044f \u0438 \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0432\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441 \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0441\u0436\u0430\u0442\u0438\u044f.<\/p>\n<h2>Feeds<\/h2>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a, \u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438, \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e IRC, \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0431\u043e\u043b\u0435\u0435 400+ \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a \u0432 RSS \u0438 Atom \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445. \u041c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <em>rss2email<\/em> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u044f\u0449\u0438\u043a. \u041d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043d\u0430 <a href=\"https:\/\/newsboat.org\/\" rel=\"nofollow noopener noreferrer\">Newsboat<\/a>.<\/p>\n<pre> ----- ~\/.newsboat\/config ----- history-limit 0 text-width 80 bind-key ^Y up bind-key ^E down notify-beep yes cleanup-on-quit yes  max-items 100  auto-reload yes reload-time 120 reload-threads 10 suppress-first-reload yes  feed-sort-order lastupdated browser &quot;~\/bin\/www %u &amp;&quot; <\/pre>\n<ul>\n<li>Binding-\u0438 \u043a\u043e\u043b\u0435\u0441\u0430 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438.<\/li>\n<li>Beep \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u0438.<\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0441\u0435\u0445 feed-\u043e\u0432 \u043a\u0430\u0436\u0434\u044b\u0435 \u0434\u0432\u0430 \u0447\u0430\u0441\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u044c HTTP \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/li>\n<li>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u043d\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0443\u0435\u0437\u0436\u0430\u044e (\u043e\u0441\u0442\u0430\u0432\u0430\u044f\u0441\u044c \u0431\u0435\u0437 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430), \u0442\u043e \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e, \u0438\u0431\u043e \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442.<\/li>\n<li>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>www<\/em> \u0431\u0440\u043e\u0443\u0437\u0435\u0440: \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u043b\u0430\u0433\u043e\u0432\u043e\u0433\u043e <em>WG<\/em> \u0444\u0430\u0439\u043b\u0430 \u044d\u0442\u043e \u043b\u0438\u0431\u043e Lynx, \u043b\u0438\u0431\u043e Xombrero (\u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435).<\/li>\n<\/ul>\n<p>  \u0417\u043d\u0430\u043d\u0438\u0435 \u043e \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430\u0445 \u0445\u0440\u0430\u043d\u044e \u0432 <em>recfile<\/em> \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0442\u0430\u043a\u0436\u0435 <a href=\"http:\/\/www.stargrave.org\/Links.html\" rel=\"nofollow noopener noreferrer\">\u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c<\/a> \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0435\u0439:<\/p>\n<pre> ----- ~hp\/links.rec ----- Title: ImperialViolet Note: Adam Langley's blog URL: https:\/\/www.imperialviolet.org\/ Category: Crypto Category: IT Category: Personal Feed: https:\/\/www.imperialviolet.org\/iv-rss.xml  Title: Few thoughts of cryptographic engineering Note: Matthew Green's blog URL: https:\/\/blog.cryptographyengineering.com\/ Category: Crypto Feed: https:\/\/blog.cryptographyengineering.com\/feed\/ <\/pre>\n<p>  \u0422\u0443\u0442 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u0438 \u00ab\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0435\u00bb \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u0430\u043a \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 feed-\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0436\u0438\u0442\u044c \u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u0430\u0445. \u042f \u0441\u0442\u0430\u043b \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a\u043e\u043c <em>recfile<\/em> \u0444\u043e\u0440\u043c\u0430\u0442\u0430 (\u0438 <a href=\"https:\/\/www.gnu.org\/software\/recutils\/\" rel=\"nofollow noopener noreferrer\">recutils<\/a> \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c) \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043a\u0430\u043a \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0442\u0430\u043a \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430. \u041f\u043b\u044e\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041c\u043e\u0436\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0432\u0441\u0435\u0445 feed URL-\u043e\u0432 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 <em>~\/.newsboat\/urls<\/em>: <em>recsel -P Feed &lt; links.rec | sed \/^$\/d<\/em>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430 Go \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0443\u044e \u044d\u0442\u043e\u0442 <em>.rec<\/em> \u0444\u0430\u0439\u043b \u0432 XBEL \u0438 OPML \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438. \u041c\u043d\u0435 \u0442\u0430\u043a \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0435\u0433\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 <em>goredo<\/em>, \u0434\u043b\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 NNCP \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<h2>Hjson<\/h2>\n<p>  \u0420\u0430\u0437 \u0443\u0436 \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043f\u0440\u043e \u043b\u044e\u0431\u043e\u0432\u044c \u043a <a href=\"https:\/\/hjson.github.io\/\" rel=\"nofollow noopener noreferrer\">Hjson<\/a>. \u042d\u0442\u043e \u0432\u0435\u0447\u043d\u0430\u044f holywar \u0442\u0435\u043c\u0430 \u043e \u0442\u043e\u043c \u043a\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043b\u0443\u0447\u0448\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u041f\u041e. \u0412\u0441\u0451 \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043d\u0443\u0442\u0440\u0438. \u0413\u0434\u0435-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438 <em>.ini<\/em> \u043f\u043e\u0434\u043e\u0439\u0442\u0438, \u0438 CSV, \u0438 termcap-like \u0444\u043e\u0440\u043c\u0430\u0442 (\u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 FreeBSD).<\/p>\n<p>  \u042f \u0442\u043e\u0447\u043d\u043e \u044f\u0440\u044b\u0439 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a YAML: \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u0435\u0440\u0435\u0443\u0441\u043b\u043e\u0436\u043d\u0451\u043d \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c \u0447\u0430\u0449\u0435 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u044f\u0442 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u0441\u0430\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443. \u041c\u043e\u0433 \u0431\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0432\u0430\u0433\u043e\u043d \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043a\u043e\u0433\u0434\u0430 \u0447\u0451\u0440\u0442 \u043d\u043e\u0433\u0443 \u0441\u043b\u043e\u043c\u0438\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441 \u043a\u0443\u0447\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u042f \u0438 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a TOML, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0432 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 \u043d\u0451\u043c \u0445\u043e\u0440\u043e\u0448\u043e \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f. \u041d\u043e \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435, \u0442\u0438\u043f\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u2014 \u0443\u0432\u043e\u043b\u044c\u0442\u0435, \u043d\u043e \u044f, \u0434\u0430\u0436\u0435 \u0437\u043d\u0430\u044f \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0432\u043e\u0435\u0433\u043e NNCP, \u043d\u0435 \u043c\u043e\u0433 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430.<\/p>\n<p>  \u0410 \u0447\u0435\u043c \u0442\u0430\u043a \u043f\u043b\u043e\u0445 JSON, \u0435\u0441\u043b\u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e termcap, ini) \u0435\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430? \u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0443\u043d\u044b\u043b\u044b\u043c\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438 \u0432 \u043a\u043b\u044e\u0447\u0430\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u0430\u0445\u0430\u0440\u0430. Hjson \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 Hjson \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u0430\u0445\u0430\u0440, \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044f Hjson \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 JSON, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0440\u043e\u0434\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. \u0417\u043e\u043b\u043e\u0442\u0430\u044f \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0430 \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438!<\/p>\n<h2>*tex*<\/h2>\n<p>  \u0427\u0442\u043e \u0434\u0443\u043c\u0430\u044e \u043f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438? \u041e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e GNU Texinfo \u0438 Info! <em>man<\/em> \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u2014 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u0438\u0445 \u0441\u0432\u043e\u0434\u043e\u043a \u043e\u043f\u0446\u0438\u0439. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e man-\u0443 <em>zsh<\/em>! \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 <em>man -P \u00abless +\/^EXAMPLES\u00bb<\/em> \u0441\u0447\u0438\u0442\u0430\u044e \u043a\u043e\u0441\u0442\u044b\u043b\u0451\u043c. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0441\u044b\u043b\u043e\u043a, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f. Info \u2014 \u0433\u0438\u043f\u0435\u0440\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0441\u0435\u043a\u0446\u0438\u0438\/\u043d\u043e\u0434\u044b. \u041f\u043b\u044e\u0441 <em>.info<\/em> \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u0430. \u041c\u043e\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 GUI Emacs \u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0438\u0441\u044c. \u041f\u043e\u0445\u043e\u0436\u0430\u044f \u0438\u0434\u0435\u044f \u0432 CHM \u0444\u0430\u0439\u043b\u0430\u0445 Windows.<\/p>\n<pre> ----- ~\/.infokey ----- #info j next-line k prev-line ^E next-line ^Y prev-line ^W split-window ^N next-window  #var link-style=yellow active-link-style=yellow,bold match-style=underline,bold,nocolour scroll-behavior=Page Only <\/pre>\n<p>  \u0427\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 (\u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0444\u0438\u0447\u0430, \u043d\u043e \u043c\u043d\u0435 \u0443\u0436\u0430\u0441\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435), \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043b\u0435\u0441\u0430 \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e vi-like \u043a\u043b\u0430\u0432\u0438\u0448 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u042d\u0442\u043e \u0432\u0441\u0451 \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0410 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. \u0418 man (<em>mdoc<\/em>) \u0438 \u0438 HTML \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0442 \u0440\u0443\u043a\u0438. \u0410 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c reStructured Text (reST), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 HTML \u0438 \u0434\u0430\u0436\u0435 <em>.info<\/em> \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0423\u0439\u043c\u0443 \u043b\u0435\u0442 web-\u0441\u0430\u0439\u0442\u044b \u0434\u0435\u043b\u0430\u043b \u043d\u0430 reST.<\/p>\n<p>  \u041a\u0430\u043a \u043e\u0442\u043d\u043e\u0448\u0443\u0441\u044c \u043a Markdown? \u041d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0433\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443 \u0447\u0435\u0433\u043e \u043d\u0435\u0442: \u043d\u0435\u0442\u0443 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e Markdown \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u2014 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0443\u0447\u0430 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u043e\u0432, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. \u0418 \u0438\u0445 \u043e\u0431\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u2014 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043a\u0443\u0434\u043d\u0430 \u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0430. \u041a AsciiDoc \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0435\u0442, \u043d\u043e \u0438 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043f\u043b\u044e\u0441\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e reST \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u044e \u2014 \u043e\u0431\u0430 \u0434\u0430\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 Python.<\/p>\n<p>  \u041d\u043e \u043e\u0442 reST \u0432 \u0438\u0442\u043e\u0433\u0435 \u043e\u0442\u043e\u0448\u0451\u043b (\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0434\u043b\u044f Python \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0438\u0431\u043e \u044d\u0442\u043e \u0440\u043e\u0434\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0432 \u044d\u0442\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435). \u041d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u00ab\u0441\u0430\u043c\u043e\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00bb, \u0442\u0438\u043f\u0430 \u00ab\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0436\u0438\u0440\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443\u00bb. \u0427\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e, \u0438\u0431\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \u0438 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441 \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<p>  Texinfo \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0449\u0435\u043c\u0443 reST \u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e SGML \u0442\u044d\u0433\u0430\u043c\u0438 HTML! \u041b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c, \u043b\u0435\u0433\u043a\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u0438\u0437\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430, \u043b\u0435\u0433\u043a\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0441\u0432\u043e\u0431\u043e\u0434\u0430 \u0441\u0430\u043c\u043e\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c. \u041e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u043b\u0438\u0437\u043e\u043a \u0438 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 TeX. \u041f\u043b\u044e\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0421\u0438\/Perl \u2014 \u043c\u0430\u043b\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 web-\u0441\u0430\u0439\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e \u0438\u0437 Texinfo \u043a\u043e\u0434\u0430. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0442\u0430\u043a \u044d\u0442\u043e \u0435\u0433\u043e \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u0415\u0449\u0451 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0440\u043d\u043e\u0439 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u0438: Texinfo \u043c\u043e\u0436\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Docbook, \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0442\u043a\u0440\u044b\u0432 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c LibreOffice, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 Office Open XML \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c <em>.texi<\/em>.<\/p>\n<p>  reST \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0443\u043c\u0435\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c docstring-\u0438 Python \u043a\u043e\u0434\u0430. Doxygen \u0443\u043c\u0435\u0435\u0442 \u0438\u0437 \u0421\u0438 \u043a\u043e\u0434\u0430. Texinfo \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043d\u0435\u0442, \u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: <a href=\"http:\/\/www.git.stargrave.org\/?p=dotfiles.git;a=blob;f=bin\/bin\/docstringer.pl\" rel=\"nofollow noopener noreferrer\">docstringer.pl<\/a> Perl \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u043e\u043c\u0435\u0442\u043a\u0430 <em>TEXINFO: XXX<\/em>:<\/p>\n<pre> ----- ...\/app.h ----- [...] \/\/ TEXINFO: CrickAppSignVerify \/\/ @deftypefun CrickErr CrickAppSignVerify @ \/\/     (CrickApp *app, const CrickFileId fileId, @ \/\/      const uint8_t *pub, const size_t pubLen, @ \/\/      const uint8_t *dgst, const size_t dgstLen, @ \/\/      const uint8_t *sign, const size_t signLen) \/\/ Verify @var{sign} signature made on @var{dgst} digest with @var{pub} \/\/ 34.10-2012-256 public key. @ref{CrickErrInvalidMACSignature} error is \/\/ returned if signature is wrong. \/\/ @end deftypefun CrickErr CrickAppSignVerify(     CrickApp *,     const CrickFileId,     const uint8_t *pub,     const size_t pubLen,     const uint8_t *dgst,     const size_t dgstLen,     const uint8_t *sign,     const size_t signLen); [...] <\/pre>\n<p>  \u0410 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c Texinfo \u043a\u043e\u0434\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c <em>@DOCSTRING CrickAppSignVerify@<\/em>, \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0435\u043b\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f.<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0432 GNU \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u0438\u0445 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Texinfo\/Info \u0432\u0441\u0435\u0446\u0435\u043b\u043e \u043e\u0434\u043e\u0431\u0440\u044f\u044e.<\/p>\n<p>  \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u0434\u043b\u044f \u043f\u0435\u0447\u0430\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u044e \u0432 LaTeX, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"http:\/\/tug.org\/texlive\/\" rel=\"nofollow noopener noreferrer\">TeX Live<\/a> \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u0434\u0443\u043c\u0438\u0439 \u043a\u0430\u043a\u043e\u0439 CTAN \u043f\u0430\u043a\u0435\u0442 \u0438 \u043a\u0430\u043a \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c. \u0412 \u043d\u0451\u043c \u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432\u0441\u0435 \u043a\u0443\u0440\u0441\u043e\u0432\u044b\u0435, \u0434\u0438\u043f\u043b\u043e\u043c \u0438 \u0432\u0441\u0451 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435. \u0421\u0445\u0435\u043c\u044b, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043d\u0438 \u0440\u0430\u0437\u0443 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043d\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043b \u00ab\u043e\u0442 \u0440\u0443\u043a\u0438\u00bb (\u043c\u044b\u0448\u043a\u043e\u0439 \u0447\u0442\u043e \u0442\u043e \u0442\u0430\u043c \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435) \u2014 \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/en.wikipedia.org\/wiki\/PGF\/TikZ\" rel=\"nofollow noopener noreferrer\">PGF\/TikZ<\/a>, <a href=\"http:\/\/graphviz.org\/\" rel=\"nofollow noopener noreferrer\">GraphViz<\/a> \u0438 <a href=\"http:\/\/gnuplot.info\/\" rel=\"nofollow noopener noreferrer\">Gnuplot<\/a>. \u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/QCAD\" rel=\"nofollow noopener noreferrer\">QCAD<\/a>. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e \u0432 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Beamer_(LaTeX)\" rel=\"nofollow noopener noreferrer\">Beamer<\/a> \u043f\u0430\u043a\u0435\u0442\u0435 LaTeX.<\/p>\n<p>  \u0423 \u043c\u0435\u043d\u044f \u0441\u0442\u043e\u0438\u0442 OpenJDK \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0434\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <a href=\"https:\/\/plantuml.com\/\" rel=\"nofollow noopener noreferrer\">PlantUML<\/a>. \u041c\u0435\u043d\u044f \u043a\u043e\u0440\u043e\u0431\u0438\u0442 \u043e\u0442 \u0441\u0442\u043e\u043b\u044c \u0442\u044f\u0436\u0451\u043b\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (Java), \u043d\u043e PlantUML \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448 \u0438 \u043f\u0440\u043e\u0441\u0442 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u044b\u0435 \u0438 Unicode \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b! \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/p>\n<h2>File transfer<\/h2>\n<p>  \u0411\u044b\u0432\u0430\u044e\u0442 \u043d\u0435\u044d\u0442\u0438\u0447\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0433\u0434\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 online \u0432\u0438\u0434\u0435. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c, \u043d\u043e \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430:<\/p>\n<pre> ----- ~\/bin\/mirror-site.sh ----- #!\/bin\/sh user_agent=&quot;Mozilla\/5.0 ...&quot; # \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 Wget \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0440\u043e\u0431\u043e\u0442\u043e\u043c \u0438 \u043d\u0435 \u0434\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 name=$1 shift mkdir -p $name cd $name wget \\     --page-requisites \\     --convert-links \\     --adjust-extension \\     --restrict-file-names=ascii \\     --span-hosts \\     --random-wait \\     --execute robots=off \\     --recursive \\     --timestamping \\     -l inf \\     --no-remove-listing \\     --no-parent \\     --user-agent &quot;$user_agent&quot; \\     --reject '*.woff*,*.ttf,*.eot,*.js' \\     --tries 10 \\     $@ <\/pre>\n<p>  <em>wget<\/em> \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Web_ARChive\" rel=\"nofollow noopener noreferrer\">Web ARChive<\/a> <em>.warc<\/em> \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 WARC-\u043f\u0440\u043e\u043a\u0441\u0438:<\/p>\n<pre> ----- ~\/bin\/mirror-site-warc.sh ----- #!\/bin\/sh mirror-site.sh &quot;$1&quot; \\     --warc-file $name-$(date '+%Y%M%d%H%m%S') \\     --no-warc-compression --no-warc-keep-log $@ <\/pre>\n<p>  \u0415\u0441\u043b\u0438 Web-\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 WebDAV, \u0438\u043b\u0438 \u0435\u0441\u0442\u044c FTP \u0437\u0435\u0440\u043a\u0430\u043b\u043e (\u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u043f\u0440\u043e <em>rsync<\/em>), \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/lftp.tech\/\" rel=\"nofollow noopener noreferrer\">LFTP<\/a>, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre> echo &quot;mirror --delete --continue . if-archive&quot; | lftp -d ftp.ifarchive.org <\/pre>\n<p>  ZFS \u0442\u0443\u0442 \u043c\u043e\u0436\u0435\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439. \u0421\u0430\u043c HTTP\/FTP \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 snapshot \u043f\u043e <em>\/path\/.zfs\/snapshot\/SNAPNAME<\/em> \u043f\u0443\u0442\u0438, \u0430 \u0434\u043e\u043b\u0433\u043e\u0435 <em>rsync<\/em>\/<em>lftp<\/em> \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 <em>\/path<\/em>. \u041a\u043e\u0433\u0434\u0430 \u0437\u0435\u0440\u043a\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e, \u0442\u043e \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e snapshot \u043d\u0430\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0432 <em>\/path\/.zfs\/snapshot\/SNAPNAME<\/em>.<\/p>\n<p>  \u0415\u0449\u0451 \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b <a href=\"http:\/\/aria2.github.io\/\" rel=\"nofollow noopener noreferrer\">aria2<\/a> \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0435\u0433\u043e \u043a\u0430\u043a BitTorrent \u043a\u043b\u0438\u0435\u043d\u0442, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432, \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u043a\u0430\u0447\u043a\u0438, \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/p>\n<pre> ----- ~\/.aria2\/aria2.conf ----- max-concurrent-downloads=200 ca-certificate=\/etc\/ssl\/cert.pem bt-max-open-files=1000 bt-max-peers=0 bt-save-metadata=true enable-dht=true enable-dht6=true seed-ratio=0.0 disk-cache=0 file-allocation=trunc force-save=true <\/pre>\n<p>  \u0412\u0430\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c <em>file-allocation<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b \u043f\u0435\u0440\u0435\u0434 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 copy-on-write \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<p>  \u0418\u0437 BitTorrent \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b <em>ctorrent<\/em> \u2014 \u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f, \u043d\u043e \u043d\u0435\u0442 DHT \u0438 UDP \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. Transmission \u2014 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0451\u043c\u043a\u0438\u0439, \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f. Rtorrent \u0434\u043e\u043b\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0435\u0433\u043e hard-coded \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432\/\u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432. \u041a <em>aria2<\/em> \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0440\u0435\u043a\u0430\u043d\u0438\u0439. \u0421 \u043d\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 (\u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0445 peer-\u043e\u0432 \u0438 \u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441) <a href=\"https:\/\/github.com\/baskerville\/diana\" rel=\"nofollow noopener noreferrer\">diana<\/a> frontend.<\/p>\n<h2>Games<\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043b\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u044c, \u0438\u0433\u0440\u0430\u044e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043e\u0442\u0434\u044b\u0445 \u0436\u0435 \u043d\u0443\u0436\u0435\u043d) \u0432:<\/p>\n<ul>\n<li><a href=\"https:\/\/freeciv.org\/\" rel=\"nofollow noopener noreferrer\">FreeCiv<\/a> \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e.<\/li>\n<li><a href=\"http:\/\/nethack.org\/\" rel=\"nofollow noopener noreferrer\">NetHack<\/a> RPG, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e curses \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430:\n<pre> ----- ~\/games\/nethack\/.nethackrc ----- OPTIONS=gender:male OPTIONS=windowtype:curses,color,menucolors OPTIONS=boulder:0 OPTIONS=!autoopen,autopickup,pickup_types:$ OPTIONS=hitpointbar,statushilites=3,showexp,force_invmenu,perm_invent,statuslines:3 OPTIONS=hilite_pet,hilite_pile,lit_corridor OPTIONS=pettype:none  MENUCOLOR=&quot;blessed&quot;=green MENUCOLOR=&quot; cursed&quot;=red  OPTION=hilite_status: gold\/up\/yellow\/down\/brown OPTION=hilite_status: characteristics\/up\/green\/down\/red OPTION=hilite_status: hitpoints\/100%\/gray&amp;normal OPTION=hilite_status: hitpoints\/&lt;100%\/green&amp;normal OPTION=hilite_status: hitpoints\/&lt;66%\/yellow&amp;normal OPTION=hilite_status: hitpoints\/&lt;50%\/orange&amp;normal OPTION=hilite_status: hitpoints\/&lt;33%\/red&amp;bold OPTION=hilite_status: hitpoints\/&lt;15%\/red&amp;inverse OPTION=hilite_status: condition\/major\/orange&amp;inverse OPTION=hilite_status: condition\/lev+fly\/red&amp;inverse WIZKIT=\/home\/stargrave\/games\/nethack\/.wizkit # \u0434\u0430, \u043d\u0438 \u0440\u0430\u0437\u0443 \u0447\u0435\u0441\u0442\u043d\u043e \u043d\u0435 \u043f\u043e\u0431\u0435\u0434\u0438\u043b <\/pre>\n<p>  \u042d\u0442\u0430 \u0438\u0433\u0440\u0430 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0438\u043c: \u043d\u0430 \u043d\u0435\u0451 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043e\u0442\u0432\u043b\u0435\u0447\u044c\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432 \u2014 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0443\u0431\u0438\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u0435\u043d\u044c, \u0434\u0430\u0436\u0435 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f wizard-\u0440\u0435\u0436\u0438\u043c\u0430 \u0438 wizkit.<\/li>\n<li><a href=\"https:\/\/www.scummvm.org\/\" rel=\"nofollow noopener noreferrer\">ScummVM<\/a> \u043c\u0430\u0448\u0438\u043d\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0434\u0443\u0442 \u0441\u043e\u0442\u043d\u0438 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0445 \u0438\u0433\u0440! \u0412\u0441\u0435 \u043a\u0432\u0435\u0441\u0442\u044b \u043e\u0442 LucasArts (\u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0445 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0439, \u0430 \u043d\u0435 Sierra) \u043f\u0440\u043e\u0448\u0451\u043b \u0432 \u044d\u0442\u043e\u043c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435. \u0410 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432 \u043d\u0435\u0433\u043e \u0432\u0441\u0442\u0440\u043e\u0438\u043b\u0438 ResidualVM \u0438 \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043f\u0440\u043e\u0448\u0451\u043b The Longest Journey. \u041e\u0434\u043d\u0438 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043b\u0443\u0447\u0448\u0438\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0436\u0438\u0437\u043d\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0441 ScummVM \u0438 ResidualVM.<\/li>\n<li>\u041d\u0435 \u0442\u0430\u043a \u0447\u0430\u0441\u0442\u043e, \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e interactive fiction \u0438\u0433\u0440\u044b, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432 <a href=\"https:\/\/sourceforge.net\/projects\/frotz\/\" rel=\"nofollow noopener noreferrer\">Frotz<\/a> Z-\u043c\u0430\u0448\u0438\u043d\u0435.\n<p>  \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0448\u0430\u0433\u043e\u0432, \u043f\u0440\u0438 \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 Infocom-\u043e\u0432\u0441\u043a\u0438\u0445 \u0438\u0433\u0440, \u0431\u044b\u043b\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0440\u0442 \u043e\u0442 \u0440\u0443\u043a\u0438. \u0427\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0434\u0430\u043b\u0441\u044f (\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c\/\u0447\u0435\u0440\u0442\u0438\u0442\u044c \u043d\u0435 \u043b\u044e\u0431\u043b\u044e) \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 GraphViz. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b Perl \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b \u0432 Dot \u044f\u0437\u044b\u043a. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/ifm.readthedocs.io\/en\/latest\/contents.html\" rel=\"nofollow noopener noreferrer\">Interactive Fiction Mapper<\/a>.<\/li>\n<\/ul>\n<h2>\u0411\u0414<\/h2>\n<p>  \u0412\u0441\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435: \u043f\u0440\u043e \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u041e\u0421, \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e \u0441\u0430\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0435\u0447\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0410 \u044d\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0443\u0447\u0438 \u043a\u043e\u0434\u0430, \u0442\u0435\u0441\u0442\u043e\u0432, \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0410 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0421\u0423\u0411\u0414:<\/p>\n<pre> ----- ~\/.sqliterc ----- .bail on .mode column .headers on <\/pre>\n<pre> ----- ~\/.psqlrc ----- CREATE OR REPLACE FUNCTION ppj(jsonb) RETURNS TEXT AS $$     SELECT jsonb_pretty($1); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION ppj(jsonb[]) RETURNS SETOF TEXT AS $$     SELECT jsonb_pretty(unnest) FROM (SELECT unnest($1)) AS dummy; $$ LANGUAGE SQL;  \\pset linestyle unicode \\pset footer off \\timing on \\set HISTFILE ~\/secure\/.psql_history <\/pre>\n<p>  \u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pretty printing JSONB \u043f\u043e\u043b\u0435\u0439 PostgreSQL. \u0414\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f SQL \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 <em>\\e<\/em> \u0432\u044b\u0437\u043e\u0432.<\/p>\n<h2>\u042f\u041f<\/h2>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 Perl, \u0438\u043c\u0435\u043b \u043c\u043d\u043e\u0433\u043e\u043b\u0435\u0442\u043d\u0438\u0439 \u043e\u043f\u044b\u0442 \u0441 Ruby, PHP, Lua. \u041d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u043d\u0430 Python. \u0410 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 Go \u043a\u043e\u0440\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e \u043c\u043e\u0451 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c\u0443. \u0421\u0447\u0438\u0442\u0430\u044e \u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043d\u0435\u043a\u0438\u043c \u0421\u0432\u044f\u0442\u044b\u043c \u0413\u0440\u0430\u0430\u043b\u0435\u043c: \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0439 \u0434\u043e \u043c\u0435\u043b\u043e\u0447\u0435\u0439, \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043b\u0451\u0433\u043a\u0438\u0439 \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 \u0440\u043e\u043b\u0438. \u042d\u0442\u043e \u043b\u0443\u0447\u0448\u0438\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0435 \u0434\u043b\u044f \u0432\u044b\u043f\u0435\u043d\u0434\u0440\u0451\u0436\u0430, \u0430 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447. Go (\u0438 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u044b) \u0434\u0430\u0451\u0442 \u043d\u0435 \u0442\u043e \u0447\u0442\u043e \u043b\u044e\u0434\u0438 \u0445\u043e\u0442\u044f\u0442, \u0430 \u0442\u043e \u0447\u0442\u043e \u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043d\u0430 Python \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0442\u0438\u043f\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0435\u0433\u043e <em>.rec<\/em> \u0444\u0430\u0439\u043b\u0430 \u0441 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b: \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0435\u0437 \u0440\u0430\u0437\u0434\u0443\u043c\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Go. \u0418 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u0447\u0435\u0437\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b Python.<\/p>\n<p>  \u041a Ruby, PHP \u0438 Lua \u0443\u0436\u0435 \u043d\u0435 \u043f\u0440\u0438\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0441\u044c. \u041d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432 \u043d\u0438\u0445 \u043d\u0435 \u0438\u043c\u0435\u044e, \u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u0437\u0430\u0434\u0430\u0447. Python \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043d\u0430 \u043d\u0451\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439. \u041c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043f\u0443\u0442\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u0441\u0435\u0439 Python \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0433\u0434\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 PyPI \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0435\u043c \u0435\u0449\u0451 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u0437-\u0437\u0430 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u041e\u0421-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 <em>setup.py<\/em> \u0444\u0430\u0439\u043b\u0430\u0445.<\/p>\n<p>  \u0427\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u043d\u0430\u0447\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0421\u0438. \u0418 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f! Go, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u00ab\u0421\u0438 \u043a\u0430\u043a\u0438\u043c \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b \u0431\u044b\u0442\u044c\u00bb.<\/p>\n<p>  \u041d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 Perl. \u041a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u0440\u0443\u0447\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0438\u0444\u043e\u0432 \u043e \u043d\u0451\u043c. \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437 \u0433\u043e\u043b\u043e\u0432 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u043c\u0435\u0442\u044c \u0441 \u043d\u0438\u043c \u0434\u0435\u043b\u043e \u0432 90-\u0445 \u0433\u043e\u0434\u0430\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0431\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0431\u044b\u043b\u043e. \u0427\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u043e \u0447\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u0437\u0430\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043d\u0438\u0448\u0443. \u041f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u044f \u0431\u044b \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b, \u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e 2-\u0445 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u043a\u043e\u0434\u0430, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u0441\u0430\u043c\u043e\u0435 \u043e\u043d\u043e.<\/p>\n<p>  \u042f \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u043e\u0442\u043d\u043e\u0448\u0443\u0441\u044c \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e <em>awk<\/em>. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <em>sed<\/em> \u0438 <em>grep<\/em> \u2014 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u044b: \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f <em>gawk<\/em> \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 *BSD \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0433\u0434\u0435 \u0435\u0433\u043e \u043d\u0435\u0442 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0432 99.99% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043b\u044e\u0434\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 0.1% \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u0435 \u0443\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043b\u044c\u0448\u0435 <em>{print $NF, $1}<\/em>. <em>awk<\/em> \u043b\u044e\u0434\u0438 \u043d\u0435 \u0437\u043d\u0430\u044e\u0442. \u0417\u043d\u0430\u043a\u043e\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u0430\u0440\u043e\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0443\u043c\u0435\u044e\u0449\u0438\u0445 \u043d\u0430 \u043d\u0451\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0417\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u042f\u041f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0435\u0447\u0430\u0442\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432?<\/p>\n<p>  Perl \u0436\u0435, \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0432\u0435\u0437\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0441\u043e\u043a\u0435\u0442\u0430\u043c\u0438, \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 (fork\/exec, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c) \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 <em>.pm<\/em> \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442 \u0438 \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u0432 OpenWRT \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b.<\/p>\n<p>  \u041e\u043d \u0438\u043c\u0435\u0435\u0442 \u0438 \u0432\u0441\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b <em>awk<\/em> oneliner \u0437\u0430\u0434\u0430\u0447. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>awk<\/em> \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0448\u0435, \u043d\u0430 Perl \u043c\u043e\u0433 \u0431\u044b \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c: <em>perl -lane &#8216;print &quot;@F[$#F, 0]&quot;&#8217;<\/em> \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0438 \u0432 GNU \u0438 BSD \u0438 OpenWRT \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0442\u0440\u0435\u0431\u0443\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0448\u0443\u0441\u0442\u0440\u043e \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u044b Perl, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u043e\u0432 (\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438) <em>sed<\/em>, <em>awk<\/em>, <em>cut<\/em> (\u0442\u043e\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 (<em>-w<\/em>) \u043d\u0435 \u0432\u0435\u0437\u0434\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435), <em>tr<\/em> \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445.<\/p>\n<h2>Python<\/h2>\n<p>  \u041a\u0440\u043e\u043c\u0435 Vim-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u0434\u043b\u044f Python \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u0437\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 <em>pdb<\/em> \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430:<\/p>\n<pre> ----- ~\/.pdbrc ----- import os alias hare os.system(&quot;kill %d&quot; % os.getpid()) alias hare9 os.system(&quot;kill -9 %d&quot; % os.getpid()) alias pp1 import pyderasn ;; print(pyderasn.pprint(%1, \\     oid_maps=(locals().get(&quot;OID_STR_TO_NAME&quot;, {}),))) <\/pre>\n<p>  <em>hare<\/em> \u0430\u043b\u0438\u0430\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0422\u0430\u043a \u0443\u0436 \u0432\u044b\u0448\u043b\u043e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0440\u0438\u0431\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0447\u0435\u043c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043a\u0443\u0447\u0443 Ctrl-D\/C. \u0410 <em>pp1<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f pretty printing-\u0430 ASN.1 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440.<\/p>\n<pre> ----- ~\/.zshenv ----- export PYTHONDONTWRITEBYTECODE=1 <\/pre>\n<p>  \u041f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c <em>.py[co]<\/em> \u0444\u0430\u0439\u043b\u044b, \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0432\u0438\u0436\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0448\u0430\u044f\u0441\u044c \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/p>\n<p>  \u042f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e PyPI \u0432 PIP \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u041d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"http:\/\/www.gocheese.cypherpunks.ru\/\" rel=\"nofollow noopener noreferrer\">GoCheese<\/a> PyPI-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u0442\u0434\u0430\u0447\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u0423\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f (\u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440?), \u043d\u0430 Python \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0432\u0448\u0435\u0433\u043e \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u043a\u0441\u0438. <em>pyshop<\/em> \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f GoCheese \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u2014 \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044f \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u0418 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0440\u0435\u043c\u0433\u043b\u0430\u0432 \u0431\u044b\u0441\u0442\u0440\u043e. \u0410 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0438 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u044b.<\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f Python \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0435 \u043d\u0430 Python:<\/p>\n<pre> ----- ~\/work\/pyimportcan\/pyimportcan.pl ----- my $buf; my $con; my @imports; my %parsed;  # Collect strings and aggregate the splitted ones while(&lt;&gt;){     next if \/^[&lt;=&gt;]{2,}\/;     next if \/^\\s*#\/;     chop;     $buf = ($con ? $buf : &quot;&quot;) . $_;     $con = \/[\\\\,\\(]\\s*$\/ ? 1 : 0;     next if \/^\\s*\\)*\\s*$\/;     push @imports, $buf; };  # Consolidate information from where what is imported foreach (@imports) {     s\/[\\\\\\(\\)]\/\/g;     s\/  *\/ \/g;     next if \/import\\s*$\/;     \/^(.*)\\s*import\\s*(.*)$\/;     my ($where, $what) = ($1, $2);     map { $parsed{$where}-&gt;{$_}++ } split \/\\s*,\\s*\/, $what; };  foreach my $where (sort keys %parsed){     map { print $where . &quot;import $_\\n&quot; } sort keys %{$parsed{$where}}; }; <\/pre>\n<p>  \u041e\u043d\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 import-\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u043a\u0443\u0447\u0443 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f:<\/p>\n<pre> from foo import bar from foo import bar, baz from foo import (   bar,   baz ) from foo import (   baz,   bar, ) from foo import bar, \\     baz <\/pre>\n<p>  \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u00ab\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u043d\u043e\u043c\u0443\u00bb \u0432\u0438\u0434\u0443, \u043e\u0447\u0435\u043d\u044c \u0434\u0440\u0443\u0436\u0435\u043b\u044e\u0431\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f git \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432, \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430\u0445. \u0427\u0451\u0442\u043a\u0438\u0439 \u0438 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439:<\/p>\n<pre> from foo import bar from foo import baz <\/pre>\n<h2>Go<\/h2>\n<pre> ----- ~\/.zshenv ----- export GOCACHE=\/tmp\/go-cache export GOPROXY=off export GOSUMDB=off export GOPATH=$HOME\/work\/gopath <\/pre>\n<p>  \u041a\u044d\u0448 \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0445\u043e\u0447\u0443 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0441\u044c \u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c, \u043f\u043b\u044e\u0441 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0441\u0443\u0449\u0438\u043c \u0446\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u0434\u0435. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0438 <em>sum.golang.org<\/em>, \u043d\u0438 <em>proxy.golang.org<\/em>, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0443\u0442\u0435\u0447\u043a\u0430 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u0435\u043a\u0443\u0449\u0430\u044f <em>GOPROXY=off<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043b\u0430\u0437\u0430\u043d\u044c\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432 <em>go doc<\/em> \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u0442\u0443\u0434\u0430 \u0445\u043e\u0447\u0435\u0442. \u041a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u044f\u0432\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430, \u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e <em>GOPROXY=direct<\/em> \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <em>go get<\/em>.<\/p>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a Go \u0448\u0442\u0430\u0442\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 <em>$GOPATH\/pkg\/mod<\/em>, \u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e <em>$GOPATH<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 ZFS dataset \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0439 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: <em>dedupratio=1.26x<\/em>.<\/p>\n<p>  \u0418\u0437 must-have \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Go \u043c\u043e\u0433\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c:<\/p>\n<ul>\n<li><em>golang.org\/x\/tools\/cmd\/goimports<\/em>, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u0434 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u0441\u043f\u0438\u0441\u043e\u043a import-\u043e\u0432, \u044d\u043a\u043e\u043d\u043e\u043c\u044f \u043a\u0443\u0447\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/li>\n<li><em>golang.org\/x\/tools\/gopls<\/em> LSP \u0441\u0435\u0440\u0432\u0435\u0440. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 LSP \u0443 \u043c\u0435\u043d\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 Go, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e. \u0427\u0442\u043e \u0432 Python, \u0447\u0442\u043e \u0432 \u0421\u0438 (\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445) \u2014 \u043c\u043e\u0436\u043d\u043e \u0436\u0434\u0430\u0442\u044c \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0441\u044f linter \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0443 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/li>\n<li><em>github.com\/goware\/modvendor<\/em> \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <em>vendor<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0432 release tarball.<\/li>\n<\/ul>\n<p>  \u042f \u044f\u0440\u043e\u0441\u0442\u043d\u044b\u0439 \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a Go \u043c\u043e\u0434\u0443\u043b\u0435\u0439! \u041d\u0435 \u0441\u043a\u0430\u0436\u0443 \u0447\u0442\u043e \u043c\u043d\u0435 \u0438\u0445 \u0438\u0434\u0435\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0438 \u0447\u0442\u043e \u0432\u0441\u0451 \u0448\u043b\u043e \u043a\u0430\u043a \u043f\u043e \u043c\u0430\u0441\u043b\u0443 \u0438 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u041d\u043e \u0432 Go \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0430\u043a: \u0441\u043f\u0443\u0441\u0442\u044f \u0432\u0440\u0435\u043c\u044f \u0442\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0438 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0441\u0442\u044c. \u041e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043b\u044e\u0434\u0435\u0439, \u0441\u0443\u0434\u044f \u043f\u043e \u0431\u043b\u043e\u0433\u0430\u043c, \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>vendor<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0438 \u0447\u0442\u043e <em>$GOPATH<\/em>, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u043e\u0444\u0442\u0430 \u0438\u0437 \u0447\u0451\u0442\u043a\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 tarball-\u0435. \u0421\u0430\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 tarball \u0432\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u041d\u043e <em>$GOPATH<\/em> deprecation \u043d\u0438 \u043a\u0430\u043f\u043b\u0438 \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442.<\/p>\n<h2>C<\/h2>\n<p>  \u0414\u043b\u044f \u0421\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e LLVM, Clang, LLDB, clang-analyzer, clang-tidy, clangd LSP \u0441\u0435\u0440\u0432\u0435\u0440, clang-format \u0438 <a href=\"https:\/\/include-what-you-use.org\/\" rel=\"nofollow noopener noreferrer\">include-what-you-use<\/a> (IWYU). \u0421\u043f\u043b\u043e\u0448\u043d\u0430\u044f LLVM\/Clang \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430. LSP \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u043b\u044f linting-\u0430. \u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0443\u0439\u043c\u0443 \u0440\u0430\u0437 \u0442\u043a\u043d\u0443\u043b\u0438 \u043c\u0435\u043d\u044f \u043d\u043e\u0441\u043e\u043c \u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043a\u043e\u0433\u0434\u0430. \u0410 \u0441 IWYU \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e \u0433\u0435\u043c\u043e\u0440\u0440\u043e\u0439 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 <em>#include<\/em>-\u043e\u0432, \u0445\u043e\u0442\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0438\u043c\u0435\u0442\u044c mapping-\u0444\u0430\u0439\u043b \u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0418\u0437-\u0437\u0430 <em>clang-format<\/em> \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0438 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430 (\u043d\u0443 \u043a\u0440\u043e\u043c\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442) \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u044f <em>cfmt.sh<\/em>. \u0421\u0442\u0438\u043b\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0435\u043d\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442, \u043d\u043e \u043f\u043e\u043a\u0430 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0439:<\/p>\n<pre> ----- ~\/bin\/cfmt.sh ----- #!\/bin\/sh clang-format -style=&quot;`cat ~\/.clang-format`&quot; $@ <\/pre>\n<pre> ----- ~\/.clang-format ----- {     BasedOnStyle: llvm,     ColumnLimit: 88,     IndentWidth: 4,     AlignAfterOpenBracket: AlwaysBreak,     AlignConsecutiveAssignments: true,     AllowAllParametersOfDeclarationOnNextLine: false,     AllowShortBlocksOnASingleLine: true,     AlwaysBreakAfterReturnType: TopLevel,     BinPackArguments: false,     BinPackParameters: false,     BreakBeforeTernaryOperators: false,     BreakStringLiterals: false,     BreakBeforeBraces: Custom,     BraceWrapping: {         AfterFunction: true,     }, } <\/pre>\n<p>  \u041e\u043f\u044b\u0442\u0430 \u043d\u0430 \u0421\u0438 \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445: <em>pdb<\/em>, <em>ipdb<\/em>, <em>delve<\/em>, <em>gdb<\/em> \u2014 LLDB \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438 \u0432 \u043d\u0451\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u0435\u0431\u0440\u044f\u0445 \u041e\u0421. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u0438\u0430\u0441 \u0434\u043b\u044f \u043f\u0435\u0447\u0430\u0442\u0438 \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<pre> ----- ~\/.lldbinit ----- command alias mr memory read --size 1 --format x --count %1 -- <\/pre>\n<p>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0421\u0438, \u043e\u0449\u0443\u0442\u0438\u043b \u0438 \u043f\u043e\u043d\u044f\u043b \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e <a href=\"http:\/\/dtrace.org\/blogs\/about\/\" rel=\"nofollow noopener noreferrer\">DTrace<\/a>. \u0418 \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u043d\u0451\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b, \u043d\u043e USDT (userspace defined tracing) \u043f\u0440\u043e\u0431\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c overhead-\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u043e\u0442\u043e\u043c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u0432 \u043d\u0435\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041f\u0440\u0438\u0447\u0451\u043c USDT \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f DTrace \u043f\u0440\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u0438 SystemTap \u0432 GNU\/Linux, \u0434\u0430\u043b\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f eBPF framework \u0434\u043b\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u0433\u043e\u0434\u0435\u043d \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<h2>redo<\/h2>\n<p>  \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 HTML \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u0432\u0441\u0451 \u0432 \u043c\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 DJB \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u043b\u0435\u0436\u0435\u043d\u0438\u044f \u0437\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438, \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 <a href=\"http:\/\/cr.yp.to\/redo.html\" rel=\"nofollow noopener noreferrer\">redo<\/a>. \u0413\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0430 \u0438 \u0441\u0430\u043c\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430 Go \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430 \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c (\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435), \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0438\u043b\u0438 \u043c\u0435\u043d\u044f \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430. \u041e\u0431 \u044d\u0442\u043e\u043c <a href=\"https:\/\/habr.com\/ru\/post\/517490\/\">\u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b<\/a>. \u0421\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0433\u0434\u0435 \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f Make \u0438\u043b\u0438 <em>autoconf<\/em>. \u0423 \u043d\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u042f \u0431\u044b\u043b \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0451\u043d <em>redo-c<\/em> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0431\u044b\u043b \u0443\u0434\u0440\u0443\u0447\u0451\u043d \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u044b <em>apenwarr\/redo<\/em> \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 Python. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"http:\/\/www.goredo.cypherpunks.ru\/\" rel=\"nofollow noopener noreferrer\">\u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e<\/a> \u043d\u0430 Go, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438 \u0441\u043e\u0442\u043d\u0438 \u0440\u0430\u0437 \u043d\u0430 \u0434\u043d\u044e. \u041d\u043e \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c <em>.do<\/em> \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438, \u0433\u0434\u0435 \u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434 \u0441\u043e\u0442\u043d\u044e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <em>default*.do<\/em>.<\/p>\n<pre> ----- ~\/.zshenv ----- export REDO_JOBS=0 REDO_NO_SYNC=1 <\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c <em>fsync<\/em> \u0432\u044b\u0437\u043e\u0432, \u0434\u0430\u0431\u044b \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<h2>TAI64<\/h2>\n<p>  \u0415\u0449\u0451 \u044f \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a TAI64 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u043d\u0438\u043c \u0432 <em>daemontools<\/em> \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u0445. \u0412 UTC \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0434\u0451\u0442 \u0432\u043f\u0435\u0440\u0451\u0434, \u043d\u043e \u043d\u0435 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u0432\u0438\u0441\u043e\u043a\u043e\u0441\u043d\u044b\u0445 \u0441\u0435\u043a\u0443\u043d\u0434 (leap seconds). TAI \u0432\u0440\u0435\u043c\u044f \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u0438\u0434\u0451\u0442 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e. \u0410 TAI64 \u044d\u0442\u043e <a href=\"https:\/\/cr.yp.to\/libtai\/tai64.html\" rel=\"nofollow noopener noreferrer\">\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 DJB<\/a> \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e TAI \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0438\u043b\u0438 \u0430\u0442\u0442\u043e\u0441\u0435\u043a\u0443\u043d\u0434. \u0412 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043d\u0430\u0447\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TAI64N. \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0441\u043e\u043a\u043e\u0441\u043d\u044b\u0445 \u0441\u0435\u043a\u0443\u043d\u0434, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c TAI \u0432 UTC.<\/p>\n<h2>Vim<\/h2>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0436\u0443 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0432\u0430\u0436\u043d\u043e\u043c\u0443 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435: \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443. \u0412 \u043d\u0451\u043c \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u043f\u043b\u044e. \u0412\u0441\u0451 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u044b, \u0432\u0432\u043e\u0434\u0430 \u0447\u0435\u0433\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e \u043d\u0430 web-\u0441\u0430\u0439\u0442\u0430\u0445, \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0441 \u0434\u0435\u0432\u0443\u0448\u043a\u0430\u043c\u0438 (\u043c\u043d\u043e\u0433\u043e \u0442\u044b\u0441\u044f\u0447 \u043f\u0438\u0441\u0435\u043c!), \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442 \u0432 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0435, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0435\u0439\/\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432\/\u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439 \u2014 \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c \u0438 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 SQL \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0421\u0423\u0411\u0414, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u043f\u043e\u043b\u0435\u0439 \u0432\u0432\u043e\u0434\u0430 \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u0430 \u2014 \u0432\u0441\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e Vim). \u042d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u043b\u044e\u0434\u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0447\u0435\u043c\u0443 Vim, \u0430 \u043d\u0435 \u00ab\u043c\u043e\u0434\u043d\u043e\u0435 Electron-driven \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043c\u043e\u043d\u0441\u0442\u0440 \u043e\u0442 Microsoft\/Apple\u00bb? \u041d\u0435 \u0437\u043d\u0430\u044e \u0447\u0442\u043e \u0438\u043c \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c. \u041f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0438 \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b, \u043a\u043e\u0433\u0434\u0430 \u0441\u0430\u043c\u0430 \u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u043e\u0434\u0430 \u0442\u0430\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u0441\u043e\u0432\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438? \u00ab\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c Unix \u0438\u043b\u0438 Windows NT, \u0430 \u043d\u0435 MS-DOS?\u00bb \u2014 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u044f. \u0412 Vim \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0435\u043d \u043a\u043e\u043c\u0430\u043d\u0434 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0442\u043d\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u0442\u043d\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043c\u0435\u043b\u044c\u0447\u0430\u0439\u0448\u0438\u0445 \u043d\u044e\u0430\u043d\u0441\u043e\u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u043b\u044e\u0441 \u0435\u0449\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451. \u041e \u043a\u0430\u043a\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0434\u0442\u0438 \u0440\u0435\u0447\u044c?<\/p>\n<p>  \u0415\u0441\u0442\u044c \u043b\u044e\u0434\u0438 \u0441\u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0432\u0430\u0436\u043d\u0430, \u0438\u0431\u043e \u043e\u043d\u0438 \u0431\u041e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u044f\u0442 \u00ab\u043d\u0430 \u0440\u0430\u0437\u0434\u0443\u043c\u044c\u044f\u00bb. \u041d\u0435 \u0441\u043f\u043e\u0440\u044e \u0447\u0442\u043e \u0441\u0430\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0440\u0443\u043a\u0430\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u043f\u043e\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u0432\u044b\u0439\u0434\u0435\u0442 \u043d\u0430 \u0434\u0435\u043b\u0435, \u0447\u0435\u043c \u0432 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435\u00bb \u0432 \u0433\u043e\u043b\u043e\u0432\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u043b\u0438\u0448\u044c \u0441\u0430\u043c\u0443\u044e \u043c\u0430\u043b\u043e\u0441\u0442\u044c, \u043c\u043d\u0435 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0433\u043b\u044f\u0434\u044f \u043d\u0430 \u043b\u044e\u0434\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0432 \u0447\u0451\u043c-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0442\u0438\u043f\u0430 \u0411\u043b\u043e\u043a\u043d\u043e\u0442\u0430\/Word\/Nano\/mcedit, \u0447\u0442\u043e \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b 75% \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438\u043c\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c\u044b\u043c \u0437\u0430 \u044d\u043a\u0440\u0430\u043d\u043e\u043c, \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0438 shell-\u0435. \u0414\u0430 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0432\u0441\u0451 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u0443\u0441\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430! \u0423\u0431\u0435\u0436\u0434\u0451\u043d, \u0447\u0442\u043e \u043b\u044e\u0434\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u044e\u0442 \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u043d\u0438 \u0442\u0440\u0430\u0442\u044f\u0442 \u043d\u0430 \u00ab\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e\u00bb \u0441\u0432\u043e\u0438\u0445 \u043c\u044b\u0441\u043b\u0435\u0439 (\u0447\u0442\u043e \u043e\u043d\u0438 \u0445\u043e\u0442\u044f\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435).<\/p>\n<p>  \u042f \u043e\u0447\u0435\u043d\u044c \u0443\u0432\u0430\u0436\u0430\u044e Emacs, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u043a\u0430\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c. \u041d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u044e \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430, \u0447\u0442\u043e profit \u043e\u0442 \u0435\u0434\u0438\u043d\u043e\u0439 \u00ab\u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00bb Emacs \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c Vim, \u0434\u0430\u0436\u0435 \u043e\u0431\u0432\u0435\u0448\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\u043c\u0438. \u041d\u043e Emacs \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c: \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u0431\u0451\u0436\u043a\u0430 \u043f\u043e Ctrl \u0432\u0440\u0435\u0434\u043d\u0430 \u0434\u043b\u044f \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f (\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0440\u0443\u043a\u0430\u043c\u0438 \u0443 Emacs-\u0435\u0440\u043e\u0432) \u0438 \u044f \u043d\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0441\u043a\u043b\u0430\u0434\u0430 \u0443\u043c\u0430.<\/p>\n<p>  \u0412 Vim \u043f\u043b\u043e\u0445\u043e \u043e\u0434\u043d\u043e: \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 (no pain, no gain!). 20+ \u043b\u0435\u0442 \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e, \u043d\u043e \u0434\u043e \u043f\u043e\u0440 \u0440\u0430\u0437 \u0432 \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0443\u0437\u043d\u0430\u044e \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u043b\u0438 \u0442\u0440\u044e\u043a. \u041d\u0435\u0442, \u0432\u0441\u0451 \u0435\u0441\u0442\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c <em>:help<\/em>, \u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c, \u043f\u043e\u043d\u044f\u0442\u044c use-case-\u044b \u0438 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0437\u0443. \u0412\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0431\u0435\u0440\u0443 \u0438 \u0447\u0438\u0442\u0430\u044e \u0435\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0441\u0442\u0430\u0440\u0430\u044f\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u044d\u0442\u043e \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041a\u0430\u0436\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u0430 Vim \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u0430, \u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u043e\u0434 \u0437\u0430\u043c\u0435\u0447\u0430\u044e, \u0447\u0442\u043e \u0438\u0437 99% \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e Vim, \u0447\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u00abultra advanced powerful tips and tricks\u00bb, \u043d\u0435 \u0443\u0437\u043d\u0430\u044e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e, \u043d\u0438 \u0431\u0438\u0442\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0421 Vim \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0432\u0440\u0435\u0434\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438. \u0421\u0430\u043c\u043e\u0435 \u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0440\u0443\u0434\u0430 \u0432 Vim \u0447\u0442\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 (<em>v<\/em>) \u043d\u0435 \u043a \u043c\u0435\u0441\u0442\u0443. \u042f \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e \u00ab\u0431\u043b\u043e\u043a\u043d\u043e\u0442-mode\u00bb, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u0440\u0443\u043a\u043e\u044f\u0442\u044c\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0434\u0440\u0435\u043b\u0438 \u0437\u0430\u0431\u0438\u0432\u0430\u0442\u044c \u0433\u0432\u043e\u0437\u0434\u0438. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e \u0448\u0442\u0430\u0442\u043d\u044b\u0435 motion-\u044b \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f (motion \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435), \u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <em>normal<\/em> \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c <em>:g<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f (<em>.<\/em>) \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0435\u043c\u0443\u0441\u044f \u043a\u0443\u0441\u043a\u0443 \u0442\u0435\u043a\u0441\u0442\u0430. \u042d\u0442\u043e \u043a\u0430\u043a \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0433\u0430\u0442\u044c, \u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0432 \u0441\u0435\u0431\u0435 \u043d\u043e\u0433\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u2014 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442, \u043d\u043e \u043d\u0435 \u0432\u044b\u0448\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u043d\u043a\u0438.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0435\u0449\u0451 \u043c\u043d\u0435\u043d\u0438\u0435 \u0447\u0442\u043e Vim \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043a\u0443\u0447\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u0422\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u043b\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u043c\u0443 \u0431\u044b \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e. \u0410 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435: \u043f\u043e\u043b\u043d\u0435\u0439\u0448\u0430\u044f \u0447\u0443\u0448\u044c, \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u0440\u043e\u0434\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u0418 \u0441\u0430\u043c \u0433\u0440\u0435\u0448\u0438\u043b \u044d\u0442\u0438\u043c: \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0441\u0442\u0430\u0432\u044f \u0441\u0435\u0431\u044f \u043f\u0430\u0440\u0443 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0443\u0434\u0438\u0432\u043b\u044f\u044f\u0441\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. \u0421 \u0433\u043e\u0434\u0430\u043c\u0438, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u043b\u043e\u0441\u044c. \u041b\u0438\u0431\u043e \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c task-specific, \u043b\u0438\u0431\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e must-have \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0439 Tim Pope (\u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435).<\/p>\n<p>  \u0418 \u0435\u0449\u0451 \u0431\u044b\u0442\u0443\u0435\u0442 \u043c\u0438\u0444 \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Vim \u043d\u0443\u0436\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u0432 <em>.vimrc<\/em>. \u041f\u0443\u0445\u043b\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0438, \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ul>\n<li>\u041d\u043e\u0432\u0438\u0447\u043a\u0438 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0448\u0442\u0430\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Vim \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0441\u0442\u0430\u043b \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445. \u041d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u043a\u0430\u043a \u043d\u0430\u0434\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0418 \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432\u0438\u0434\u0435\u043b \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e. \u041d\u0430 \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u043b\u0441\u044f \u0447\u0442\u043e <em>.vimrc<\/em> \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u0443\u0434\u0435\u043b.<\/li>\n<li>\u0423 \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0431\u0430\u0433\u0430\u0436 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a \u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u0440\u0443\u0436\u0435\u043b\u044e\u0431\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0430\u043d\u0430\u0442\u043e\u043c\u0438\u0438 (\u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0430\u043b\u044c\u0446\u044b, \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432). \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043d\u0435 \u00ab\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445\u00bb \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0438\u0445 \u043c\u0430\u043b\u043e \u0447\u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/li>\n<\/ul>\n<p>  \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0442\u0440\u044e\u043a\u0438 \u0432 Vim \u043d\u0435 \u0441\u043c\u043e\u0433\u0443, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <em>zsh<\/em>: \u044d\u0442\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u043d\u0430\u044f \u0442\u0435\u043c\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0443\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435\u043c \u0441\u0432\u043e\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432.<\/p>\n<pre> ----- ~\/.vimrc ----- set t_Co=16 syntax on filetype on filetype plugin on set nocompatible set encoding=utf-8 set mouse=&quot;&quot; <\/pre>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, filetype-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441 vi (\u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043a\u0443\u0447\u0430 \u0432\u0441\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c), UTF-8 \u043a\u0430\u043a \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043d\u0435 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u044b\u0448\u043a\u043e\u0439 (\u0447\u0442\u043e\u0431\u044b \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e).<\/p>\n<p>  \u042f \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0432\u0435\u0442\u043e\u0432 \u0434\u043e 16 \u2014 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u044b\u043c\u0438, \u0430 \u043d\u0435 \u0431\u043b\u0451\u043a\u043b\u044b\u043c\u0438 \u0438 \u0431\u043b\u0435\u0434\u043d\u044b\u043c\u0438, \u0435\u043b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u043c\u044b\u043c\u0438 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0446\u0432\u0435\u0442\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 default. \u041d\u0430 \u0447\u0451\u0440\u043d\u043e\u043c \u0444\u043e\u043d\u0435 \u0441 16 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0432\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u043e.<\/p>\n<pre> ----- ~\/.vimrc ----- set viminfo-=h set viminfo+=f1,%,n~\/secure\/vim\/info set viewdir=~\/secure\/vim\/view set directory=~\/secure\/vim\/tmp set undodir=~\/secure\/vim\/undo set undofile <\/pre>\n<ul>\n<li>\u0418\u0437 <em>viminfo<\/em> (\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u0439 \u0432 <em>.viminfo<\/em> \u0444\u0430\u0439\u043b\u0435) \u0443\u0431\u0438\u0440\u0430\u044e \u0437\u0430\u0431\u044b\u0432\u0430\u043d\u0438\u0435 \u043e <em>hlsearch<\/em> \u0438 \u0442\u0440\u0435\u0431\u0443\u044e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043c\u0435\u0442\u043a\u0438 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b (\u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 <em>&#8216;A-&#8216;Z<\/em>) \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0444\u0435\u0440\u043e\u0432. <em>.viminfo<\/em> \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435, \u0434\u0430\u0431\u044b \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u043d\u0435\u0447\u0430\u044f\u043d\u043d\u043e \u043d\u0435 \u043e\u0441\u0435\u043b\u0430 \u0432\u0430\u0436\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432.<\/li>\n<li>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, undo-\u0444\u0430\u0439\u043b\u043e\u0432, view (\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u00ab\u0441\u0435\u0441\u0441\u0438\u0438\u00bb) \u0442\u043e\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set autoindent set tabstop=4 set shiftwidth=4 set smarttab set expandtab set nojoinspaces set scrolloff=2 set backspace=indent,eol set shortmess=aoOtI set highlight-=v:Visual set highlight+=vr set highlight+=sr set cpoptions+=$ set showcmd set showmatch set completeopt-=preview set diffopt+=indent-heuristic,algorithm:histogram <\/pre>\n<ul>\n<li><em>autoindent<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430.<\/li>\n<li><em>tabstop<\/em>, <em>shiftwidth<\/em>, <em>expandtab<\/em> \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0431\u0435\u043b\u044b.\n<p>  \u042f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f indenation. \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e<br \/>  \u0434\u043b\u044f indentation! \u041f\u0440\u043e\u0431\u0435\u043b\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e:<br \/>  \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u0431\u043e\u043a. \u0421 \u044d\u0442\u0438\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430<br \/>  \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 \u0443 \u043b\u044e\u0434\u0435\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  \u041d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043b\u044e\u0434\u0438 (\u0438\u0437 \u0437\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u0432?) \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0438 \u0441\u0434\u0430\u043b\u0441\u044f \u0438 \u0441\u043c\u0438\u0440\u0438\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u0432\u0435\u0437\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0438\u0437 \u0437\u043e\u043b. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u043b\u044f indentation-\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u044e tab, \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f indent \u0442\u043e\u0436\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438 \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438.<\/li>\n<li><em>nojoinspaces<\/em> \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a (<em>J<\/em>). \u0423 \u043d\u0430\u0441 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0442\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c, \u0434\u0430 \u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/li>\n<li><em>scrolloff<\/em> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430\u0434\/\u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0432\u0435\u0440\u0445\u0443\/\u043d\u0438\u0437\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0422\u0430\u043a \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c.<\/li>\n<li><em>backspace<\/em> \u043e\u043f\u0446\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0433\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c backspace. \u041c\u043e\u0436\u0435\u0442 \u043b\u0438 \u043e\u043d \u00ab\u0443\u0434\u0430\u043b\u044f\u0442\u044c\u00bb \u043e\u0442\u0441\u0442\u0443\u043f \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 (\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0438\u0445). \u0423 \u043c\u0435\u043d\u044f \u0443\u0431\u0440\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>start<\/em>: \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u043d\u0435 \u043c\u043e\u0433\u0443 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434 \u043c\u0435\u0441\u0442\u043e\u043c \u0433\u0434\u0435 \u043d\u0430\u0447\u0430\u043b \u0432\u0441\u0442\u0430\u0432\u043a\u0443. \u041a \u0442\u0430\u043a\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0430 \u0441\u043e \u0432\u0440\u0435\u043c\u0451\u043d (n)vi.<\/li>\n<li><em>shortmess<\/em> \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u0449\u0435\u0439 \u043a\u0430\u043a \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Vim. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &quot;[noeol]&quot; \u0432\u043c\u0435\u0441\u0442\u043e &quot;[Incomplete last line]&quot;, \u00ab999L, 888C\u00bb \u0432\u043c\u0435\u0441\u0442\u043e \u00ab999 lines, 888 characters\u00bb, \u0438 \u0442.\u0434..<\/li>\n<li><em>highlight<\/em> \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0442\u0438\u043b\u044c \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u0441 \u0431\u043b\u0451\u043a\u043b\u043e\u0433\u043e \u0441\u0435\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u043e\u0432. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u0438 \u044f\u0440\u0447\u0435.<\/li>\n<li>\u0412 <em>cpoptions<\/em> \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u044e (change \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435) \u043a\u0443\u0441\u043e\u043a \u0442\u0435\u043a\u0441\u0442\u0430, \u0442\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c <em>$<\/em> \u0432 \u043a\u043e\u043d\u0446\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u0443\u0441\u043a\u0430. \u0413\u043e\u0440\u0430\u0437\u0434\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0447\u0442\u043e \u0437\u0430 \u0442\u0435\u043a\u0441\u0442 \u0442\u0430\u043c \u0431\u044b\u043b. \u042d\u0442\u043e \u0436\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 (n)vi.<\/li>\n<li><em>showcmd<\/em> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432 \u0443\u0433\u043b\u0443 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u0443\u044e, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043f\u0430\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 (\u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0432\u0438\u0434\u0438\u0442 \u0447\u0442\u043e \u0442\u044b \u0432\u0431\u0438\u0432\u0430\u0435\u0448\u044c). \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0447\u0451\u0442\u043a\u043e \u0434\u0430\u0451\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u043c \u0442\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0436\u0438\u043c\u0435: \u0432\u0432\u0451\u043b \u043b\u0438 \u0442\u044b \u0447\u0442\u043e \u0438\u043b\u0438 \u0435\u0449\u0451 \u043d\u0435\u0442.<\/li>\n<li><em>showmatch<\/em> \u043f\u0440\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0438 \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u044b\u0433\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u043a\u043e\u0431\u043a\u0443, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043c\u044b \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c.<\/li>\n<li>\u0418\u0437 <em>completeopt<\/em> \u043e\u043f\u0446\u0438\u0439 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f completion \u0443\u0431\u0440\u0430\u043d \u043f\u043e\u043a\u0430\u0437 preview \u043e\u043a\u043d\u0430. \u041e\u043d\u043e \u043c\u0435\u043d\u044f \u0441\u0431\u0438\u0432\u0430\u0435\u0442 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442.<\/li>\n<li><em>diffopt<\/em> \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0451\u043c\u043a\u0438\u0439, \u043d\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f diff.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set cursorline set cursorcolumn set colorcolumn=80 <\/pre>\n<ul>\n<li><em>cursorline<\/em>, <em>cursorcolumn<\/em> \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430. \u0414\u0435\u043b\u0430\u044f \u043d\u0435\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u0438\u0435. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0443\u0440\u0441\u043e\u0440.<\/li>\n<li><em>cursorcolumn<\/em> \u0440\u0438\u0441\u0443\u0435\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0435\u0440\u0442\u0443 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 80-\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0445\u043e\u0436\u0443 \u0437\u0430 \u043d\u0435\u0451 \u043f\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0435. 80 (\u00b1) \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0448\u0438\u0440\u0438\u043d\u0430 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0431\u0435\u0433\u0430\u0442\u044c \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u044d\u043a\u0440\u0430\u043d\u0430.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set listchars=trail:\u00b7,tab:&gt;\u2192,nbsp:% set list highlight ExtraWhitespace ctermbg=green ctermfg=blue match ExtraWhitespace \/\\s\\+$\/ <\/pre>\n<ul>\n<li><em>listchars<\/em>, <em>list<\/em> \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0448\u0442\u0430\u0442\u043d\u043e \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435, \u0442\u0438\u043f\u0430 \u043f\u0443\u0441\u0442\u0443\u044e\u0449\u0438\u0445 whitespace-\u043e\u0432 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u043d\u0435\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u0430 (\u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435) \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c. \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u043c\u0443\u0441\u043e\u0440.<\/li>\n<li><em>ExtraWhitespace<\/em> highlight \u044f\u0440\u043a\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 whitespace-\u044b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 99.99% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b, \u044f\u0432\u043b\u044f\u044f\u0441\u044c \u043c\u0443\u0441\u043e\u0440\u043e\u043c.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set relativenumber set numberwidth=3 <\/pre>\n<p>  <em>relativenumber<\/em> \u2014 \u0443\u043b\u044c\u0442\u0440\u0430\u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b Vim \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u043c\u0438\u043d\u0443\u044f \u043f\u0430\u043a\u0435\u0442\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u044e\u0449\u0430\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0448\u0442\u0443\u043a\u0430. \u0421\u0443\u0442\u044c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430: \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439. \u0421\u0442\u0440\u043e\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0448\u0435\/\u043d\u0438\u0436\u0435 \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u2014 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u043e\u043c\u0435\u0440 10. \u041c\u043e\u0436\u0435\u0442 \u043b\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 Vim? <em>2dd<\/em> \u2014 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0410 \u043f\u044f\u0442\u044c \u0438\u043b\u0438 \u0434\u0435\u0441\u044f\u0442\u044c? \u0423\u0436\u0435 \u043d\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0433\u043b\u0430\u0437\u043e\u043c \u043e\u043d \u0443\u0436\u0435 \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0443\u0442 \u0441\u0442\u0440\u043e\u043a \u0438 \u043a\u0430\u043a\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438. \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c \u00ab\u0432\u043e\u0442 \u043d\u0430 \u044d\u0442\u0443\u00bb \u0441\u0442\u0440\u043e\u043a\u0443 \u0433\u0434\u0435-\u0442\u043e \u043d\u0430 \u043f\u043e\u043b\u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u044b\u0448\u0435? \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>23k<\/em>.<\/p>\n<p>  \u042f \u0447\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0443 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0434\u0430\u043b\u0451\u043a\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435: \u043c\u043e\u0436\u043d\u043e \u0442\u0443\u0434\u0430 \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c, \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0443\u0442\u0441\u044f \u043d\u0430\u0437\u0430\u0434 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0451. \u042f \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u044e <em>:-27t.<\/em> \u0447\u0442\u043e\u0431\u044b 27-\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u044b\u0448\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0443\u044e. \u042d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u043e\u043a \u0447\u0430\u0449\u0435 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u0435\u0442 \u0438 \u043e\u043d\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 2-\u0445 \u0446\u0438\u0444\u0440.<\/p>\n<p>  <em>numberwidth<\/em> \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0448\u0438\u0440\u0438\u043d\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0441\u0442\u0440\u043e\u043a. \u0422\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f, \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0446\u0438\u0444\u0440 \u0442\u0430\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0448\u0438\u0440\u0438\u043d\u0430 \u0432 4 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0438\u0437\u043b\u0438\u0448\u043d\u044f.<\/p>\n<pre> ----- ~\/.vimrc ----- set ignorecase set smartcase set hlsearch set incsearch set gdefault map &lt;F4&gt; :nohlsearch&lt;CR&gt;:MarkClear&lt;CR&gt; <\/pre>\n<ul>\n<li><em>ignorecase<\/em> \u0438 <em>smartcase<\/em> \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u044b\u043b \u0432\u0432\u0435\u0434\u0451\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0430\u044f, \u0442\u043e \u043f\u043e\u0438\u0441\u043a \u0431\u0443\u0434\u0435\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430. \u041a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430: \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0435\u0448\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435, \u0438 \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u0448\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0430.<\/li>\n<li><em>hlsearch<\/em> \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u0410 <em>incsearch<\/em> \u0431\u0443\u0434\u0435\u0442 \u0438\u0445 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0440\u0435 \u0432\u0432\u043e\u0434\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0433\u0434\u0435 \u0438 \u0447\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u041e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435!<\/li>\n<li><em>gdefault<\/em> \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0444\u043b\u0430\u0433\u0430 <em>\/g<\/em> \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0445 \u0437\u0430\u043c\u0435\u043d\u044b <em>:s\/&#8230;\/&#8230;<\/em>. \u042d\u0442\u043e \u0444\u043b\u0430\u0433 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u0432\u043e \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e. \u0421 \u044d\u0442\u043e\u0439 \u043e\u043f\u0446\u0438\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u043b\u0430\u0433\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u043c\u0435\u043d\u0443, \u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u2014 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u0443\u044e. Must-have!<\/li>\n<li>F4 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432. \u041a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u0442\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u0448\u0430\u0442\u044c. \u041d\u0430\u0431\u0438\u0440\u0430\u0442\u044c <em>:nohl<\/em>? \u0414\u043e\u043b\u0433\u043e! \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043b\u0430\u0433\u0438\u043d <em>Mark<\/em> \u0434\u043b\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0441\u043b\u043e\u0432 \u2014 F4 \u0443\u0431\u0435\u0440\u0451\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443 \u0438 \u0434\u043b\u044f \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/li>\n<\/ul>\n<h2>tags<\/h2>\n<pre> ----- ~\/.vimrc ----- set wildmode=list:longest set tags=.tags\/**\/tags; set wildignore=**\/.git,**\/.tags <\/pre>\n<ul>\n<li><em>wildmode<\/em> \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0435\u0439 \u0438 \u0438\u043c\u0451\u043d \u0444\u0430\u0439\u043b\u043e\u0432. <em>longest<\/em> \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043e\u0431\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 shell-\u0435. \u0411\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e. <em>list<\/em> \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439.<\/li>\n<li><em>wildignore<\/em> \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432\u0441\u0451 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0442\u044d\u0433\u0430\u043c\u0438 (\u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0438\u0441\u043a\u0430) \u0438 git-\u0430.<\/li>\n<li><em>tags<\/em> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441 \u0442\u044d\u0433\u0430\u043c\u0438.<\/li>\n<\/ul>\n<p>  \u0422\u044d\u0433\u0438 \u2014 \u0430\u0440\u0445\u0438\u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f! \u0418 \u0443\u0434\u0440\u0443\u0447\u0430\u0435\u0442 \u043a\u0430\u043a \u043c\u0430\u043b\u043e \u043b\u044e\u0434\u0435\u0439 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e\u0431 \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438. Python-\u0438\u0441\u0442\u044b \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0438 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0442\u0430\u043a \u0436\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u044d\u0433\u0430\u043c\u0438. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u0442\u044d\u0433\u043e\u0432 \u0431\u0430\u043d\u0430\u043b\u0435\u043d: \u044d\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u0442\u044d\u0433\u0438, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0438\u0445 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0435\u0449\u0451 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0442\u0438\u043f\u0435 \u0442\u044d\u0433\u0430 (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043b\u0430\u0441\u0441, \u0438 \u0442.\u0434.) \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0442\u044d\u0433\u043e\u0432 (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0444\u0443\u043d\u043a\u0446\u0438\u0439) \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0437\u0434\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0442\u044d\u0433\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f. \u0412\u043e\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u044d\u0433\u043e\u0432 \u0434\u043b\u044f Go, \u0421\u0438 \u0438 Python \u043a\u043e\u0434\u0430:<\/p>\n<pre> :tselect Addr    # Prio Art Tag              Datei   1 F   m    Addr              \/home\/stargrave\/work\/nncp\/src\/call.go                struct:nncp.Call typeref:typename:*string                Addr           *string   2 F   m    Addr              \/home\/stargrave\/work\/nncp\/src\/cfg.go                struct:nncp.CallJSON typeref:typename:*string                Addr           *string `json:&quot;addr,omitempty&quot;`  :tselect ASN1_BIT_STRING_free    # Prio Art Tag                  Datei   1 F   f    ASN1_BIT_STRING_free  ...\/libressl-2.7.4\/crypto\/asn1\/tasn_typ.c                typeref:typename:void                ASN1_BIT_STRING_free(ASN1_BIT_STRING *a)   2 F   p    ASN1_BIT_STRING_free  ...\/libressl-2.7.4\/include\/openssl\/asn1.h                typeref:typename:void                void ASN1_BIT_STRING_free(ASN1_BIT_STRING *a);   3 F   p    ASN1_BIT_STRING_free  ...\/libressl\/include\/openssl\/asn1.h                typeref:typename:void                void ASN1_BIT_STRING_free(ASN1_BIT_STRING *a);  :tselect Certificate    # Prio Art Tag              Datei   1 F   c    Certificate       ...\/x509\/cert.py                class Certificate(Sequence):   2     v    certificate       ...\/xx\/__init__.py                class:XXEntryType                certificate = 'certificate' <\/pre>\n<p>  \u0414\u0430\u0436\u0435 nvi (\u043d\u0435 Vim!) \u0432 FreeBSD \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043f\u043e \u0442\u044d\u0433\u0430\u043c, \u043a\u0430\u043a \u0438 <em>less<\/em> \u043f\u0435\u0439\u0434\u0436\u0435\u0440. \u0421\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 (\u0434\u043b\u044f \u043c\u0435\u043d\u044f) \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0441\u044f\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u043b\u0435\u0442\u0443. <em>ctags<\/em> \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0442\u044d\u0433\u0430\u043c\u0438 \u0434\u0430\u0436\u0435 \u0438\u0434\u0451\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0432 FreeBSD. \u041d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/ctags.io\/\" rel=\"nofollow noopener noreferrer\">Universal Ctags<\/a> \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e Go \u044f\u0437\u044b\u043a, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f vi\/less-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 <em>tags<\/em> \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>  \u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0438 \u0442\u044d\u0433\u0438 \u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0438 \u043f\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0432 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b \u0441 \u0442\u044d\u0433\u0430\u043c\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0432 \u043d\u0451\u043c \u043e\u0442\u0440\u0430\u0437\u0438\u043b\u0438\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0418 \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 OpenSSL) \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043e\u0449\u0443\u0442\u0438\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0441\u0430\u043c\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0432\u0441\u0435.<\/p>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0442\u0430\u043a\u043e\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f <em>.tags<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre> ----- ~\/bin\/mktags ----- #!\/bin\/sh -e mkdir -p .tags touch .tags\/tags <\/pre>\n<p>  \u0412 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <em>tags<\/em> \u0444\u0430\u0439\u043b \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 <em>tags<\/em> \u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u041f\u0440\u043e\u0435\u043a\u0442 \u0441 LibreSSL \u0438 libtasn1 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e <em>.tags<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e:<\/p>\n<pre> .tags\/tags .tags\/libressl\/tags =&gt; \/path\/to\/libressl\/.tags\/tags .tags\/tasn1\/tags    =&gt; \/path\/to\/tasn1\/.tags\/tags <\/pre>\n<p>  <em>.tags\/tags<\/em> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0442\u044d\u0433\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435 \u0432\u044b\u0448\u043b\u043e (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0431\u0430\u0433\u0430 \u043c\u043e\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Vim) \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b Vim \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u0442\u044d\u0433\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>  \u041d\u0443 \u0438 \u043b\u0430\u0434\u043d\u043e! <em>tags<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432 <em>.vimrc<\/em> \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044d\u0442\u0438\u043c use-case. \u0414\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0441 \u0442\u044d\u0433\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e vimscript <em>:Ctags<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u044e \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043d\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <em>.tags\/tags<\/em> \u0444\u0430\u0439\u043b\u0430, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 <em>uctags<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre> ----- ~\/.vim\/plugin\/ctags.vim ----- function! s:ctags(lang)     let dst = tagfiles()     if len(dst) == 0         echohl WarningMsg | echomsg &quot;No tagfiles&quot; | echohl None         return     endif     let dst = sort(dst, {a, b -&gt; len(a) &gt; len(b) ? 1 : len(a) == len(b) ? 0 : -1})[0]     let src = &quot;\/&quot; . join(split(dst, &quot;\/&quot;)[:-3], &quot;\/&quot;)     if dst[0] != &quot;\/&quot;         let dst = getcwd() . &quot;\/.tags\/tags&quot;         let src = getcwd()     endif     let cmdline = [         \\&quot;uctags&quot;,         \\&quot;--languages=&quot; . a:lang,         \\&quot;--python-kinds=-i&quot;,         \\&quot;--c++-kinds=+p&quot;,         \\&quot;--recurse&quot;,         \\&quot;-f&quot;, dst, src,     \\]     execute &quot;!&quot; . join(cmdline, &quot; &quot;)     redraw! endfunction  command! -nargs=1 Ctags silent call s:ctags(&lt;f-args&gt;) <\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u0435\u043b\u0430\u044e <em>mktags<\/em>, \u0430 \u0434\u0430\u043b\u0435\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 Vim, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>:Ctags C,C++<\/em>. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u043d\u044f, \u0440\u0443\u043a\u0430\u043c\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e \u0447\u0435\u0440\u0435\u0437 <em>mkdir<\/em> \u0438 <em>ln -s<\/em>.<\/p>\n<h2>.vimrc<\/h2>\n<pre> ----- ~\/.vimrc ----- set exrc set secure <\/pre>\n<p>  <em>exrc<\/em> \u043e\u043f\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 Vim-\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c <em>.vimrc<\/em>\/<em>.exrc<\/em> \u0444\u0430\u0439\u043b \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043a\u043e\u0440\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0442\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e project\/language \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. <em>secure<\/em> \u0441\u0442\u0440\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043d\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u043f\u043e\u0436\u0430\u0440\u043d\u044b\u0439 (\u043c\u0430\u043b\u043e \u043b\u0438 \u043a\u0442\u043e \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 git \u043a\u043e\u043c\u043c\u0438\u0442\u0435). \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0432 \u044d\u0442\u043e\u043c <em>.exrc<\/em> \u0444\u0430\u0439\u043b\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u0434\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0442\u044d\u0433\u043e\u0432 \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u043d\u043e \u0440\u0435\u0448\u0438\u043b \u0447\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0424\u0421 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435.<\/p>\n<pre> ----- ~\/.vimrc ----- set foldmethod=indent set foldnestmax=9 set foldenable set foldcolumn=1 set foldlevel=0  autocmd BufWinEnter * normal zR highlight FoldColumn ctermfg=cyan ctermbg=black highlight CursorColumn ctermfg=cyan ctermbg=red <\/pre>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e folding-\u0430 \u043f\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u043c, \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u0441\u043b\u0435\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f fold-\u0430. \u041f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043e\u043a\u043d\u0430, \u0432\u0441\u0435 fold-\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044b (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f <em>zR<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430). Folding (\u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u0432 \u043e\u0434\u043d\u0443) \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c, \u043a\u043e\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u0442\u044c \u043a\u0443\u0447\u0443 \u043a\u043e\u0434\u0430, \u043d\u043e \u0443\u0431\u0438\u0440\u0430\u044f \u0442\u0435\u043b\u0430 \u0446\u0438\u043a\u043b\u043e\u0432 \u0438\u043b\u0438 \u0446\u0435\u043b\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0427\u0430\u0441\u0442\u043e \u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u044e \u0432\u0441\u0435 fold-\u044b \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439\/\u043a\u043b\u0430\u0441\u0441\u043e\u0432.<\/p>\n<pre> ----- ~\/.vimrc ----- set laststatus=2 set statusline=%F\\ %m%r%h%w%k set statusline+=%{len(getqflist())?'[Q]':''} set statusline+=%{len(getloclist(0))?'[L]':''} set statusline+=\\ %= set statusline+=%n\\ %#Question#%Y set statusline+=%#DiffChange#%{strlen(&amp;fenc)?&amp;fenc:&amp;enc}%{&amp;bomb?'-bom':''}\\ %{&amp;ff} set statusline+=%#DiffAdd#%l\/%L set statusline+=%#Todo#%c%V:0x%B set statusline+=%#Comment#%o set statusline+=%#Error#%{LintStatus()} set statusline+=%*\\ %P  function! LintStatus() &quot; it is overrided in ftplugins     return &quot;&quot; endfunction <\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre> options.txt [-][RO][Hilfe] ^^^^2 HELP utf-8 unix 6370\/8966 7-49:0x2A 272384 71%                                      ^          ^         ^         ^      ^ <\/pre>\n<p>  \u0422\u0443\u0442 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0435\u0441\u0442\u0430\u0445 \u0441 &quot;^&quot; \u0443\u043a\u0430\u0437\u0430\u043b \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u00abHELP\u00bb \u0438 \u00abutf&#8230;\u00bb \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0441\u043b\u0438\u0442\u043d\u043e. \u0421\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0431\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u043c\u043d\u043e\u0433\u043e split-\u043e\u0432.<\/p>\n<ul>\n<li>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u0432\u0435\u0440\u0435\u043d\u0438\u0446\u0430 \u0438\u0437 \u0444\u043b\u0430\u0433\u043e\u0432: \u0435\u0441\u0442\u044c \u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 (<em>[+]<\/em>\/<em>[-]<\/em>), \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0438 \u043e\u043d \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f (<em>[RO]<\/em>), \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u043d help-\u0431\u0443\u0444\u0435\u0440\u043e\u043c (<em>[help]<\/em>, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f Vim \u043f\u0435\u0440\u0435\u0432\u0451\u043b \u043d\u0430 \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0439), \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u043d preview-\u043e\u043a\u043d\u043e\u043c (<em>[preview]<\/em>), \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 quickfix \u0438\u043b\u0438 location \u0441\u043f\u0438\u0441\u043a\u0438 (<em>[Q]<\/em>, <em>[L]<\/em>).<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e &quot;^&quot;-\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e. \u0418\u0433\u0440\u0430\u043b\u0441\u044f \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043d\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u044b \u0438 \u043d\u0435 \u0441\u0431\u0438\u0432\u0430\u043b\u0438 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435. \u0412\u0435\u0440\u0435\u043d\u0438\u0446\u0430 \u0438\u0437 &quot;^&quot; \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0432 \u043a\u0430\u043a\u043e\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043a\u043d\u0435 \u043d\u0430\u0445\u043e\u0436\u0443\u0441\u044c.<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u0435\u043d \u0435\u0433\u043e \u043d\u043e\u043c\u0435\u0440 \u0434\u043b\u044f <em>:bd X<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430 (filetype).<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u0435\u0433\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 BOM (<em>:set bomb!<\/em>).<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u00ab\u0444\u043e\u0440\u043c\u0430\u0442\u00bb \u0444\u0430\u0439\u043b\u0430, \u0430 \u0435\u0441\u043b\u0438 \u0442\u043e\u0447\u043d\u0435\u0435, \u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a: CRLF (<em>dos<\/em>), LF (<em>unix<\/em>) \u0438\u043b\u0438 CR (<em>mac<\/em>). \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0437\u0430 \u0444\u0430\u0439\u043b \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439. \u041a\u0430\u043a \u0438 \u0432\u0438\u0434\u0435\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043e\u0442 UTF-8.<\/li>\n<li>\u041d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0440\u043e\u043a.<\/li>\n<li>\u0411\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u0430\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0447\u043a\u0430 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>91-51<\/em>, \u043e\u0437\u043d\u0430\u0447\u0430\u044f, \u0447\u0442\u043e \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043d\u0435\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 91-\u043e\u043c \u0431\u0430\u0439\u0442\u0435, \u043d\u043e 51-\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041a\u0438\u0440\u0438\u043b\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 UTF-8 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u0431\u0430\u0439\u0442\u0430, \u043d\u043e \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b \u044d\u043a\u0440\u0430\u043d\u0430. \u0422\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c 8 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u043e \u043e\u0434\u0438\u043d \u0431\u0430\u0439\u0442. \u041e\u0431\u0430 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b.<\/li>\n<li>Unicode \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c. \u041e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 Unicode \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 ASCII.<\/li>\n<li>\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0430\u044f \u0431\u0430\u0439\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0443\u0440\u0441\u043e\u0440.<\/li>\n<li>\u042f\u0440\u043a\u043e \u043a\u0440\u0430\u0441\u043d\u043e\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>LintStatus()<\/em>.<\/li>\n<li>\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0436 \u0442\u043e\u0433\u043e \u0433\u0434\u0435 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f Python \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"http:\/\/www.git.stargrave.org\/?p=dotfiles.git;a=blob;f=vim\/.vim\/ftplugin\/python\/pylint.vim\" rel=\"nofollow noopener noreferrer\">\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439<\/a> \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 linter-\u0430. \u0415\u0433\u043e \u043a\u043e\u0434 \u0442\u0443\u0442 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443, \u0438\u0431\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u043a\u0440\u0430\u043d\u0430. \u0421\u0443\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0441\u0442\u0430: \u0432 \u0444\u043e\u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c <em>pylint<\/em>\/<em>pyflake<\/em>, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0432\u044b\u0432\u043e\u0434, \u043e\u0442\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 quickfix \u0441\u043f\u0438\u0441\u043a\u0430, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 quickfix \u043e\u043a\u043d\u043e. \u041f\u043e\u043a\u0430 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u043e <em>LintStatus()<\/em> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 <em>LN<\/em>, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044f \u0447\u0442\u043e linter \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u0412 Go \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0435\u0448\u043d\u044e\u044e <em>gogetdoc<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 <em>LintStatus()<\/em> \u043d\u0430\u043f\u0438\u0448\u0435\u0442 <em>GD<\/em>. \u0421\u0442\u0440\u043e\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430.<\/p>\n<pre> ----- ~\/.vimrc ----- autocmd BufWinLeave ?* silent! if &amp;ft !=# &quot;gitcommit&quot; | mkview | endif autocmd BufWinEnter ?* silent loadview <\/pre>\n<p>  \u042d\u0442\u0438 hook-\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 view-\u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u0438\u0445 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 (<em>?<\/em>). \u0412\u043e\u043e\u0431\u0449\u0435 \u0432 Vim \u0435\u0441\u0442\u044c <em>.viminfo<\/em>, \u043d\u043e view \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u00ab\u0441\u0435\u0441\u0441\u0438\u0438\u00bb, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<p>  \u041f\u043b\u044e\u0441 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u043e\u0439 Vim \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0449\u0443 <em>vim<\/em>, \u0442\u043e \u0443\u0432\u0438\u0436\u0443 \u043f\u0443\u0441\u0442\u043e\u0439 \u044d\u043a\u0440\u0430\u043d, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u0431\u0443\u0444\u0435\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u041f\u043e \u0441\u0443\u0442\u0438 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043e\u043a\u043e\u043d \u0441\u043c\u043e\u0442\u0440\u044f\u0449\u0438\u0445 \u043d\u0430 \u044d\u0442\u0438 \u0431\u0443\u0444\u0435\u0440\u044b. \u041d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0435\u0441\u0441\u0438\u0439 (<em>:mksession<\/em>, <em>vi -S Session.vim<\/em>).<\/p>\n<pre> ----- ~\/.vimrc ----- nnoremap &lt;C-b&gt; &lt;C-W&gt; noremap &lt;C-j&gt; &lt;C-w&gt;j noremap &lt;C-k&gt; &lt;C-w&gt;k noremap &lt;C-l&gt; &lt;C-w&gt;l noremap &lt;C-h&gt; &lt;C-w&gt;h nmap &lt;leader&gt;- &lt;C-w&gt;\\|&lt;C-w&gt;_ nmap &lt;leader&gt;= &lt;C-w&gt;= nmap &lt;Del&gt; :close&lt;CR&gt; autocmd VimResized * wincmd = <\/pre>\n<ul>\n<li>\u042f \u0430\u043b\u043b\u0435\u0440\u0433\u0438\u0447\u0435\u043d \u043a Ctrl-\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f\u043c \u043a\u043b\u0430\u0432\u0438\u0448 \u0434\u043b\u044f \u0447\u0430\u0441\u0442\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u042d\u0442\u043e \u0432\u0441\u0451 \u0434\u043b\u044f Emacs \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435. \u0421 \u0440\u0435\u0434\u043a\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u0441\u043b\u043e\u0432\u0430 \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c (<em>C-R+C-W<\/em>) \u0435\u0449\u0451 \u0433\u043e\u0442\u043e\u0432 \u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f, \u043d\u043e \u043d\u0435 \u0447\u0430\u0441\u0442\u044b\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043d\u0430\u043c\u0438. Ctrl+[hjkl] \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043d\u0430\u043c\u0438.<\/li>\n<li>\u0422\u0430\u043a \u043a\u0430\u043a Ctrl-B \u043c\u043e\u0433\u0443 \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Menu \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u0438 \u0432 Vim \u043e\u043d\u043e \u043d\u0438 \u0441 \u0447\u0435\u043c \u043d\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u0435\u0442, \u0442\u043e Ctrl-B (\u043e\u0434\u043d\u043e!) \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 <em>C-W<\/em>. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e Ctrl-B \u0430\u043b\u0438\u0430\u0441 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043d\u0430\u043c\u0438 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0434\u0432\u0443\u043c\u044f \u043d\u0430\u0436\u0430\u0442\u0438\u044f\u043c\u0438? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Ctrl+[hjkl], Ctrl \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0436\u0430\u0442\u044b\u043c.<\/li>\n<li><em>\\-<\/em> (\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0435\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u00ableader\u00bb-\u043a\u043b\u0430\u0432\u0438\u0448\u0430 + &quot;-&quot;, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f leader \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u0441\u043b\u044d\u0448\u043e\u043c (\u043a\u0430\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e), \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0443 \u0443\u0436 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0443) \u0434\u0435\u043b\u0430\u0435\u0442 \u00ab\u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u00bb \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043e\u043a\u043d\u0430: \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0441\u0451 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e. \u041e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043a\u043e\u043d \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u041a\u0430\u043a \u0431\u044b \u0430\u043d\u0430\u043b\u043e\u0433 Prefix+Z \u0438\u0437 Tmux. \u0427\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u044e\u0442\u044f\u0441\u044c \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u043c \u043e\u043a\u043d\u0435. \u0410 <em>\\=<\/em> \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432\u0441\u0435\u0445 \u043e\u043a\u043e\u043d \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0415\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f Vim \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043e\u043a\u043e\u043d \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u2014 \u043d\u043e \u043b\u0438\u0431\u043e \u0438\u043c\u0435\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0430\u043b\u0438\u0430\u0441\u0430, \u043b\u0438\u0431\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0441\u0442\u0440\u043e\u043a? \u041c\u0435\u043d\u044f \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0442 \u0438 \u043e\u043a\u043d\u0430 \u0440\u0430\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438 \u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439\u0441\u044f statusline.<\/li>\n<li>\u041a\u043b\u0430\u0432\u0438\u0448\u0430 Del \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u043a\u043d\u043e. \u0421\u0432\u0435\u0440\u0445\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0448\u0442\u0443\u043a\u0430. \u041d\u0443 \u043d\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0436\u0435 <em>:bd<\/em>!<\/li>\n<li>\u0418\u0437-\u0437\u0430 tiling-\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 <em>dwm<\/em>, \u043b\u044e\u0431\u043e\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u044b X11 \u043e\u043a\u043e\u043d \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0447\u0430\u0441\u0442\u043e \u00ab\u043a\u043e\u043b\u0431\u0430\u0441\u0438\u0442\u044c\u00bb, \u0430 \u0432 Vim \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0431\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043e\u043a\u043e\u043d. <em>VimResized<\/em> \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set titleold = &quot;&quot; set title autocmd BufEnter * let &amp;titlestring = expand(&quot;%:t&quot;) <\/pre>\n<p>  \u042d\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 Vim \u043f\u043e\u0441\u044b\u043b\u0430\u0442\u044c escape \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u043e\u043a\u043e\u043d (\u0432 <em>tmux<\/em> \u0438 X11). \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u0443\u0442\u0438 (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430).<\/p>\n<pre> ----- ~\/.vimrc ----- set comments-=mb:* set formatlistpat=^\\\\s*\\\\*\\ \\\\s* set formatoptions+=onj <\/pre>\n<p>  \u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0437\u0430 \u0447\u0442\u043e \u0442\u0430\u043a \u043b\u044e\u0431\u043b\u044e Vim. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0423\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0435\u0433\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u2014 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/p>\n<ul>\n<li>\u0412 <em>formatoptions<\/em> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f: \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f (\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432) \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 <em>o<\/em>\/<em>O<\/em>; \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432; \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a (<em>J<\/em>) (Vim \u043d\u0430\u0447\u043d\u0451\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u0432 \u043d\u0451\u043c \u043d\u0435\u0442 \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432).<\/li>\n<li>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 (\u0432 \u0421\u0438 \u044f\u0437\u044b\u043a\u0430\u0445 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f). \u041d\u043e \u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>\/*\u2026 *\/<\/em> \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441\u043e\u0432\u0441\u0435\u043c, \u0430 \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0438 \u0443 \u043c\u0435\u043d\u044f \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0445\u043e\u0447\u0443 \u0447\u0442\u043e\u0431\u044b \u043a \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0430\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u00bb \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438. \u0418\u0437 <em>comments<\/em> \u0443\u0431\u0438\u0440\u0430\u044e \u0437\u043d\u0430\u043d\u0438\u0435 \u043e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0430\u0445 \u043a\u0430\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432. \u0410 \u0432 <em>formatlistpat<\/em> \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0448\u0430\u0431\u043b\u043e\u043d \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u0435\u043a \u043a\u0430\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set spelllang=ru,en_gb highlight SpellBad cterm=inverse ctermfg=red ctermbg=black highlight SpellLocal term=reverse ctermfg=red ctermbg=cyan <\/pre>\n<p>  \u0422\u0443\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0446\u0432\u0435\u0442\u043e\u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0438\u0437-\u0437\u0430 \u043c\u043e\u0438\u0445 \u043f\u0440\u0430\u0432\u043e\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f inverse \u0446\u0432\u0435\u0442\u043e\u0432 \u0438 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u044b.<\/p>\n<p>  \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0440\u0438\u0442\u0430\u043d\u0441\u043a\u0438\u0435 \u0441\u043b\u043e\u0432\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 <em>en_gb<\/em> \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0410 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (<em>~\/.vim\/spell\/ru.utf-8.spl<\/em>) \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u043a\u0432\u044b \u00ab\u0451\u00bb, \u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u0431\u0435\u0437 \u043d\u0435\u0451. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>rus-myspell-yo-0.99f7<\/em> \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044f Vim.<\/p>\n<p>  \u0420\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438:<\/p>\n<pre> ----- ~\/.vimrc ----- map q: : command! W w nmap &lt;F1&gt; :help!&lt;CR&gt; imap &lt;F1&gt; &lt;C-O&gt;:help!&lt;CR&gt; iabbrev \u0438\u0442\u0434 \u0438 \u0442.\u0434. iabbrev \u0438\u0442\u043f \u0438 \u0442.\u043f. <\/pre>\n<ul>\n<li><em>q:<\/em> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u044e\u0441\u044c, \u043d\u0430\u0431\u0438\u0440\u0430\u044f <em>:q<\/em>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043e\u043a\u043d\u0430 \u0438 \u0441\u043d\u043e\u0432\u0430 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c <em>:q<\/em>. \u041a\u043e\u0433\u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043c\u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u043d\u0430\u0436\u0430\u0442\u044c Ctrl-F.<\/li>\n<li>\u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>:w<\/em>, \u0433\u0434\u0435 \u043f\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u043c\u043e\u0433\u0443 \u043d\u0435 \u0443\u0441\u043f\u0435\u0442\u044c \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442\u044c Shift \u043f\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0435 \u00abw\u00bb \u2014 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0447\u0430\u0441\u0442\u0430\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430.<\/li>\n<li>\u0411\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0436\u0438\u043c\u0430\u044e F1, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0437-\u0437\u0430 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0435\u044e \u043f\u043e\u0447\u0442\u044b \u0432 <em>zsh<\/em>. \u0418 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0449\u044c. Just for fun \u0432\u044b\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u0441\u0445\u0430\u043b\u043a\u0443 \u0438\u0437 \u00ab\u0410\u0432\u0442\u043e\u0441\u0442\u043e\u043f\u043e\u043c \u043f\u043e \u0433\u0430\u043b\u0430\u043a\u0442\u0438\u043a\u0435\u00bb, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043c\u043d\u0435 \u00abNur keine Panik!\u00bb. \u0417\u0430\u0442\u043e \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043d\u0430\u0437\u043e\u0439\u043b\u0438\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u0438.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- set keywordprg= let g:sh_no_error = 1 set termwinkey=&lt;C-B&gt; <\/pre>\n<ul>\n<li>\u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 <em>K<\/em>, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f man \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430 \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c. \u0411\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0447\u0430\u044f\u043d\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044e \u044d\u0442\u0443 \u043a\u043b\u0430\u0432\u0438\u0448\u0443, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u0433\u043e\u0432\u043e\u0440 \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0433\u043e man \u043d\u0435\u0442. \u0414\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043d\u043e \u043d\u0435 \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (\u043f\u0443\u0441\u0442\u043e\u0439 <em>keywordprg<\/em>).<\/li>\n<li><em>sh_no_error<\/em> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f <em>syntax\/sh.vim<\/em>) shell-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0443 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u043d\u043e <em>sh.vim<\/em> \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u044f \u0431\u0435\u0437\u0443\u043c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/li>\n<li><em>termwinkey<\/em> \u0437\u0430\u0434\u0430\u0451\u0442 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043a\u043d\u0430\u043c\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 (\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0432 Vim\u2026 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u043e\u0440\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u043e\u0432 Tmux, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u0439 \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 X11). \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Ctrl-B, \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Menu \u043a\u043b\u0430\u0432\u0438\u0448\u0438. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u044b \u0441\u043e\u0432\u0441\u0435\u043c.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- nmap &lt;space&gt; f&lt;space&gt; nmap _ f_l <\/pre>\n<p>  \u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043b\u044e\u0434\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u00ab\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u00bb \u0441\u043b\u043e\u0432\u0430\u043c (<em>W<\/em>)? \u041e\u0447\u0435\u043d\u044c! \u041d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0441\u044f \u043d\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0441\u043b\u043e\u0432\u0435, \u0430 \u043d\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c. \u0410 \u0448\u0442\u0430\u0442\u043d\u043e \u043d\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0423 \u043c\u0435\u043d\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c. \u041f\u043b\u044e\u0441 \u00ab\u0431\u043e\u043b\u044c\u0448\u0438\u0435\u00bb \u043f\u0440\u044b\u0436\u043a\u0438 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 (<em>W<\/em>\/<em>E<\/em>) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c Shift-\u0430, \u0447\u0442\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435. \u041e\u0434\u0438\u043d \u0438\u0437 \u0442\u0435\u0445 \u0441\u0430\u043c\u044b\u0445 \u0442\u0440\u044e\u043a\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u044e\u0431\u043b\u044e: \u043f\u0440\u043e\u0441\u0442\u044b \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b. \u0410 &quot;_&quot; \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u043d\u043e \u0432 Python \u043a\u043e\u0434\u0435 \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u044b\u0433\u0430\u0442\u044c \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<pre> ----- ~\/.vimrc ----- nmap &lt;leader&gt;] &quot;*yiw nmap &lt;leader&gt;p &quot;_diwP <\/pre>\n<p>  <em>\\]<\/em> \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0432 X11 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043b\u043e\u0432\u043e \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c. <em>\\p<\/em> \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043b\u043e\u0432\u043e \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c, \u043d\u0435 \u0437\u0430\u0433\u0440\u044f\u0437\u043d\u044f\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0423\u0434\u0430\u043b\u0438\u043b\u0438\/\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u0438 \u0438\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0435, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0442 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0438 \u0441\u043b\u0435\u0434\u0430.<\/p>\n<pre> ----- ~\/.vimrc ----- nnoremap &lt;leader&gt;d &quot;_d vnoremap &lt;leader&gt;d &quot;_d <\/pre>\n<p>  <em>\\d<\/em> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432 &quot;\/dev\/null&quot; \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u041f\u043e\u0441\u043b\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c motion. \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e.<\/p>\n<pre> ----- ~\/.vimrc ----- map Q gq cmap ][ '[,'] imap &lt;C-b&gt; &lt;C-x&gt;&lt;C-o&gt; nmap &lt;Tab&gt; :buffers&lt;CR&gt;:b&lt;Space&gt; nmap &lt;silent&gt; &lt;Home&gt; :registers&lt;CR&gt; nmap &lt;leader&gt;' yiwciw&quot;&lt;C-r&gt;&quot;&quot;&lt;ESC&gt; nmap &lt;leader&gt;h1 yypVr=o nmap &lt;leader&gt;sc 024i-&lt;ESC&gt;a &gt;8 &lt;ESC&gt;24a-&lt;ESC&gt; nmap &lt;leader&gt;&lt;C-]&gt; :vertical wincmd ]&lt;CR&gt; nnoremap &lt;C-P&gt; &lt;C-I&gt; <\/pre>\n<ul>\n<li><em>Q<\/em> \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c <em>qg<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0430 <em>gqap<\/em>.<\/li>\n<li><em>][<\/em> \u043d\u0430\u0431\u043e\u0440 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043e\u0442 \u043c\u0435\u0442\u043a\u0438 <em>[<\/em> \u0434\u043e \u043c\u0435\u0442\u043a\u0438 <em>]<\/em> \u2014 \u043e\u043d\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u0432\u044f\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430. \u0410\u0440\u0445\u0438\u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043a\u0443\u0441\u043a\u0430 \u0435\u043c\u0443 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c indentation: <em>][&lt;<\/em> \u0438 Enter!<\/li>\n<li>Ctrl-B \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u0432\u043e\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 LSP completion \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u0412 \u0447\u0443\u0436\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Shift+Space \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e, \u043d\u043e Ctrl-B \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439.<\/li>\n<li>\u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0442\u0438\u043f\u0430 <em>bufexplorer<\/em>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 Tab \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u0441\u043f\u0438\u0441\u043a\u0430 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0438 \u0438\u0445 \u0432\u044b\u0431\u043e\u0440\u0430. \u041f\u043e\u0437\u0436\u0435 \u0434\u043e\u0448\u0451\u043b \u0434\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0433\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f: \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0444\u0435\u0440\u043e\u0432 \u0438 \u043d\u0430\u0431\u0440\u0430\u0442\u044c <em>:b<\/em> \u0441 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\/\u043d\u043e\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043d\u0430\u0436\u0430\u0442\u044c Enter. \u041f\u0440\u0438\u0447\u0451\u043c Vim \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441\u0442\u044c \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438.<\/li>\n<li>Home \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432. \u0427\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435 \u0438\u0445 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u043e \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u043c (\u0432\u0441\u0442\u0430\u0432\u043a\u0435, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0430\u043a\u0440\u043e\u0441\u0430) \u0447\u0442\u043e \u0442\u0430\u043c \u0437\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/li>\n<li><em>\\&#8217;<\/em> \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 Python. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u043c\u043b\u044f\u0435\u0442 \u0441\u043b\u043e\u0432\u043e \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438. \u041f\u0440\u0435\u0436\u0434\u0435 \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b <em>surround<\/em> \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u043e \u043d\u0451\u043c \u043d\u0438\u0436\u0435), \u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0451 \u0436\u0435 \u043b\u0443\u0447\u0448\u0435. \u0410 \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u043c\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e \u0432 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0435? \u0418\u043b\u0438 \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438? \u041e\u0431\u0440\u0430\u043c\u043b\u044f\u044e \u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0435, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <em>surround<\/em> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043c\u0435\u043d\u044b \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u043d\u0435. \u0417\u0432\u0443\u0447\u0438\u0442 \u0433\u0435\u043c\u043e\u0440\u0440\u043e\u0439\u043d\u043e, \u043d\u043e \u043d\u0430 \u0434\u0435\u043b\u0435 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e: <em>\\&#8217;cs&quot;&#8217;<\/em>.<\/li>\n<li><em>\\h1<\/em> \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u044e \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 &quot;=&quot; \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432 reST \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 (\u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u00abh1\u00bb, \u043a\u0430\u043a header \u0432 HTML). \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043a\u0430\u043a \u043e\u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442: \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0438\u0436\u0435 (\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u0438\u043d\u044b), \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442, \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0443 (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c) \u043d\u0430 &quot;=&quot;. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0434\u043b\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430, \u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 &quot;=&quot; \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <em>\\h1:s\/=\/-<\/em>. \u0412\u0438\u0436\u0443 \u043a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u043d\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u2014 \u044f\u0432\u043d\u043e \u043b\u044e\u0434\u044f\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442.<\/li>\n<li><em>\\sc<\/em> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 &quot;&#8212; &gt;8 &#8212;&quot; \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c. \u0421\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043d\u0430 \u043d\u043e\u0436\u043d\u0438\u0446\u044b \u0443\u0432\u0438\u0434\u0435\u043b \u0432 git. \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0432 \u043f\u0438\u0441\u044c\u043c\u0430\u0445 \u0441\u0442\u0430\u0432\u043b\u044e \u044d\u0442\u043e\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c.<\/li>\n<li><em>\\+Ctrl+]<\/em> \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0442\u044d\u0433 (\u0441\u043b\u043e\u0432\u043e \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c) \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435. \u0410\u043d\u0430\u043b\u043e\u0433 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e Ctrl-W+Ctrl-], \u043d\u043e \u043d\u0435 \u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u043e\u043c \u043e\u043a\u043d\u0435.<\/li>\n<li>\u041f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, Tab \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 Ctrl-I. Tab \u043f\u0435\u0440\u0435\u0431\u0438\u043b \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u0431\u0443\u0444\u0435\u0440\u0430. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 Ctrl-I \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u043e jump list-\u0443 \u00ab\u0432\u043f\u0435\u0440\u0451\u0434\u00bb (Ctrl-O \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u00ab\u043d\u0430\u0437\u0430\u0434\u00bb). \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e jump list-\u0443 \u0432 \u043b\u044e\u0431\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Ctrl-P, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 Ctrl-O, \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e \u0435\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044f.<\/li>\n<\/ul>\n<pre> ----- ~\/.vimrc ----- command! E Explore command! Ch cd %:p:h command! -bar -nargs=? -bang Tmp :silent vnew&lt;bang&gt;|     setlocal buftype=nofile bufhidden=hide noswapfile buflisted     filetype=&lt;args&gt; modifiable <\/pre>\n<ul>\n<li>\u0412 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Vim <em>:E<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0431\u0440\u043e\u0443\u0437\u0435\u0440 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0412 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c <em>:Ex<\/em>. \u0410 \u044f \u043f\u0440\u0438\u0432\u044b\u043a \u043a \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.<\/li>\n<li><em>:Ch<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e Vim \u043d\u0430 \u0442\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0444\u0430\u0439\u043b.<\/li>\n<li><em>:Tmp XXX<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0411\u0435\u0437 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0433\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e \u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. <em>XXX<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0438\u043f \u0444\u0430\u0439\u043b\u0430 \u0432 \u043d\u0451\u043c, \u0447\u0442\u043e\u0431\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430.<\/li>\n<\/ul>\n<h2>~\/.vim\/pack<\/h2>\n<p>  \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043e \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b. \u0412 Vim8 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c packages: \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u00abchroot\u00bb-\u043e\u0432 Vim \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439. \u041f\u0440\u0438\u0447\u0451\u043c \u043a\u0430\u043a \u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c, \u0442\u0430\u043a \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u044b Tim Pope \u0443 \u043c\u0435\u043d\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0442\u0430\u043a:<\/p>\n<pre> ~\/.vim\/pack\/tpope\/start\/fugitive          # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0438\u0437 .zip ~\/.vim\/pack\/tpope\/start\/vim-abolist\/.git  # git \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u043c\u043e\u0442\u0440\u044f\u0449\u0438\u0439 \u043d\u0430 github [...] <\/pre>\n<p>  \u0410 \u043c\u043e\u0439 \u0438\u0437\u0440\u0435\u0434\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b) \u043f\u043b\u0430\u0433\u0438\u043d Codecomm \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <em>:packadd codecomm<\/em>:<\/p>\n<pre> ~\/.vim\/pack\/codecomm\/opt\/codecomm <\/pre>\n<p>  \u0421\u043c\u044b\u0441\u043b\u0430 \u0432 \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u0445 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e. \u0424\u0438\u0447\u0438 \u0442\u0438\u043f\u0430 \u00ab\u043f\u0440\u043e\u043f\u0438\u0448\u0438 github\/foo\/bar \u0441\u0442\u0440\u043e\u0447\u043a\u0443, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0451 \u0441\u043a\u0430\u0447\u0430\u044e \u0438 \u0437\u0430\u043f\u0443\u0449\u0443\u00bb \u0443\u0436\u0430\u0441\u043d\u0443\u0442 \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u0442\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044f \u0442\u0430\u043a \u0441\u0447\u0438\u0442\u0430\u044e: \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b Tim Pope \u0442\u043e\u0436\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043a\u0438\u0434\u043a\u0443 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0431\u044b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0434\u043e Vim8, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0441 \u0447\u0438\u0441\u0442\u043e\u0439 \u0441\u043e\u0432\u0435\u0441\u0442\u044c\u044e \u043c\u043e\u0433\u0443\u0442 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u00ab\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435\u00bb \u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b.<\/p>\n<p>  Vim \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441\u043b\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0433\u043e\u0434\u0430\u043c\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c. \u041f\u043e\u0442\u043e\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 NeoVim. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u041c\u0443\u0443\u043b\u0435\u043d\u0430\u0430\u0440 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u0438 \u043a\u0430\u043d\u0430\u043b\u044b, \u0438 \u043f\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0422\u0430\u043a \u0431\u044b\u043b\u043e \u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 nvi, \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u0432\u0448\u0438\u0439 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c Vim. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0432 Vim \u0432\u0441\u0451 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u043d\u043d\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0442\u043e\u0433\u0435.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0431\u0435\u0440-\u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0439\u0448\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. \u0412\u0441\u0451 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435 Tim Pope:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/tpope\/vim-surround\" rel=\"nofollow noopener noreferrer\">surround<\/a>. \u041f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0431\u044b \u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u00ab\u043e\u0431\u0440\u0430\u043c\u043b\u0435\u043d\u0438\u044f\u00bb \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430. \u0417\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0434\u043d\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0438\/\u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438 \u0432\u0441\u0451 \u0432 \u0442\u0430\u043a\u043e\u043c \u0434\u0443\u0445\u0435. \u042d\u0442\u043e \u0432\u0441\u0451 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e: \u043f\u0440\u043e\u0449\u0435 \u043d\u0430\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e\u0435 \u043e\u0431\u0440\u0430\u043c\u043b\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f <em>zsh<\/em> \u0434\u0435\u043b\u0430\u044e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 vi-\u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<li><a href=\"https:\/\/github.com\/tpope\/vim-repeat\" rel=\"nofollow noopener noreferrer\">repeat<\/a>. \u042f\u0432\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u0438\u0434\u0435\u043d, \u043d\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b <em>surround<\/em> \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u0438 \u0441 \u043f\u043e\u043b\u0434\u044e\u0436\u0438\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0439 Tim Pope) \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f (<em>.<\/em>). \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a <em>surround<\/em>.<\/li>\n<li><a href=\"https:\/\/github.com\/tpope\/vim-unimpaired\" rel=\"nofollow noopener noreferrer\">unimpaired<\/a>. \u0414\u0430\u0436\u0435 \u0441\u0430\u043c Tim Pope \u043f\u0438\u0448\u0435\u0442 \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0436\u0438\u043c\u043a\u043e\u0439 mapping-\u043e\u0432 \u0438\u0437 \u0435\u0433\u043e <em>.vimrc<\/em>. \u041d\u043e \u0442\u0430\u043a \u0443\u0436 \u0432\u044b\u0448\u043b\u043e, \u0447\u0442\u043e \u0438 \u0443 \u043c\u0435\u043d\u044f \u043c\u043d\u043e\u0433\u0438\u0435 mapping-\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u0445\u043e\u0436\u0438 \u0438 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b, \u0442\u0438\u043f\u0430 <em>]q<\/em>\/<em>[q<\/em> \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443\/\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 quickfix \u0441\u043f\u0438\u0441\u043a\u0430 (\u043d\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0436\u0435 <em>:cnext<\/em>!).\n<p>  \u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u043b\u043e\u043d \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u0438, wrapping \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043c\u0435\u043b\u043e\u0447\u0435\u0439. \u041f\u043b\u0430\u0433\u0438\u043d \u0441\u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0433\u043e \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u043e \u0432 <em>.vimrc<\/em> \u0438 \u044f \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <em>textwidth<\/em> \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u043f\u043e\u0445\u043e\u0434\u0438\u043b\u043e \u043d\u0430 <em>unimpaired<\/em>:<\/p>\n<pre> ----- ~\/.vimrc ----- nmap [ob :set textwidth=72&lt;CR&gt; nmap ]ob :set textwidth=0&lt;CR&gt; <\/pre>\n<p>  <\/li>\n<li><a href=\"https:\/\/github.com\/tpope\/vim-abolish\" rel=\"nofollow noopener noreferrer\">abolish<\/a> \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0443\u043c\u0435\u0435\u0442 \u043d\u0430 \u0442\u0435\u043c\u0443 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0438 \u0441\u0445\u043e\u0436\u0438\u0445 \u0437\u0430\u043c\u0435\u043d. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043c\u0435\u043d\u044b <em>:Subvert<\/em> \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0430 <em>FooBar foo_bar FOO_BAR<\/em>. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 <em>:S\/Foo\/Baz\/<\/em> \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 <em>BazBar baz_bar BAZ_BAR<\/em>. \u041e\u0434\u043d\u043e\u0439 <em>:S<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0444\u0430\u0439\u043b\u0430!\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 <em>abolish<\/em> \u0443\u043c\u0435\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u00abcoercion\u00bb \u0443 \u0441\u043b\u043e\u0432\u0430: \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 <em>cr_<\/em> \u043a <em>FooBarBaz<\/em>, \u043e\u043d \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430 <em>foo_bar_baz<\/em>. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 <em>crm<\/em> (\u00abm\u00bb \u043e\u0442 \u00abmixed\u00bb case) \u043a \u044d\u0442\u043e\u043c\u0443, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 <em>FooBarBaz<\/em> \u0441\u043d\u043e\u0432\u0430. \u0412 \u044f\u0437\u044b\u043a\u0435, \u0433\u0434\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0435\u0448\u0430\u043d\u0438\u043d\u0430 \u0438\u0437 mixed, camel, kebab, snake case \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u043b\u043e\u0432\u0430 \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u0446\u0435\u043d\u043d\u0435\u0439\u0448\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d.<\/li>\n<li><a href=\"http:\/\/git:\/\/github.com\/tpope\/vim-commentary\" rel=\"nofollow noopener noreferrer\">commentary<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 <em>gc<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043b\u0438 \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432. \u041a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/li>\n<li><a href=\"http:\/\/git:\/\/github.com\/tpope\/vim-tbone\" rel=\"nofollow noopener noreferrer\">tbone<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 <em>tmux<\/em>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e <em>:Tyank<\/em> \u0438 <em>:Tpaste<\/em> \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u043e\u0432 <em>tmux<\/em> \u0438\u043b\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043d\u0438\u0445. \u0423\u0434\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f.<\/li>\n<li>\u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 <a href=\"https:\/\/www.vim.org\/scripts\/script.php?script_id=2975\" rel=\"nofollow noopener noreferrer\">fugitive<\/a>. \u041a\u0430\u043a \u043f\u0438\u0448\u0435\u0442 \u0441\u0430\u043c Tim Pope \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438, &quot;(\u044d\u0442\u043e\u0442) git wrapper \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u0442\u043e\u0439, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0430&quot; (\u043e\u0442\u0441\u044e\u0434\u0430 \u0438 fugitive \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435). \u0418 \u043e\u043d \u043d\u0435 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442: \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e \u0442\u044c\u043c\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432 git-\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u044d\u0442\u043e <em>:Gdiff<\/em> \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0434\u0438 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d.\n<pre> ----- ~\/.vimrc ----- nmap &lt;F7&gt; :Gvsplit &lt;C-R&gt;&lt;C-W&gt;&lt;CR&gt;zR nmap &lt;F9&gt; :diffupdate&lt;CR&gt;:syntax off&lt;CR&gt;:syntax on&lt;CR&gt; <\/pre>\n<p>  F7 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e \u0441 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c (\u0432 <em>fugitive<\/em>) \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e rebase. \u0410 F9 \u00ab\u043f\u0435\u0440\u0435\u0434\u0451\u0440\u0433\u0438\u0432\u0430\u0435\u0442\u00bb \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f (\u0432\u0438\u043d\u0430 Vim) \u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u044a\u0435\u0437\u0436\u0430\u0442\u044c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 diff-\u043e\u043c. \u041a\u043e\u0441\u0442\u044b\u043b\u044c, \u043d\u043e \u0442\u0435\u0440\u043f\u0438\u043c\u044b\u0439.<\/li>\n<\/ul>\n<p>  \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0436\u0443 \u0441\u0432\u043e\u0451 \u0444\u0438 \u043f\u0440\u043e NERD* \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432: \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0434\u043e \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0441 Vim-\u043e\u043c. NERDTree \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442, \u0438 \u0442\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u0435 \u0434\u0430\u0432\u0430\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0435\u0433\u043e \u043f\u043e\u0437\u043d\u0430\u0442\u044c. \u0410 \u0432 NERDCommenter \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c hard-coded \u0437\u043d\u0430\u043d\u0438\u044f \u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0432\u0435\u0441 <em>commentary<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u043c \u0448\u0442\u0430\u0442\u043d\u0443\u044e <em>commentstring<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u0427\u0435\u0441\u0442\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e Vim \u0432\u0438\u0436\u0443 \u0441\u043e\u0432\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f NERD*, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e.<\/p>\n<p>  \u0410 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.vim.org\/scripts\/script.php?script_id=2666\" rel=\"nofollow noopener noreferrer\">Mark<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u044f <em>\\m<\/em> \u0431\u0443\u0434\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0446\u0432\u0435\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430. \u041f\u043e\u043c\u043d\u044e \u0447\u0442\u043e \u043c\u043d\u0435 \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e \u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 SQL \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445, \u0433\u0434\u0435 \u043f\u043e\u043b\u043d\u043e \u0441\u043b\u043e\u0432 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435\u043c \u0438 \u0442\u044f\u0436\u0435\u043b\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445.<\/li>\n<li><a href=\"https:\/\/github.com\/markonm\/traces.vim\" rel=\"nofollow noopener noreferrer\">traces<\/a> \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <em>:s<\/em>. \u041d\u0430 \u0434\u0435\u043b\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c: \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u0435\u043d \u043a\u043e\u0440\u044f\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442!<\/li>\n<li><a href=\"https:\/\/github.com\/jeetsukumaran\/vim-indentwise\" rel=\"nofollow noopener noreferrer\">IndentWise<\/a> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 motion-\u044b \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044f\u043c indent-\u043e\u0432. \u0421 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u00ab\u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c\/\u0431\u043e\u043b\u044c\u0448\u0438\u043c indent-\u043e\u043c\u00bb. \u041c\u043e\u0436\u043d\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435) \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043a indent-\u0431\u043b\u043e\u043a\u0430\u043c. \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043a\u0430\u043a \u0432 Python, \u0442\u0430\u043a \u0438 \u0432 \u0421\u0438 \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u043c\u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043b\u0441\u044f \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e for-\u0446\u0438\u043a\u043b\u0430 \u0433\u0434\u0435-\u0442\u043e \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u043a\u0440\u0430\u043d\u0430? Indent motion-\u043e\u043c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e.<\/li>\n<li><a href=\"https:\/\/www.vim.org\/scripts\/script.php?script_id=4296\" rel=\"nofollow noopener noreferrer\">ViewPort<\/a> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0445\u0430\u043a, \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0431\u0443\u0444\u0435\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435. \u041e\u043d \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u043e\/\u043a\u043e\u043d\u0435\u0446 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438 \u0432\u0435\u0448\u0430\u0435\u0442 hook-\u0438 \u0447\u0442\u043e\u0431\u044b, \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 ViewPort-\u0431\u0443\u0444\u0435\u0440\u0430, \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u0430\u0434 \u043c\u0435\u0436\u0434\u0443 \u043c\u0435\u0442\u043a\u0430\u043c\u0438. \u0412 Python \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u043b\u043e, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u043e\u0434\u0430 \u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u0447\u0430\u0432 \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u043e. \u0418\u043b\u0438 \u043f\u043e\u0438\u0441\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\/\u043a\u043b\u0430\u0441\u0441\u0430, \u0441\u0431\u0438\u0432\u0430\u044f \u0441 \u0442\u043e\u043b\u043a\u0443.<\/li>\n<li><a href=\"https:\/\/github.com\/prabirshrestha\/vim-lsp\" rel=\"nofollow noopener noreferrer\">vim-lsp<\/a> LSP \u043a\u043b\u0438\u0435\u043d\u0442. \u041a\u043e\u0440\u044f\u0432\u044b\u0439, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441\u0431\u0438\u0432\u0430\u044e\u0449\u0438\u0439 <em>:Changes<\/em> \u043f\u043b\u0430\u0433\u0438\u043d. \u041d\u043e\u2026 \u0432\u0441\u0451 \u0436\u0435 \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0449\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u0443. LSP \u0438\u0434\u0435\u044f \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043d\u043e \u043b\u0438\u0448\u044c \u0431\u044b \u043e\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e. \u0421 Go \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. <em>clangd<\/em> LSP \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0421\u0438 \u043a\u043e\u0434\u0430 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 completion \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0421 Python \u043f\u043e\u043b\u044c\u0437\u0430 LSP \u043c\u043d\u0435 \u0435\u0449\u0451 \u043d\u0435 \u044f\u0441\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438 \u0442\u0430\u043a \u0435\u0441\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 linter, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435, quickfix.\n<pre> ----- ~\/.vim\/plugin\/lsp.vim ----- let g:lsp_auto_enable = 1 let g:lsp_diagnostics_echo_cursor = 1 let g:lsp_diagnostics_echo_delay = -1 let g:lsp_signature_help_enabled = 0  function! s:on_lsp_buffer_enabled() abort     setlocal omnifunc=lsp#complete     nmap &lt;buffer&gt; [g &lt;Plug&gt;(lsp-previous-diagnostic)     nmap &lt;buffer&gt; ]g &lt;Plug&gt;(lsp-next-diagnostic)     nmap &lt;buffer&gt; gd &lt;plug&gt;(lsp-definition)     nmap &lt;buffer&gt; K &lt;plug&gt;(lsp-hover) endfunction  augroup lsp_install     autocmd!     autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() augroup END <\/pre>\n<p>  \u0412\u043e\u0442 \u043f\u043e\u043a\u0430\u0437 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (linter) \u043f\u043e\u043b\u0435\u0437\u0435\u043d: \u043f\u0443\u0441\u043a\u0430\u0439 \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 (\u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441). <em>[g<\/em> \u0438 <em>]g<\/em> \u043f\u0440\u044b\u0433\u0430\u044e\u0442 \u043f\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u043c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. <em>gd<\/em> (goto definiton) \u0438\u0437-\u0437\u0430 \u0442\u044d\u0433\u043e\u0432 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u043d\u0443\u0436\u0435\u043d, \u043d\u043e \u043f\u0443\u0441\u043a\u0430\u0439 \u0431\u0443\u0434\u0435\u0442. \u0410 <em>K<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 hover \u043e\u043a\u043d\u043e \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u0440\u0438\u0447\u0451\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043a\u0430\u0437 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b (<em>g:lsp_signature_help_enabled<\/em>) \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0432\u043e\u0434\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d \u2014 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 \u043c\u0435\u043b\u044c\u043a\u0430\u0435\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0432\u0441\u0451 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c. \u041f\u043b\u044e\u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 omni-\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0440\u043c\u043e\u0437\u043e\u0432 (\u044f\u0432\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 Ctrl-B).<\/li>\n<\/ul>\n<p>  \u041e\u0441\u043e\u0431\u043d\u044f\u043a\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 <a href=\"http:\/\/www.git.stargrave.org\/?p=codecomm.git;a=blob;f=doc\/codecomm.txt\" rel=\"nofollow noopener noreferrer\">CodeComm<\/a>. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0435\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0447\u0442\u0438 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434, \u043a\u043e\u0433\u0434\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c code review \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u2014 review \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043a \u0437\u0430\u0434\u0430\u0447\u0435 \u0432 \u0442\u0440\u044d\u043a\u0435\u0440\u0435. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u044f \u043a\u043e\u0434 \u0434\u043b\u044f review \u0432 fugitive, \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043a\u0443\u0441\u043a\u0438 \u043a\u043e\u0434\u0430, \u043d\u0430\u0436\u0438\u043c\u0430\u043b <em>\\cc<\/em>, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u043a\u043d\u043e \u0441 \u044d\u0442\u0438\u043c \u043a\u0443\u0441\u043a\u043e\u043c \u043a\u043e\u0434\u0430, \u0433\u0434\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0441\u0432\u043e\u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f. \u0412\u0441\u0451 \u044d\u0442\u043e \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0442\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0432 \u0442\u0440\u044d\u043a\u0435\u0440.<\/p>\n<p>  \u041d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f Gerrit. \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0443 \u0436\u0435 \u0441\u0438\u0434\u0435\u0442\u044c \u0432 \u0431\u0440\u043e\u0443\u0437\u0435\u0440\u0435 \u0434\u043b\u044f review!? \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043b\u0430\u0433\u0438\u043d: \u043e\u043d \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b JSON, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 API Gerrit-\u0430. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u043d\u0435\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 CodeComm, \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043a \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435.<\/p>\n<p>  \u0412\u044b\u0434\u0435\u043b\u0438\u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0431\u043b\u043e\u043a \u0432\u043d\u0443\u0442\u0440\u0438 fugitive (\u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b \u0432\u0438\u0434\u0435\u043d \u0445\u044d\u0448 \u043a\u043e\u043c\u043c\u0438\u0442\u0430 \u0438 \u043f\u0443\u0442\u044c), \u043d\u0430\u0436\u0430\u0432 <em>\\cc<\/em>, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u0431\u043b\u043e\u043a:<\/p>\n<pre> -----# 2 [                            ec77b1f6b | src\/pyderasn.py ]-----   79 def tag_encode(num, klass=TagClass.universal, form=TagForm.primitive):   80     if num &lt; 31:   81         # [XX|X|.....]   82         return int2byte(klass.value | form.value | num)   83     # [XX|X|11111][1.......][1.......] ... [0.......]   84     return int2byte(klass.value | form.value | 31) + ...   85 ---------------------------------- &gt;8 ---------------------------------- Here goes my comment. <\/pre>\n<p>  \u041d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a, \u043d\u043e\u043c\u0435\u0440 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f (\u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0441\u043b\u0430\u0442\u044c\u0441\u044f), \u0445\u044d\u0448, \u043f\u0443\u0442\u044c. \u0410\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432 \u0444\u0430\u0439\u043b \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0414\u043b\u044f \u0440\u0435\u0432\u044c\u044e \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e.<\/p>\n<h2>~\/.vim\/plugin<\/h2>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438 \u0432\u0441\u044f <em>~\/.vim\/plugin<\/em> \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 <em>~\/.vimrc<\/em>, \u043a\u0430\u043a \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f \u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c, \u0430 \u0447\u0442\u043e \u043f\u043e \u043c\u0435\u043b\u043e\u0447\u0430\u043c \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043e\u0431\u0449\u0435\u0439 \u043a\u0443\u0447\u0435. \u0422\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432\u0441\u0442\u0430\u0432\u043b\u044e \u0442\u0443\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u2014 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 Vim, \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430:<\/p>\n<pre> ----- ~\/.vim\/plugin\/buftabline.vim ----- if exists('*&lt;SID&gt;BufTabLine') | finish | endif function! BufTabline()     redir =&gt; bufsRaw     silent buffers     redir END     let bufs = []     for buf in split(bufsRaw, &quot;\\n&quot;)[:16]         let leftIdx = stridx(buf, '&quot;')         let rightIdx = strridx(buf, '&quot;')         let filename = substitute(buf[leftIdx + 1 : rightIdx - 1], &quot;%&quot;, &quot;%%&quot;, &quot;g&quot;)         let linenum = split(buf[rightIdx:], &quot; &quot;)[-1]         let attrs = split(buf[:leftIdx-1], '\\s\\+')         let attrs = map(attrs, 'substitute(v:val, &quot;%&quot;, &quot;%%&quot;, &quot;g&quot;)')         let attrs = (len(attrs) == 1) ? attrs[0] : attrs[0] . &quot;:&quot; . join(attrs[1:], &quot;&quot;)         let attrs = &quot;%#TabLine#&quot; . attrs . &quot;%*&quot;         if len(filename) &gt; 20 | let filename = &quot;&lt;&quot; . filename[-(20-1):] | endif         let hl = (match(attrs, &quot;%%&quot;) == -1) ? &quot;%#TabLine#:&quot; : &quot;%#TabLineSel#&quot;         let bufs = add(bufs, attrs . hl . filename . &quot;:&quot; . linenum . &quot;%*&quot;)     endfor     return join(bufs, &quot;  &quot;) endfunction set showtabline=2 set tabline=%!BufTabline() <\/pre>\n<p>  \u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u0444\u0438\u0447 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0432 Vim \u044d\u0442\u043e tab-\u044b. \u041d\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u0434\u0440\u0443\u0436\u0431\u0430 \u0441 \u043d\u0438\u043c\u0438, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0431\u043e\u043b\u0435\u0435. \u041d\u043e \u0440\u0430\u0437 \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u0446\u0435\u043b\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 tabline, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438? \u0412\u043e\u0442 \u0435\u0451 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0431\u0443\u0444\u0435\u0440\u043e\u0432, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u044b\u0434\u0430\u0447\u0435 <em>:buffers<\/em>, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 \u043e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre> 1:a:mysetup.html:6040  2:~\/.vimrc:118  17:&lt;mm\/doc\/codecomm.txt:34  20:%a&lt;ugin\/buftabline.vim:1 <\/pre>\n<p>  \u041e\u043d\u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 <em>:buffers<\/em> \u0438 \u043f\u0430\u0440\u0441\u0438\u0442 \u0435\u0433\u043e. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 vimscript? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u044f\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u043d\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u043e\u0432! \u0418\u043b\u0438 \u043f\u043b\u043e\u0445\u043e \u0438\u0441\u043a\u0430\u043b.<\/p>\n<pre> ----- ~\/.vim\/plugin\/chnglstnav.vim ----- function! s:Chng(...)     if a:0 == 0 | return | endif     execute &quot;normal &quot; . a:1 . (a:1 &gt; 0 ? &quot;g;&quot; : &quot;g,&quot;) endfunction command! -nargs=? Chng call s:Chng(&lt;args&gt;) nmap &lt;End&gt; :changes&lt;CR&gt;:Chng&lt;Space&gt; <\/pre>\n<p>  End \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a <em>:changes<\/em> (\u0432\u044b\u043d\u0435\u0441 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e) \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 <em>:Chng<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043a \u0432\u0432\u043e\u0434\u0443. \u0415\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 change \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c \u043d\u0430\u0437\u0430\u0434. \u0423\u043a\u0430\u0437\u0430\u0432 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c \u00ab\u0432\u043f\u0435\u0440\u0451\u0434\u00bb. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u044d\u0442\u043e \u0432\u0441\u0451 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u044b\u0436\u043e\u043a \u043d\u0435 \u043d\u0430 2-3 \u0448\u0430\u0433\u0430 \u043d\u0430\u0437\u0430\u0434\/\u0432\u043f\u0435\u0440\u0451\u0434, \u0430 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u043d\u044e.<\/p>\n<p>  <a href=\"http:\/\/www.git.stargrave.org\/?p=dotfiles.git;a=blob;f=vim\/.vim\/plugin\/defsplit.vim\" rel=\"nofollow noopener noreferrer\">Defsplit<\/a> \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0438\u0441\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438: \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0443 Python \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u043c:<\/p>\n<pre>     def foobar(self, foo: str, bar: Some[thing, too]) -&gt; None: \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432:     def foobar(           self,           foo: str,           bar: Some[thing, too],     ) -&gt; None:      foo(bar, baz)[0] \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432:     foo(         bar,         baz,     )[0] <\/pre>\n<p>  \u0422\u043e \u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0442\u043e \u043b\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438 \u0442\u044c\u043c\u0443 \u043a\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 (\u043f\u0440\u043e\u0441\u0442\u043e\u0439) \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0438\u0436\u0443 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u2014 \u0447\u0442\u043e-\u0442\u043e \u0442\u0443\u0442 \u043d\u0435 \u0442\u0430\u043a, \u0438\u0434\u0443 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. <em>:Defsplit<\/em> \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u043f\u043e \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u043c. \u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441. <em>:Undefsplit<\/em> \u0441\u0445\u043b\u043e\u043f\u043d\u0435\u0442 \u0432\u0441\u0451 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u043e\u0441\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0435. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f <em>Brsplit<\/em> \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0441\u0430\u043c\u043e\u043c \u00ab\u0434\u0432\u0438\u0436\u043a\u0435\u00bb \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u0447\u0435\u043a. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Python \u044d\u0442\u043e \u0432\u0441\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0442\u043d\u0438 \u0440\u0430\u0437 \u0432 \u0447\u0430\u0441! \u0414\u043b\u044f Go, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, Defsplit \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0451\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0436\u0451\u0441\u0442\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre> ----- ~\/.vim\/plugin\/disables.vim ----- let g:loaded_2html_plugin = 1 let g:loaded_getscriptPlugin = 1 let g:loaded_logipat = 1 let g:loaded_rrhelper = 1 let g:loaded_spellfile_plugin = 1 let g:loaded_vimballPlugin = 1 let g:loaded_vimball = 1 <\/pre>\n<p>  \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0443\u0447\u0438 \u0440\u043e\u0434\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0448\u0442\u0430\u0442\u043d\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u0421\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Vim.<\/p>\n<pre> ----- ~\/.vim\/plugin\/exted.vim ----- function! s:exted(ext)     execute &quot;edit %&lt;.&quot; . a:ext endfunction command! -nargs=1 Ee silent call s:exted(&lt;f-args&gt;) <\/pre>\n<p>  <em>Ee h<\/em> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u0430\u043a \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439, \u043d\u043e \u00abh\u00bb \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 <em>.c<\/em> \u0438 <em>.h<\/em>.<\/p>\n<pre> ----- ~\/.vim\/plugin\/fileline.vim ----- function! s:gotoline()     let file = bufname(&quot;%&quot;)     if filereadable(file) | return | endif     let names = matchlist(file, '\\(.\\{-1,}\\):\\%(\\(\\d\\+\\)\\%(:\\(\\d*\\):\\?\\)\\?\\)\\?$')     if empty(names) | return | endif     let file_name = names[1]     let line_num = names[2] == &quot;&quot; ? &quot;0&quot; : names[2]     let col_num = names[3] == &quot;&quot; ? &quot;0&quot; : names[3]     if !filereadable(file_name) | return | endif     let nr = bufnr(&quot;%&quot;)     exec &quot;keepalt edit +&quot; . line_num . &quot; &quot; . file_name     exec &quot;normal! &quot; . col_num . &quot;|&quot;     exec &quot;bdelete &quot; . nr endfunction autocmd! BufNewFile *:* nested call s:gotoline() autocmd! BufRead *:* nested call s:gotoline() <\/pre>\n<p>  \u042d\u0442\u043e must-have \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435. <em>foo:12<\/em> \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u0442 <em>foo<\/em> \u0444\u0430\u0439\u043b \u043d\u0430 12-\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u041c\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u044d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 <a href=\"http:\/\/www.vim.org\/scripts\/script.php?script_id=2184\" rel=\"nofollow noopener noreferrer\">file:line<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u0437\u0430\u043c\u0435\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043e\u043a\u043e\u043d \u043d\u0430 \u043d\u043e\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e. \u041e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0442\u0438\u043b\u0438\u0442 \u0438 linter-\u043e\u0432 \u0432\u044b\u0434\u0430\u0451\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u043e\u043a \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<pre> ----- ~\/.vim\/plugin\/pastemode.vim ----- if &amp;term =~ &quot;screen.*&quot;     let &amp;t_ti = &amp;t_ti . &quot;\\e[?2004h&quot;     let &amp;t_te = &quot;\\e[?2004l&quot; . &amp;t_te     function! XTermPasteBegin(ret)         set pastetoggle=&lt;Esc&gt;[201~         set paste         return a:ret     endfunction     map &lt;expr&gt; &lt;Esc&gt;[200~ XTermPasteBegin(&quot;i&quot;)     imap &lt;expr&gt; &lt;Esc&gt;[200~ XTermPasteBegin(&quot;&quot;)     cmap &lt;Esc&gt;[200~ &lt;nop&gt;     cmap &lt;Esc&gt;[201~ &lt;nop&gt; endif <\/pre>\n<p>  \u041e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f must-have \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432 NeoVim \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 bracketed paste \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435. \u0422\u0443\u0442 \u0447\u0451\u0442\u043a\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 Vim \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442 escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0443\u044e bracketed paste, \u0442\u043e \u043e\u043d \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 <em>paste<\/em> \u043e\u043f\u0446\u0438\u044e.<\/p>\n<pre> ----- ~\/.vim\/plugin\/whereami.vim ----- function! s:pwdLoad()     let g:mein_pwdL=trim(system(&quot;pwd -L&quot;))     let g:mein_pwdP=trim(system(&quot;pwd -P&quot;)) endfunction autocmd VimEnter * call s:pwdLoad()  function! WhereAmI(fmt)     let fullpath = expand(&quot;%:p&quot;)     if fullpath[:len(g:mein_pwdP)-1] ==# g:mein_pwdP         let fullpath = g:mein_pwdL . fullpath[len(g:mein_pwdP):]     endif     if a:fmt == &quot;gnu&quot;         let where = fullpath . &quot;:&quot; . line(&quot;.&quot;)     elseif a:fmt == &quot;lldb&quot;         let where = &quot;breakpoint set --file &quot; . fullpath . &quot; --line &quot; . line(&quot;.&quot;)     else         let where = &quot;unknown fmt&quot;     endif     let @* = where     echomsg where endfunction nmap &lt;leader&gt;w :call WhereAmI(&quot;gnu&quot;)&lt;CR&gt; nmap &lt;leader&gt;W :call WhereAmI(&quot;lldb&quot;)&lt;CR&gt; <\/pre>\n<p>  <em>\\w<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0432 X11 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0443\u0440\u0441\u043e\u0440. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\u043c\u0438. \u041d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c breakpoint \u0432\u043e\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043a\u043e\u0434\u0430: <em>\\w<\/em>, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a, Shift-Insert, Enter. \u041d\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0443 LLDB \u0438 GDB \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f LLDB \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <em>\\W<\/em>.<\/p>\n<p>  \u041d\u0430\u0447\u0430\u043b\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e: \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Vim \u043e\u043d \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab\u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u00bb \u0438 \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u00bb \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u0435\u0434\u0443\u0442 \u0432\u043e \u0432\u043d\u0435 \u0434\u0435\u0440\u0435\u0432\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b). Go \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0438\u0434\u0438\u0442 \u043f\u0443\u0442\u044c <em>~\/work\/go\/src\/XXX<\/em>, \u0430 Vim \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c <em>XXX<\/em> \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0435\u0433\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c \u0434\u043e <em>\/somewhere\/outside\/XXX<\/em>. \u0418 \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u00ab\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u00bb \u043f\u0443\u0442\u044c \u0434\u043e \u0444\u0430\u0439\u043b\u0430\/\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e Vim. \u0418 \u0437\u0430\u0441\u0430\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 <em>\\w<\/em> \u043f\u0435\u0440\u0435\u0434\u0430\u043c \u0432 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u0442\u044c, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438 \u043e\u043d, \u043d\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u044e\u0442. \u0412 \u0441\u0432\u043e\u0451\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0443\u0442\u0438 \u0438 \u0434\u0435\u043b\u0430\u044e \u0437\u0430\u043c\u0435\u043d\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0442\u0438 \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u0440\u044f\u0437\u043d\u043e, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 is good enough.<\/p>\n<pre> ----- ~\/.vim\/plugin\/grep.vim ----- function! s:Vim(pattern)     let ignorecase_bak=&amp;ignorecase     set noignorecase     execute &quot;vimgrep \/&quot; . a:pattern . &quot;\/ **\/*&quot;     copen     let &amp;ignorecase=ignorecase_bak     let g:pylint_disable=1 endfunction command! -nargs=* -complete=file Vim call s:Vim(&lt;q-args&gt;) <\/pre>\n<p>  \u0412 Vim \u0435\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435: <em>vimgrep<\/em>. \u041c\u043d\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0434\u0435\u0440\u0435\u0432\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f <em>**\/*<\/em> \u043f\u0443\u0442\u044c. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u041f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 <em>:vimgrep \/whatever\/ **\/*<\/em>, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u0441 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435\u043c <em>ignorecase<\/em> \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u2014 \u043d\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <em>:Vim whatever<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430.<\/p>\n<pre> ----- ~\/.vim\/plugin\/ggrep.vim ----- function! s:Vmg(pattern)     silent execute 'Ggrep &quot;' . a:pattern . '&quot;'     copen     redraw!     let g:pylint_disable=1 endfunction command! -nargs=* -complete=file Vmg call s:Vmg(&lt;q-args&gt;) <\/pre>\n<p>  \u041f\u043e\u0437\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043b \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c <em>git grep<\/em> \u0438 \u043d\u0430\u0447\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <em>:Ggrep<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u0437 <em>fugitive<\/em>. \u041d\u043e \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0447\u0442\u043e quickfix \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043a\u043e\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0422\u0443\u0442 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c <em>:Vmg<\/em> \u043e\u0431\u0451\u0440\u0442\u043a\u0430, \u0441\u0445\u043e\u0436\u0430\u044f \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0441 <em>:Vim<\/em>, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c.<\/p>\n<pre> ----- ~\/bin\/qq ----- #!\/bin\/sh tmp=`mktemp` tmux capture-pane -J tmux save-buffer $tmp tmux delete-buffer perl -ne '\/^([^:]+:\\d+:.*[^\\s])\\s*$\/ and print &quot;$1\\n&quot;' &lt; $tmp &gt; $tmp.err rm $tmp vim -c 'let g:pylint_disable=1' -c copen -q $tmp.err rm $tmp.err <\/pre>\n<p>  \u0427\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <em>grep<\/em>, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 <em>zsh<\/em>, \u0443\u0436\u0435 \u043f\u043e\u0441\u0442\u0444\u0430\u043a\u0442\u0443\u043c. \u0414\u0430, Vim \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <em>file:line<\/em> \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u043e\u0432, \u043d\u043e \u044d\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u043d\u0435 \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b. <em>qq<\/em> \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 <em>tmux<\/em> \u044d\u043a\u0440\u0430\u043d, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0451 \u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 file:line \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Vim, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u0432 \u043d\u0435\u0433\u043e quickfix \u0441\u043f\u0438\u0441\u043e\u043a. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u0440\u044f\u0437\u043d\u043e, \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0441\u043d\u043e\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u0412\u0435\u0434\u044c \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0436\u0435 \u044f \u0441\u0438\u0436\u0443 \u0432 Vim \u0438 \u043f\u0440\u043e\u0432\u043e\u0436\u0443 \u043f\u043e\u0438\u0441\u043a \u0447\u0435\u0440\u0435\u0437 <em>:Vim<\/em> \u0438 <em>:Vmg<\/em>.<\/p>\n<pre> ----- ~\/.vim\/plugin\/zshfe.vim ----- if !exists(&quot;g:zshfe_path&quot;) | let g:zshfe_path=expand(&quot;~\/.vim\/plugin\/zshfe.zsh&quot;) | endif  function! s:zshfe(query, opencmd)     silent let result = systemlist(g:zshfe_path . &quot; &quot; . a:query)     if len(result) == 0 | return | endif     exec a:opencmd . &quot; &quot; . result[0][:-2] endfunction  command! -nargs=1 Fe call s:zshfe(&lt;f-args&gt;, &quot;edit&quot;) command! -nargs=1 Fsp call s:zshfe(&lt;f-args&gt;, &quot;split&quot;) command! -nargs=1 Fvs call s:zshfe(&lt;f-args&gt;, &quot;vsplit&quot;)  nmap &lt;Leader&gt;e :Fe         &lt;- \u0442\u0443\u0442 \u043f\u0440\u043e\u0431\u0435\u043b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 nmap &lt;Leader&gt;&lt;space&gt; :Fsp  &lt;- \u0442\u0443\u0442 \u043f\u0440\u043e\u0431\u0435\u043b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 nmap &lt;Leader&gt;v :Fvs        &lt;- \u0442\u0443\u0442 \u043f\u0440\u043e\u0431\u0435\u043b \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 <\/pre>\n<pre> ----- ~\/.vim\/plugin\/zshfe.zsh ----- #!\/usr\/bin\/env zsh set -e zmodload zsh\/zpty zpty zshfe zsh zpty -w zshfe &quot;print ZSHFE $*&quot;$'\\t EFHSZ\\nexit\\n' zpty -r zshfe zshfe &quot;*exit&quot; print -- $zshfe | sed -n &quot;s\/^ZSHFE \\(.*\\) EFHSZ\/\\1\/p&quot; <\/pre>\n<p>  \u042f \u0442\u0430\u043a \u043f\u0440\u0438\u0432\u044b\u043a \u043a fuzzy-like \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0443\u0442\u0435\u0439 \u0432 <em>zsh<\/em> (\u043a\u043e\u0433\u0434\u0430 <em>f\/b\/baz<\/em> \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 <em>foo\/2bar\/somebaz<\/em>), \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0438 \u0432 Vim \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u0432\u0438\u0434\u0435. \u041d\u0435 \u043c\u043e\u0433\u0443 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u0451\u043b, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0447\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c <em>zsh<\/em>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c pty \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 (\u0432\u0432\u043e\u0434 \u043f\u0443\u0442\u0438) \u0438 \u043b\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u043d\u0435 \u043d\u0430\u0448\u0451\u043b.<\/p>\n<p>  <em>\\e\u041f\u0423\u0422\u042c<\/em> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <em>:Fe \u041f\u0423\u0422\u042c<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u041f\u0423\u0422\u042c (zsh-like completed) \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043e\u043a\u043d\u0435. <em>\\v<\/em> \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0432 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c split, \u0430 <em>\\\u041f\u0420\u041e\u0411\u0415\u041b<\/em> \u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c.<\/p>\n<h2>~\/.vim\/ftplugin<\/h2>\n<p>  Filetype-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432:<\/p>\n<pre> ----- ~\/.vim\/ftdetect\/conf.vim ----- autocmd BufRead,BufNewFile *.conf setlocal noexpandtab  ----- ~\/.vim\/ftdetect\/dtrace.vim ----- autocmd BufRead,BufNewFile *.d setlocal filetype=dtrace  ----- ~\/.vim\/ftdetect\/hjson.vim ----- autocmd BufNewFile,BufRead *.hjson setlocal shiftwidth=2 autocmd BufNewFile,BufRead *.hjson setlocal commentstring=#\\ %s  ----- ~\/.vim\/ftdetect\/python.vim ----- autocmd BufRead,BufNewFile *.pyi setlocal filetype=python  ----- ~\/.vim\/ftdetect\/redo.vim ----- autocmd BufNewFile,BufRead *.do setlocal filetype=sh  ----- ~\/.vim\/ftdetect\/sql.vim ----- autocmd BufRead \/tmp\/psql.edit* setlocal filetype=sql  ----- ~\/.vim\/ftplugin\/gitcommit\/autos.vim ----- setlocal spell spelllang=ru,en_gb setlocal textwidth=72  ----- ~\/.vim\/ftplugin\/yaml\/autos.vim ----- setlocal shiftwidth=2  ----- ~\/.vim\/ftplugin\/texinfo\/autos.vim ----- abbreviate \\t @tab setlocal commentstring=@c\\ %s  ----- ~\/.vim\/ftplugin\/python\/ignores.vim ----- set wildignore+=**\/_build\/*,**\/.hypothesis  ----- ~\/.vim\/ftplugin\/c\/lsp.vim ----- au User lsp_setup call lsp#register_server({ \\    &quot;name&quot;: &quot;clangd&quot;, \\    &quot;cmd&quot;: [&quot;clangd&quot;], \\    &quot;allowlist&quot;: [&quot;c&quot;, &quot;cpp&quot;, &quot;objc&quot;, &quot;objcpp&quot;], \\})  ----- ~\/.vim\/ftplugin\/go\/lsp.vim ----- au User lsp_setup call lsp#register_server({ \\    &quot;name&quot;: &quot;gopls&quot;, \\    &quot;cmd&quot;: [&quot;gopls&quot;], \\    &quot;allowlist&quot;: [&quot;go&quot;], \\})  ----- ~\/.vim\/ftplugin\/python\/lsp.vim ----- if executable(&quot;pyls&quot;)     &quot; pip install 'python-language-server[all]'     au User lsp_setup call lsp#register_server({     \\    &quot;name&quot;: &quot;pyls&quot;,     \\    &quot;cmd&quot;: {server_info-&gt;[&quot;pyls&quot;]},     \\    &quot;allowlist&quot;: [&quot;python&quot;],     \\}) endif <\/pre>\n<pre> ----- ~\/.vim\/ftdetect\/mutt.vim ----- function! s:KillSignature()     call cursor(1, 1)     call search('^[&gt;|] \\?-- \\?$')     if getpos(&quot;.&quot;)[1] != 1         normal d}     endif endfunction autocmd BufRead \/tmp\/mutt-* call s:KillSignature() autocmd BufRead \/tmp\/mutt-* setlocal textwidth=72 <\/pre>\n<p>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u043f\u0438\u0441\u044c\u043c\u043e, \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438\u0437 \u043f\u0440\u043e\u0446\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0431\u044b\u0432\u0430\u044e\u0442 \u043d\u0435\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u043d\u0435 \u0437\u043d\u0430\u044e\u0449\u0438\u0435 \u0447\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u043c\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 <em> \u2014 <\/em>.<\/p>\n<pre> ----- ~\/.vim\/ftdetect\/tex.vim ----- autocmd BufNewFile,BufRead *.tex abbreviate framedo     \\begin{frame}&lt;CR&gt;\\frametitle{TODO}&lt;CR&gt;\\end{frame}&lt;ESC&gt;k&gt;&gt;wwlcw autocmd BufNewFile,BufRead *.tex abbreviate itemdo     \\begin{itemize}&lt;CR&gt;\\item &lt;CR&gt;\\end{itemize}&lt;ESC&gt;k&gt;&gt;$a autocmd BufNewFile,BufRead *.tex abbreviate cnter     \\begin{center}&lt;CR&gt;\\end{center}&lt;ESC&gt;k$o <\/pre>\n<p>  \u0412\u0432\u043e\u0434 <em>framedo<\/em>, <em>itemdo<\/em> \u0438\u043b\u0438 <em>cnter<\/em> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c Ctrl-O \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435:<\/p>\n<pre> \\begin{frame}     \\frametitle{\u041a\u0423\u0420\u0421\u041e\u0420} \\end{frame}  \\begin{itemize}     \\item \u041a\u0423\u0420\u0421\u041e\u0420 \\end{itemize}  \\begin{center} \u041a\u0423\u0420\u0421\u041e\u0420 \\end{center} <\/pre>\n<p>  \u0433\u0434\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \u0441\u0440\u0430\u0437\u0443 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <em>\u041a\u0423\u0420\u0421\u041e\u0420<\/em> \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u0432\u043e\u0434\u0430. \u0421\u043e\u0437\u0434\u0430\u043b \u044d\u0442\u043e \u0438\u0437-\u0437\u0430 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0439 (\u0432 Beamer), \u0433\u0434\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0417\u043d\u0430\u044e \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445, code snippet. \u041f\u0440\u043e\u0431\u043e\u0432\u0430\u043b SnipMate (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451), \u043d\u043e \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0433\u0434\u0435 \u0431\u044b \u043c\u043d\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430.<\/p>\n<pre> ----- ~\/.vim\/ftplugin\/c\/autos.vim ----- setlocal commentstring=\/\/\\ %s  abbreviate UCC unsigned char abbreviate u8 uint8_t * abbreviate U8 (uint8_t *) let @e = &quot;ywoassert(^[pA!= NULL);^[&quot;  setlocal equalprg=cfmt.sh command! -buffer Fmt normal mtgg=G'tz. <\/pre>\n<p>  \u0412\u044b\u0437\u043e\u0432 <em>@e<\/em> \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044f \u0432 <em>assert(XXX != NULL);<\/em> \u0432\u044b\u0437\u043e\u0432. \u0410 <em>:Fmt<\/em> \u043a\u043e\u043c\u0430\u043d\u0434\u0430: \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043a \u043d\u0435\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0430\u0434, \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u043a\u0440\u0430\u043d. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u00ab\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f\u00bb \u0442\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443, \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u0434. \u0414\u043b\u044f Go \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f <em>fmt.vim<\/em> \u043f\u043b\u0430\u0433\u0438\u043d, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043f\u0443\u0442\u0430\u044e, \u0432 Go \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435. \u041e\u043d \u0442\u043e\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442<em>:Fmt<\/em> (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u0421\u0438 \u0441\u0434\u0435\u043b\u0430\u043d \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0443 \u0438 \u043f\u043e\u0434\u043e\u0431\u0438\u044e).<\/p>\n<pre> ----- ~\/.vim\/ftplugin\/go\/motion.vim ----- nnoremap &lt;silent&gt; &lt;buffer&gt; ]] :call &lt;SID&gt;Go_jump('\/^\\(func\\\\|type\\)')&lt;cr&gt; nnoremap &lt;silent&gt; &lt;buffer&gt; [[ :call &lt;SID&gt;Go_jump('?^\\(func\\\\|type\\)')&lt;cr&gt; nnoremap &lt;silent&gt; &lt;buffer&gt; ]m :call &lt;SID&gt;Go_jump('\/^\\s*\\(func\\\\|type\\)')&lt;cr&gt; nnoremap &lt;silent&gt; &lt;buffer&gt; [m :call &lt;SID&gt;Go_jump('?^\\s*\\(func\\\\|type\\)')&lt;cr&gt; fun! &lt;SID&gt;Go_jump(motion) range     let cnt = v:count1     let save = @\/    &quot; save last search pattern     mark '     while cnt &gt; 0         silent! exe a:motion         let cnt = cnt - 1     endwhile     call histdel('\/', -1)     let @\/ = save    &quot; restore last search pattern endfun <\/pre>\n<p>  \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043c\u043d\u044e, \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0432\u0437\u044f\u0442\u043e \u0438\u0437 Python filetype \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Vim \u0438 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043b\u044f Go. \u041a\u043e\u043c\u0430\u043d\u0434\u044b <em>[[<\/em>\/<em>]]<\/em> \u0432 vi \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0421\u0438 \u043a\u043e\u0434\u0435 \u0432\u0430\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0444\u0438\u0433\u0443\u0440\u043d\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0430\u0441\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438), \u0430 <em>[m<\/em>\/<em>]m<\/em> \u043c\u0435\u0436\u0434\u0443 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438. \u0417\u0434\u0435\u0441\u044c <em>[[<\/em>\/<em>]]<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0434\u043b\u044f \u043f\u0440\u044b\u0436\u043a\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u043e\u0432. \u0410 <em>[m<\/em>\/<em>]m<\/em> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0442 \u0438\u043c\u0435\u0442\u044c indentation, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u0440\u044b\u0433\u0430\u0442\u044c \u043d\u0430 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre> ----- ~\/.vim\/ftplugin\/go\/autos.vim ----- set noexpandtab let g:defsplit_shift=&quot;\u0422\u0410\u0411\u0423\u041b\u042f\u0426\u0418\u042f&quot;  let @e = &quot;^iif err = ^[A; err != nil {^[o\u0422\u0410\u0411\u0423\u041b\u042f\u0426\u0418\u042f&quot; let @r = &quot;oif err != nil {^M}^[O\u0422\u0410\u0411\u0423\u041b\u042f\u0426\u0418\u042f&quot; <\/pre>\n<p>  <em>@e<\/em> \u043c\u0430\u043a\u0440\u043e\u0441 \u043f\u0440\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043d\u0430 <em>foo(bar)<\/em> \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442:<\/p>\n<pre> if err = foo(bar); err != nil {     \u041a\u0423\u0420\u0421\u041e\u0420 <\/pre>\n<p>  \u0410 <em>@r<\/em> \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<pre> if err != nil {     \u041a\u0423\u0420\u0421\u041e\u0420 } <\/pre>\n<pre> ----- ~\/.vim\/ftplugin\/go\/gogetdoc.vim ----- function! LintStatus()     if exists(&quot;b:gogetdoc_job&quot;) &amp;&amp; job_status(b:gogetdoc_job) == &quot;run&quot; | return &quot;GD&quot; | endif     return &quot;&quot; endfunction  function! GoGetDocGot(ch)     let msgs = []     while ch_status(a:ch) == &quot;buffered&quot;         let msgs = add(msgs, ch_read(a:ch))     endwhile     if exists(&quot;b:godocid&quot;) | call popup_close(b:godocid) | endif     if len(msgs) == 0         echohl WarningMsg | echomsg &quot;No go doc&quot; | echohl None         return     endif     let msgs = msgs[2:]     let b:godocid = popup_atcursor(msgs[2:-2],         {&quot;wrap&quot;: 0, &quot;title&quot;: msgs[0], &quot;move&quot;: &quot;word&quot;}) endfunction  function! s:GoGetDoc()     if exists(&quot;b:gogetdoc_job&quot;) &amp;&amp; job_status(b:gogetdoc_job) == &quot;run&quot;         return     endif     let pos = line2byte(line(&quot;.&quot;)) + col(&quot;.&quot;) - 2     let cmdline = &quot;gogetdoc -pos &quot; . expand(&quot;%p&quot;) . &quot;:#&quot; . pos     echomsg cmdline     let b:gogetdoc_job = job_start(cmdline, {         \\&quot;in_mode&quot;: &quot;nl&quot;,         \\&quot;err_io&quot;: &quot;null&quot;,         \\&quot;close_cb&quot;: &quot;GoGetDocGot&quot;,     \\}) endfunction  nmap &lt;buffer&gt; &lt;silent&gt; &lt;CR&gt; :call &lt;SID&gt;GoGetDoc()&lt;CR&gt; <\/pre>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u043b \u043f\u0440\u043e\u0441\u0442\u043e proof-of-concept \u0440\u0430\u0431\u043e\u0442\u044b popup \u043e\u043a\u043e\u043d, \u043d\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u0430\u043b\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043f\u043e\u043a\u0430\u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u043d\u0435\u0448\u043d\u044e\u044e <em>gogetdoc<\/em> \u0443\u0442\u0438\u043b\u0438\u0442\u0443) \u043f\u043e \u0441\u043b\u043e\u0432\u0443 \u043f\u043e\u0434 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043d\u0451\u043c Enter \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 \u0444\u043e\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0432 \u0432 popup \u043e\u043a\u043d\u0435.<\/p>\n<pre> ----- ~\/.vim\/ftplugin\/python\/autos.vim ----- iabbrev #u # coding: utf-8 iabbrev tt # type: iabbrev tti # type: ignore iabbrev trace import pdb ; pdb.set_trace()&lt;CR&gt;pass iabbrev embed import code ; code.interact(local=locals()) iabbrev kargs *args, **kwargs iabbrev pyldis # pylint: disable= iabbrev deff def () -&gt; None:&lt;ESC&gt;F(i iabbrev &quot;&quot;&quot; &quot;&quot;&quot;&lt;ESC&gt;o&quot;&lt;ESC&gt;2i&quot;&lt;ESC&gt;kA nmap &lt;leader&gt;ss :set lazyredraw&lt;CR&gt;vip:sort u&lt;CR&gt;:'&lt;,'&gt;sort i&lt;CR&gt;:set nolazyredraw&lt;CR&gt; let @b = &quot;&gt;gvctry:^[&lt;&lt;oexcept Exception as err:^Mimport pdb ;     pdb.set_trace()^Mpass^[&gt;&gt;k&gt;&gt;kP&quot; let @n = &quot;ddV\/except.*:^M&lt;n3dd&quot; <\/pre>\n<ul>\n<li>\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440 \u0438 \u0442\u0430\u043a \u044f\u0441\u043d\u0430. <em>deff<\/em> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c Ctrl-O \u0441\u043e\u0437\u0434\u0430\u0451\u0442: <em>def (\u041a\u0423\u0420\u0421\u041e\u0420) -&gt; None:<\/em>. \u0412\u0432\u043e\u0434 \u0442\u0440\u043e\u0439\u043d\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445 docstring \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435.<\/li>\n<li><em>\\ss<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0430\u0431\u0437\u0430\u0446\u0430 \u0441 import-\u0430\u043c\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0443\u0431\u043b\u0435\u0439. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0430\u0442\u044c <em>:sort ui<\/em>? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u043d\u0438\u044e, \u0441\u0442\u0430\u0432\u0448\u0438\u0445 \u00ab\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438\u00bb, import-\u043e\u0432. \u0410 <em>lazyredraw<\/em> \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li><em>@b<\/em> \u0438 <em>@n<\/em> \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u2014 \u0441\u0430\u043c\u043e\u0435 \u0446\u0435\u043d\u043d\u043e\u0435 \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u0434\u043b\u044f Python. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u0441 foo \u0438 bar), \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c <em>@b<\/em> \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:\n<pre> try:     foo     bar except Exception as err:     import pdb ; pdb.set_trace()     pass <\/pre>\n<p>  \u0418 \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e indentation. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c <em>@n<\/em> \u043d\u0430 <em>try:<\/em> \u0438 \u0432\u0441\u044f \u044d\u0442\u0430 \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0430\u0434. \u041a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u043e\u0434\u0430. \u0418 \u0432\u0441\u0451 \u0431\u0435\u0437 vimscript.<\/li>\n<\/ul>\n<pre> ----- ~\/.vim\/ftplugin\/python\/importcompl.vim ----- let s:git_grep_cmd = &quot;git grep -H --line-number --ignore-case --no-color &quot;  function! SortByLen(s1, s2)     if len(a:s1) == len(a:s2) | return a:s1 &gt; a:s2 | endif     return 1 ? len(a:s1) &gt; len(a:s2) : -1 endfunction  function! ImportCompl()     normal diw     let output = system(s:git_grep_cmd . '&quot;^from .* import .*' . @&quot; . '&quot; -- &quot;*.py&quot; &quot;**\/*.py&quot;')     let suggestions = []     for line in split(output, &quot;\\n&quot;)         if stridx(line, &quot;unused-import&quot;) != -1 | continue | endif         let m = matchlist(line, '^.*:\\d\\+:\\(.*\\)$')         if len(m) == 0 | continue | endif         call insert(suggestions, m[1])     endfor     call sort(suggestions, &quot;SortByLen&quot;)     call uniq(suggestions)     call reverse(suggestions)     call complete(col('.'), suggestions)     return '' endfunction  inoremap &lt;F3&gt; &lt;C-R&gt;=ImportCompl()&lt;CR&gt;  function! AllImportCompl()     let output = system(s:git_grep_cmd . '&quot;^from .* import&quot; -- &quot;*.py&quot; &quot;**\/*.py&quot;')     let imports = {}     for line in split(output, &quot;\\n&quot;)         if stridx(line, &quot;unused-import&quot;) != -1 | continue | endif         for regexp in [             \\'^.*:\\d\\+:\\(from .* import \\(\\w\\+\\).*\\)$',             \\'^.*:\\d\\+:\\(from .* import \\w\\+ as \\(\\w\\+\\).*\\)$',         \\]             let m = matchlist(line, regexp)             if len(m) == 0 | break | endif             let imports[m[2]] = m[1]         endfor     endfor     let lines = getloclist(winnr())     if len(lines) == 0 | let lines = getqflist() | endif     let result = []     for line in lines         let m = matchlist(line.text, '\\(E0602\\|F821\\).*' . &quot;'&quot; . '\\(\\w\\+\\)' . &quot;'$&quot;)         if len(m) == 0 || !has_key(imports, m[2]) | continue | endif         call insert(result, imports[m[2]])     endfor     call sort(result, &quot;i&quot;)     call uniq(result)     call append(&quot;.&quot;, result) endfunction <\/pre>\n<p>  \u041a\u043e\u0434 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u00ab\u0445\u0430\u043a \u043d\u0430 \u0445\u0430\u043a\u0435\u00bb. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432. \u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u043e\u0439 import-\u043e\u0432. \u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c: \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 Python \u043c\u0435\u043d\u044f \u0443\u0434\u0440\u0443\u0447\u0430\u0435\u0442 \u0438, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0432\u0448\u0438\u0445 \u043c\u0435\u043d\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0432 Go \u0432\u043e\u043d \u0432\u0441\u0451 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e).<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u043d\u0430\u0431\u0440\u0430\u043b \u0441\u043b\u043e\u0432\u043e <em>Certificate<\/em> \u0438 \u043d\u0430\u0436\u0430\u043b \u043d\u0430 \u043d\u0451\u043c F3. \u0411\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d <em>git grep<\/em> \u0441 \u043f\u043e\u0438\u0441\u043a\u043e\u043c import-\u043e\u0432 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 <em>Certificate<\/em> \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0438 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043f\u043e \u0441\u0430\u043c\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u043c\u0435\u043d\u044e \u0441 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u0433\u043e\u043b\u044b\u0439 \u0438 import \u0435\u0449\u0451 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d. \u0410 \u0435\u0449\u0451 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u00ab\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u043d\u044b\u043c\u0438\u00bb import-\u0430\u043c\u0438 (\u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u043e \u043d\u0438\u0445 \u0434\u043b\u044f <em>pyimportcan.pl<\/em> \u0441\u043a\u0440\u0438\u043f\u0442\u0430).<\/p>\n<p>  \u041f\u043e\u0437\u0436\u0435 \u0431\u044b\u043b \u0440\u043e\u0436\u0434\u0451\u043d \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0445\u0430\u043a \u0432 \u0432\u0438\u0434\u0435 <em>:AllImportCompl<\/em> \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Pylint \u0438\u043b\u0438 Pyflakes linter-\u044b, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 quickfix \u0441\u043f\u0438\u0441\u043e\u043a (\u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u0434\u0435\u043b\u0430\u0435\u0442 \u043c\u043e\u0439 <em>pylint.vim<\/em>). \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0430\u0439\u0434\u0451\u0442 \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 import-\u0430\u0445 \u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u043e\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u0430\u043d\u0430\u043b\u043e\u0433 F3-\u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0443 \u0438 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u043e \u0433\u0440\u0443\u043f\u043f\u0430\u043c. \u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f, \u043d\u043e \u044d\u0442\u043e\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0445\u0430\u043a \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e: \u0441 \u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044f (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f) \u043f\u0440\u0435\u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 import-\u043e\u0432.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u0442\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u0432 vimscript \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0438 \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e. \u042d\u0442\u043e \u0448\u0442\u0443\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u043d\u0435 hardcore \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a.<\/p>\n<pre> ----- ~\/.vim\/ftplugin\/python\/unused_remover.vim ----- function! UnusedImportsRemover()     call setqflist(filter(getqflist(), &quot;stridx(v:val.text, \\&quot;unused-import\\&quot;) != -1 ||         stridx(v:val.text, \\&quot;imported but unused\\&quot;) != -1&quot;))     cdo d endfunction <\/pre>\n<p>  \u042d\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0445\u0430\u043a\u0443 <em>:AllImportCompl<\/em> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0434\u0430\u043b\u044f\u044e\u0449\u0430\u044f \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 import-\u044b (\u0442\u043e\u0436\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 quickfix \u0434\u0430\u043d\u043d\u044b\u0445 linter-\u0430).<\/p>\n<pre> ----- ~\/.vim\/ftplugin\/python\/testname.vim ----- function! TestName()     normal mm     normal ?.*\\s*def .*[Tt]est^M     normal ^f(Byw     let postfix = @&quot;     normal [[f(Byw     let postfix = @&quot; . &quot;.&quot; . postfix     normal `m     let base = join([&quot;&quot;] + split(getcwd(), &quot;\/&quot;)[:-1], &quot;\/&quot;)     let prefix = substitute(expand(&quot;%:p:r&quot;)[len(base)+1:], &quot;\/&quot;, &quot;.&quot;, &quot;g&quot;)     let name = prefix . &quot;:&quot; . postfix     let @* = name     echomsg name endfunction nmap &lt;leader&gt;t :call TestName()&lt;CR&gt; <\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Python-\u043f\u0443\u0442\u0438 \u0434\u043e \u0442\u0435\u0441\u0442\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f. \u041d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442, \u0430 \u043d\u0435 AST \u0434\u0435\u0440\u0435\u0432\u043e \u043a\u043e\u0434\u0430. \u041d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u0442\u0435\u043b\u0435 \u0442\u0435\u0441\u0442\u0430, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <em>\\t<\/em> \u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0442\u0438\u043f\u0430 <em>foo.bar.tests:TestBaz.test_whatever<\/em>. \u0427\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434: \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u0432\u0441\u0451! \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0447\u0442\u043e \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0430 \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0451\u0442 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0434\u043b\u044f \u0441\u0435\u0431\u044f!<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/563428\/\"> https:\/\/habr.com\/ru\/post\/563428\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\u0421\u0442\u0430\u0442\u044c\u044f-\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/563426\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u043e\u043f\u0438\u0441\u0430\u0442\u044c. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u0432 \u043d\u0435\u0439 \u044f \u043d\u0430\u0447\u0430\u043b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 dotfiles.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/859\/12f\/083\/85912f083e230deef747e59c2eec708f.jpg\">  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-325096","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325096"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325096\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}