LINUX.ORG.RU

Vim, vimrc, colorscheme

 , ,


0

2

Всем доброго времени!
Начал осваивать Vim и конечно же хочется иметь в своем «арсенале» годный vimrc.
Вот решил обратиться к знатокам, которые пользуются Vim’ом уже давно и знают в этом толк.
Помогите довести мой vimrc «до ума». Может стоит что-то удалить или поменять строки местами, что-то добавить… в общем буду рад Вашим рекомендациям!
Не пинайте сильно, т.к. Vim’ом пользуюсь относительно недавно и собирал vimrc из того что нашел на просторах интернета.
Вот мой vimrc на обозрение:

"Перенос строк
"set wrap    "включить перенос строк (set nowrap отключает перенос строк)
set linebreak   "перенос строк по словам, а не по буквам
set textwidth=80    "количество символов в строке

"TAB'ы
set tabstop=4
set shiftwidth=4    "4 пробела для автоотступа
set smarttab
set expandtab    "Ставим TAB'ы пробелами
set softtabstop=4    "4 пробела в TAB'е
retab    "переопределить все TAB'ы в файле в соответситвии с установленными параметрами

"Поиск
set hlsearch    "подсветка результатов поиска
set incsearch    "подсветка результатов поиска по мере набора текста
set ignorecase    "игнорировать регистр в поиске
set smartcase    "переопределить ignorecase, если есть символы в верхнем регистре

"Оформление
filetype indent plugin on    "автоматическое определение типа файлов
set filetype=markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md  set ft=markdown

syntax on    "подсветка синтаксиса
syntax enable
set syntax=markdown

set t_Co=256
set termguicolors

let g:oceanic_next_terminal_bold = 1
let g:oceanic_next_terminal_italic = 1

set background=dark
colorscheme OceanicNext
"colorscheme archman
"colorscheme better-molokai

"Мышь
set mousehide    "прятать курсор мыши при наборе текста
"set mouse=a    "поддержка мыши

"Кодировка текста
set termencoding=utf-8    "кодировка терминала
set encoding=utf-8    "кодировка файлов по умолчанию
set fileencodings=utf8,cp1251

"Отключение .swp и ~ (резервных) файлов
set nobackup
set noswapfile
set clipboard=unnamed

"Разное
set autoindent    "автоотступ
set number    "нумерация строк
set ruler    "положение курсора в документе

"pass
augroup pass
  au!
  au VimEnter
    \ /dev/shm/pass.?*/?*.txt
    \,$TMPDIR/pass.?*/?*.txt
    \,/tmp/pass.?*/?*.txt
    \ set nobackup nowritebackup noswapfile viminfo= noundofile
augroup END

"Vim-plug
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree', { 'on':  'NERDTreeToggle' }    "NERDTree
Plug 'suan/vim-instant-markdown', { 'for':  'markdown' }    "vim-instant-markdown
Plug 'jiangmiao/auto-pairs'    "Auto Pairs
Plug 'ELouisYoung/vim-better-molokai'
Plug 'atahabaki/archman-vim'
Plug 'mhartington/oceanic-next'
call plug#end()

"vim-instant-markdown
let g:instant_markdown_browser = "firefox --new-window"    "открыть предпросмотр в новом окне браузера
let g:instant_markdown_autostart = 0    "отключить автозапуск окна предпросмотра
"let g:instant_markdown_slow = 1    "отключить обновление экрана в режиме Real-Time
"let g:instant_markdown_open_to_the_world = 1    "по умолчанию сервер слушает только на localhost, чтобы сделать  сервер доступным для всех в сети, включить данную опцию
"let g:instant_markdown_allow_unsafe_content = 1    "разрешить выполнение скриптов
"let g:instant_markdown_allow_external_content = 0    "заблокировать внешние ресурсы, такие как изображения,      таблицы стилей, рамок и плагинов
"let g:instant_markdown_mathjax = 1
"let g:instant_markdown_logfile = '/tmp/instant_markdown.log'
"let g:instant_markdown_autoscroll = 0    "автопереход к местоположению курсора
"let g:instant_markdown_port = 8888    "выбрать другой порт, а не 8090
"let g:instant_markdown_python = 1

"Сочетания клавиш
map  <C-n>  :NERDTreeToggle<CR>
map  <C-m>  :InstantMarkdownPreview<CR>
nnoremap <C-o> :nohl<CR><C-L>    "очистить подсветку поиска и начать новый поиск
"Удобное управление окнами
map <silent> <C-h> :call WinMove('h')<CR>
map <silent> <C-j> :call WinMove('j')<CR>
map <silent> <C-k> :call WinMove('k')<CR>
map <silent> <C-l> :call WinMove('l')<CR>

"Удобное управление окнами
function! WinMove(key)
  let t:curwin = winnr()
  exec "wincmd ".a:key
  if (t:curwin == winnr())
    if (match(a:key,'[jk]'))
      wincmd v
    else
      wincmd s
    endif
    exec "wincmd ".a:key
  endif
endfunction

Еще интересует как задать ширину строк в n-количество символов, к примеру 80 или 100?
Нашел только то, что можно добавить параметр set textwidth=80 для переноса строк, если в строке более 80 символов, но почему-то у меня это не срабатывает.
И почему, как я понял из найденой информации, ширина строки по умоллчанию 80 символов?

Можно ли добавить поддержку зачеркнутого и подчеркнутого текста в Vim? А то жирный и курсив отображаются, а зачеркнутый и подчеркнутый - нет.

Упомяну тот момент, что часто приходится редактировать файлы Markdown (*md) и хотелось бы иметь черную тему оформления с яркой (неоновой) подсветкой синтаксиса именно в этих документах…ну и в других типах файлов тоже не помешает. Пока что так мне так и не удалось найти достойного кандидата в плане тем. Уточню, что тема интересует с черным фоном, т.е. #000000, а не серый, темно-серый и т.д.

Так же был бы рад, если кто-то помог бы с пояснением к параметрам, где этого не хватает.

Kubuntu 18.04 LTS.

user ~ $ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Mar 18 2020 18:29:15)
Заплатки: 1-1453
С изменениями, внесёнными pkg-vim-maintainers@lists.alioth.debian.org
Скомпилирован  pkg-vim-maintainers@lists.alioth.debian.org
Огромная версия без графического интерфейса.  Включённые (+) и отключённые (-) особенности:
+acl               +farsi             +mouse_sgr         -tag_any_white
+arabic            +file_in_path      -mouse_sysmouse    -tcl
+autocmd           +find_in_path      +mouse_urxvt       +termguicolors
-autoservername    +float             +mouse_xterm       +terminal
-balloon_eval      +folding           +multi_byte        +terminfo
+balloon_eval_term -footer            +multi_lang        +termresponse
-browse            +fork()            -mzscheme          +textobjects
++builtin_terms    +gettext           +netbeans_intg     +timers
+byte_offset       -hangul_input      +num64             +title
+channel           +iconv             +packages          -toolbar
+cindent           +insert_expand     +path_extra        +user_commands
-clientserver      +job               -perl              +vertsplit
-clipboard         +jumplist          +persistent_undo   +virtualedit
+cmdline_compl     +keymap            +postscript        +visual
+cmdline_hist      +lambda            +printer           +visualextra
+cmdline_info      +langmap           +profile           +viminfo
+comments          +libcall           -python            +vreplace
+conceal           +linebreak         +python3           +wildignore
+cryptv            +lispindent        +quickfix          +wildmenu
+cscope            +listcmds          +reltime           +windows
+cursorbind        +localmap          +rightleft         +writebackup
+cursorshape       -lua               -ruby              -X11
+dialog_con        +menu              +scrollbind        -xfontset
+diff              +mksession         +signs             -xim
+digraphs          +modify_fname      +smartindent       -xpm
-dnd               +mouse             +startuptime       -xsmp
-ebcdic            -mouseshape        +statusline        -xterm_clipboard
+emacs_tags        +mouse_dec         -sun_workshop      -xterm_save
+eval              +mouse_gpm         +syntax            
+ex_extra          -mouse_jsbterm     +tag_binary        
+extra_search      +mouse_netterm     +tag_old_static    
            общесистемный файл vimrc: "$VIM/vimrc"
         пользовательский файл vimrc: "$HOME/.vimrc"
  второй пользовательский файл vimrc: "~/.vim/vimrc"
          пользовательский файл exrc: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
          значение $VIM по умолчанию: "/usr/share/vim"
Параметры компиляции: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -Wdate-time  -g -O2 -fdebug-prefix-map=/build/vim-dfCUyu/vim-8.0.1453=. -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       
Сборка: gcc   -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim        -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl     -L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu -lpython3.6m -lpthread -ldl -lutil -lm

Можно ли добавить поддержку зачеркнутого и подчеркнутого текста в Vim

Если ты про gvim - то там и так всё должно работать, если про vim - это история про терминал а не про vim. Плюс стоит помнить, что tmux/screen это отдельный терминал поверх терминала, т.е. нужно организовать сиё и для терминала и для tmux.

Для проверки можно использовать такой скриптец:

echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"

pon4ik ★★★★★ ()

Остальные твои вопросы чисто на погуглить имхо. Не ленись.

pon4ik ★★★★★ ()
set ignorecase    "игнорировать регистр в поиске
set smartcase    "переопределить ignorecase, если есть символы в верхнем регистре

ignorecase не имеет смысла, так как smartcase его "обнуляет".

set filetype=markdown

В vimrc? Глобально? Зачем?

map  <C-n>  :NERDTreeToggle<CR>

<C-n> используется вимом.

nnoremap <C-o> :nohl<CR><C-L>    "очистить подсветку поиска и начать новый поиск

<C-o> тоже.

Нашел только то, что можно добавить параметр set textwidth=80 для переноса строк, если в строке более 80 символов, но почему-то у меня это не срабатывает.

Это будет работать только в комментариях и текстовых файлах, ибо влияет на wrapping (то есть "физически" дробит строки, а не визуально). Если бы оно работало с кодом, оно бы его могло ломать.

И почему, как я понял из найденой информации, ширина строки по умоллчанию 80 символов?

Так истерически сложилось. В email вообще 72.

Можно ли добавить поддержку зачеркнутого и подчеркнутого текста в Vim? А то жирный и курсив отображаются, а зачеркнутый и подчеркнутый - нет.

Vim это умеет, но если не умеет терминал, в котором ты запускаешь Vim, то хоть ты обосрись, ничего не получится.

Так же был бы рад, если кто-то помог бы с пояснением к параметрам, где этого не хватает.

Пользоваться встроенной документацией религия не позволяет?

:h 'smarttab'

А если с английским беда, то ты всегда можешь нанять профессионального переводчика.

mord0d ★★★ ()
Ответ на: комментарий от pon4ik
echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"

Да, на все эти команды шрифт отображается как нужно. Но почему же тогда в файлах Markdown (*md) зачеркнутый шрифт не отображается…?
Могу предположить, что нужен какой-то плагин для Vim, чтобы он начал понимать разметку Markdown.

parnyagan ()
Ответ на: комментарий от pon4ik

Не ленись

Это не про меня.
В поисках подходящей цветовой схемы пересмотрел все от и до на сайте
https://vimcolors.com
а там их не много не мало 916 шт. Все что устраивает по подсветке синтаксиса - на сером, темно-сером фоне, все что на черном фоне (как и хотелось бы) - по подсветке синтаксиса не к черту…
На счет «на погуглить»… у меня 3-ий дан по гуглопоиску, черный пояс по вбиванию запросов в поисковую строку :-D
Не задавал бы я вопросов этих, если бы мне удалось найти на них ответы в гугле! Поверьте, за поиск принимался не раз, но бузуспешно.

parnyagan ()
Ответ на: комментарий от parnyagan

Но почему же тогда в файлах Markdown (*md) зачеркнутый шрифт не отображается…?

Потому что у тебя в цветовой схеме это не прописано, очевидно.

Могу предположить, что нужен какой-то плагин для Vim, чтобы он начал понимать разметку Markdown.

Не нужен, Markdown поддерживается искаропки, нужна только человеческая цветовая схема, в которой все групнеймы для Markdown назначены (и назначены как надо).

mord0d ★★★ ()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от parnyagan

На счет «на погуглить»… у меня 3-ий дан по гуглопоиску, черный пояс по вбиванию запросов в поисковую строку :-D

А начинать надо было с :h {group-name}. ☺

Ну и конечно подсмотреть эти групнеймы в /usr/share/vim/vim82/syntax/markdown.vim (начиная со строки 121).

mord0d ★★★ ()
Ответ на: комментарий от mord0d

ignorecase не имеет смысла, так как smartcase его «обнуляет».

Вот, вот это уже дело…

set filetype=markdown
В vimrc? Глобально? Зачем?

А как нужно? Просто часто редактирую файлы данного типа, поэтому и думал, что эта надстройка необходима в vimrc.

map <C-n> :NERDTreeToggle<CR>
<C-n> используется вимом. nnoremap <C-o> :nohl<CR><C-L> "очистить подсветку поиска и начать новый поиск
<C-o> тоже.

Да судя по туториалу в Vim вообще нет такого действия, которое нельзя было бы в нем осуществить с помощью определенного сочетания клавиш. :-D
Если эти мапы назначить на C-S-n и C-S-o соответственно, то пересечения с дефолтными маппингами не будет?

Нашел только то, что можно добавить параметр set textwidth=80 для переноса строк, если в строке более 80 символов, но почему- то у меня это не срабатывает.

Это будет работать только в комментариях и текстовых файлах, ибо влияет на wrapping (то есть «физически» дробит строки, а не визуально). Если бы оно работало с кодом, оно бы его могло ломать.

Хм… спасибо, что-то сразу об этом я и не подумал…

Так истерически сложилось

исторически ;-)
Хотя истеричеси тоже имеет свой шанс на существование. :-D

Можно ли добавить поддержку зачеркнутого и подчеркнутого текста в Vim? А то жирный и курсив отображаются, а зачеркнутый и подчеркнутый - нет.

Vim это умеет, но если не умеет терминал, в котором ты запускаешь Vim, то хоть ты обосрись, ничего не получится.

Как видно из команд, которые посоветовал @pon4ik

echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"

Konsole, которой я пользуюсь в качестве эмулятора терминала, умеет отображать все эти начертания шрифтов.
Но тем не менее при редактировании все тех же файлов Markdown (*md) зачеркнутый шрифт не отображается как зачеркнутый. В разметке Markdown это делается заключением нужного текста в ~~двойными тильдами~~.

Пользоваться встроенной документацией религия не позволяет?

Никак нет, скорее недостаточная степень знаний. Учусь, стараюсь. :-)

parnyagan ()
Ответ на: комментарий от mord0d

Потому что у тебя в цветовой схеме это не прописано

Вот, наконец-то все возвращается на места своя…
Именно с того я и начинал тему, где был задан вопрос о поиске цветовой схемы с черным фоном и полной поддержкой синтаксиса, в том числе и Markdown.

parnyagan ()
Ответ на: комментарий от parnyagan

А как нужно? Просто часто редактирую файлы данного типа, поэтому и думал, что эта надстройка необходима в vimrc.

Vim сам умеет определять тип файла по модлайну, расширению или контенту (именно в таком порядке).

Если некорректно определяется — пиши модлайн. Для M↓ это выглядит так:

<!--
vim: ft=markdown
-->

Прописывается либо в начале файла, либо в конце.

Да судя по туториалу в Vim вообще нет такого действия, которое нельзя было бы в нем осуществить с помощью определенного сочетания клавиш. :-D

Есть такое. Но я ведь не говорил, что так делать нельзя. Не пользуешься фичей — можно и перемапить её хоткей.

C-S-n и C-S-o

С Shift и Alt лучше не связывайся, так как при смене терминала оно с некоторой долей вероятности работать перестанет.

Если хочешь бесконфликтно (хотя и тут может всплыть пересечение с плагинами), то :h mapleader.

исторически ;-)

Судя по спорам, доходящим до истерики, ведущимися до сих пор, всё же истерически. (%

Konsole, которой я пользуюсь в качестве эмулятора терминала, умеет отображать все эти начертания шрифтов.

Значит дело в цветовой схеме, где все возможности не реализованы (ибо не все эмуляторы терминала умеют, и которые не умеют, превратят вывод в ад).

Кстати, официально Markdown подчёркивание (underline) не поддерживает.

Но тем не менее при редактировании все тех же файлов Markdown (*md) зачеркнутый шрифт не отображается как зачеркнутый. В разметке Markdown это делается заключением нужного текста в ~~двойными тильдами~~.

Это не поддерживается ни искаробочным markdown.vim, ни даже этим плагином.

Из чего следует, что прежде чем дописывать цветовую схему, нужно также дописать файл подсветки синтаксиса.

mord0d ★★★ ()
Ответ на: комментарий от parnyagan

Именно с того я и начинал тему, где был задан вопрос о поиске цветовой схемы с черным фоном и полной поддержкой синтаксиса, в том числе и Markdown.

Тут я тебе вряд ли чем-нибудь помогу, у меня своя цветовая схема уже много лет, потому я не в теме что сейчас есть и что оно может.

mord0d ★★★ ()
Ответ на: комментарий от parnyagan

Ну у меня тоже не рисуется в подсветке маркдауна текст другим начертанием, только цветом выделяется. Возможно ты про что-то в этом духе думаешь?

pon4ik ★★★★★ ()
Последнее исправление: pon4ik (всего исправлений: 1)
Ответ на: комментарий от pon4ik

Да и зависеть и цвет и шрифт будут в первую очередь от цветовой схемы, и в той же default для терминала 100% не будет ни подчёркиваний ни курсива.

pon4ik ★★★★★ ()

retab "переопределить все TAB’ы в файле в соответситвии с установленными параметрами

Это не должно быть в vimrc - это команда, которую ты вызываешь для определенного типа файлов, даже не знаю как оно работает, если так прописано, где оно ретабает? Твой vimrc, [No Name] баффер? Если хочешь для всех использовать открываемых файлов использовать автоматически, то что-то типа этого должно быть:

augroup Retab
  autocmd FilyType * retab
augroup END

Ну или BufNewEnter,BufRead…, чтобы и бафферы без типов файлов ретабались. Но смысл? Легче запустить в нужном файле :retab

Тоже самое и set filetype=markdown и set syntax=markdown. Во-первых, если ты присваиваешь бафферу filetype, то он автоматически и синтаксис от этого типа файла подтягивает. Но зачем это в vimrc, чтобы [No Name] первый баффер (открываем при команде vim) был с этим типом файла? Не легче сразу сохранить файл, если он тебе нужен и оно тебе автоматом выставит нужный тип файла и синтаксис.

set t_Co=256

set termguicolors

По-моему это обратно заменяемые вещи. Первая ограничивает цвета в 256, а вторая в 24-bit (то есть в миллионы цветов == gui цветам в colorscheme).

au BufNewFile,BufRead .markdown,.mdown,.mkd,.mkdn,.mdwn,.md set ft=markdown

Оформи в augroup, как у меня выше. :h autocmd-groups если хочешь понять что это.

StillSteal ()
Последнее исправление: StillSteal (всего исправлений: 1)

Еще интересует как задать ширину строк в n-количество символов, к примеру 80 или 100? Нашел только то, что можно добавить параметр set textwidth=80 для переноса строк, если в строке более 80 символов, но почему-то у меня это не срабатывает. И почему, как я понял из найденой информации, ширина строки по умоллчанию 80 символов?

:h formatoptions :h fo-table :h formatexpr :h gq

80 - потому что старые мониторы (терминалы) были 80 символов в ширину. Но и сейчас много где максимум 80 символов в ширину прописано в гайдлайнах или по крайней мере хороший тон. Ну и вроде уже часто до 120 расширяют в неторых проектах. Просто легче по коду пробегаться, когда он уже. В markdown файлах это явно лишнее.

StillSteal ()
Последнее исправление: StillSteal (всего исправлений: 3)
Ответ на: комментарий от mord0d

ignorecase не имеет смысла, так как smartcase его «обнуляет»

@mord0d, все же вернул smartcase на место, т.к. для меня такой метод поиска более правильный удобный. Т.е. возьмем к примеру строку
TAB & tab
Если я ввожу в поиске tab, то он мне подсветит
TAB & tab
Если я ввожу в поиске TAB, то он мне подсветит
TAB & tab
Т.е. если ввод производится символами в нижнем регистре, то поиск отображает и нижний и верхний регистр.
Если ввод производится символами в верхнем регистре, то поиск отображает результаты с учетом регистра.
ИМХО так логичнее…

parnyagan ()
Ответ на: комментарий от parnyagan

все же вернул smartcase на место, т.к. для меня такой метод поиска более правильный удобный.

Наверное я криво выразился. При использовании smartcase можно убрать из конфига ignorecase, так как они взаимоисключающие и smartcase имеет больший приоритет.

mord0d ★★★ ()
Ответ на: комментарий от StillSteal

@StillSteal

retab "переопределить все TAB’ы в файле в соответситвии с установленными параметрами

Это не должно быть в vimrc

Ок, понял.
Может вы тогда и подскажете мне, как «донастроить» поведение TAB’ов?
Интересует такой момент. Если я ставлю TAB, а затем перехожу в его начало и удаляю его через DEL, то он удаляется по 1-му символу. Если я нахожусь в конце TAB’а и удаляю его через BACKSPACE, то он удаляется сразу, а не по символам. Вопрос в том, как сделать так, чтобы через BACKSPACE он удалялся так же по 1-му символу?

Твой vimrc, [No Name] баффер?

Сорри, не владею «подходящим жаргоном»… По-русски можно?

set filetype=markdown и set syntax=markdown. Во-первых, если ты присваиваешь бафферу filetype, то он автоматически и синтаксис от этого типа файла подтягивает. Но зачем это в vimrc, чтобы [No Name] первый баффер (открываем при команде vim) был с этим типом файла? Не легче сразу сохранить файл, если он тебе нужен и оно тебе автоматом выставит нужный тип файла и синтаксис.

Т.е. я правильно вас понял, что данные строки можно удалить из моего vimrc и выбор типа файла, и синтаксис будут подтягиваться автоматически, если я создаю новый файл?

set t_Co=256

set termguicolors

По-моему это обратно заменяемые вещи. Первая ограничивает цвета в 256, а вторая в 24-bit (то есть в миллионы цветов == gui цветам в colorscheme).

Уже избавился от этих настроек. Полностью переделал оформление.
Чуть позже выложу как, покажу результат и выскажу свое мнение.

au BufNewFile,BufRead .markdown,.mdown,.mkd,.mkdn,.mdwn,.md set ft=markdown

Оформи в augroup, как у меня выше.

augroup Retab
  autocmd FilyType * au BufNewFile,BufRead .markdown,.mdown,.mkd,.mkdn,.mdwn,.md set ft=markdown
augroup END

Так?
И за что эта настройка вообще отвечает? Я где-то на просторах инета ее выцепил, даже не помню… Составляю vimrc сам с нуля.

parnyagan ()
Ответ на: комментарий от mord0d

При использовании smartcase можно убрать из конфига ignorecase, так как они взаимоисключающие и smartcase имеет больший приоритет

Неа, нифига не прокатывает… если убираю ignorecase, то при осуществлении поиска в нижнем регистре он не ищет слова в верхнем регистре, возвращаю ignorecase на место - все норм, при поиске в нижнем регистре он ищет слова как в нижнем, так и в верхнем регистре.

parnyagan ()
Ответ на: комментарий от StillSteal

:h formatoptions :h fo-table :h formatexpr :h gq

Английским не владею, во всяком случае в степени свободного чтения. А если транслитом переводить, то когда читаешь перевод - складывается такое ощущение, что бредишь…

parnyagan ()
Ответ на: комментарий от parnyagan

Неа, нифига не прокатывает… если убираю ignorecase, то при осуществлении поиска в нижнем регистре он не ищет слова в верхнем регистре, возвращаю ignorecase на место - все норм, при поиске в нижнем регистре он ищет слова как в нижнем, так и в верхнем регистре.

У меня работает и без (может какой-то из плагинов включает). Но документация подтверждает твои слова:

‘ignorecase’:
If the ‘ignorecase’ option is on, the case of normal letters is ignored. ‘smartcase’ can be set to ignore case when the pattern contains lowercase letters only.

‘smartcase’:
Override the ‘ignorecase’ option if the search pattern contains upper case characters. Only used when the search pattern is typed and ‘ignorecase’ option is on.

mord0d ★★★ ()

Быстрое перемещение по коду: 'easymotion/vim-easymotion'

Работа с буферами: 'jeetsukumaran/vim-buffergator'

Если работаешь в команде: 'editorconfig/editorconfig-vim'

Руковыпрямитель: 'takac/vim-hardtime'

Vi в input/textarea браузера: http://appsweets.net/wasavi/

lead_bro ()
Последнее исправление: lead_bro (всего исправлений: 2)
Ответ на: комментарий от parnyagan

Ну будет сложно тогда с вимом. Потому что в его помощи много полезной информации.

Если коротко, если :set formatoptions?(локальная для баффера опция) выдает ключ t как один из множества ключей в нем (если не выдает, то надо добавить для данного типа файла этот ключ set formatoptions+=t), то глобальная опция textwidth должна работать для любого нового вводимого текста (но не для уже имеющегося в файле, об этом позже), как только количество символов в строке превышает ту, что в textwidth автоматически переносится текст деля текст на первом не WORD символе (пробеле, табе и т.д.). Чтобы уже введенный текст отформатировать, надо использовать форматер для данного типа файла, все что тебе сейчас надо знать - это то что команда в normal mode gggqG отформатирует весь файл. Но вообще лучше этим не пользоваться, ибо для многих языков программирования есть и линтеры и форматеры и лучше пользоваться ими.

augroup Retab

autocmd FilyType * au BufNewFile,BufRead .markdown,.mdown,.mkd,.mkdn,.mdwn,.md set ft=markdown

augroup END

augroup ИмяАугрупа - имя аугрупа должно быть уникально, поэтому двух augroup Retab у тебя не должно быть, а так да. А эта команда присваивает всем создаваемым или открываемым файлам с расширениями, которые перечислены тип файла markdown. По-моему все нужные расширения и так перечислены в сборке вима. Ну уверен что кто-то пользуется такими как .mdwn .mdown и так далее. Ну пожешь оставить конечно.

Т.е. я правильно вас понял, что данные строки можно удалить из моего vimrc и выбор типа файла, и синтаксис будут подтягиваться автоматически, если я создаю новый файл?

Да. Если сохранить текущий файл как к примеру :w some_name.md, то тип файла и соответсвенно синтаксис автоматом станут для markdown файлов.

Интересует такой момент. Если я ставлю TAB, а затем перехожу в его начало и удаляю его через DEL, то он удаляется по 1-му символу. Если я нахожусь в конце TAB’а и удаляю его через BACKSPACE, то он удаляется сразу, а не по символам. Вопрос в том, как сделать так, чтобы через BACKSPACE он удалялся так же по 1-му символу?

Не уверен, что это возможно. Но если тебе надо удалять или добавлять табы в начале строки, то тебе не надо на них переключаться и удалять. В нормал моде << - уменьшает отступ на один таб, и соответсвенно >> - увеличивает. В инсерт моде Ctrl-t и Ctrl-d делают тоже самое. А если ты используешь табы, где-то внутри строки, чтобы там выравнять некоторые строки, то для этого существуют удобные плагины по типу https://github.com/junegunn/vim-easy-align но без знаний английского я не думаю, что сможешь разобраться как с ним работать.

StillSteal ()
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от mord0d

У меня еще вопрос по set: number появился. По умолчанию при копипасте текста копируются так же цифты из столбца нумерации строк (если он включен). Естественно их копирование и вставка не входит в планы при выполнении этих действий. В хэлпе нашел информацию, что можно избавиться от этого путем исключения этого столбца нумерации строк при помощи исключения его из cpoptions'. В хелпеcpoptionsнашел информацию, что нужно добавить флагn, но ни слова нет о синтаксисе команды. Как исключить столбец нумерации строк при помощиcpoptions`?
Или может есть другой способ, более доступный?

parnyagan ()
Ответ на: комментарий от parnyagan

Впервые слышу, что при копировании копируются цифры. Как ты их копируешь, что выдает команда :set cpoptions?

StillSteal ()
Ответ на: комментарий от parnyagan

По умолчанию при копипасте текста копируются так же цифты из столбца нумерации строк (если он включен).

Копируй средствами Vim, а не средствами терминала, в котором он запущен.

Или может есть другой способ, более доступный?

:h 'clipboard'

Я только недавно с NeoVim вернулся, там для этого нужен был костыль с пайпом в xclip/xsel. В Vim должно просто работать, если он смог определить, что ты работаешь в графической (иксовой) сессии.

mord0d ★★★ ()
Ответ на: комментарий от StillSteal

Впервые слышу, что при копировании копируются цифры.

Зажми Shift и мышью выдели кусок (где-нибудь в статуслайне, таблайне или ещё где), наверное это тебя удивит. ☺

mord0d ★★★ ()
Ответ на: комментарий от mord0d

В виме для этого должна быть поддержка clipboard

vim --version должен выдать +clipboard, если нет, то самому собирать или искать в репах дистра с поддержкой.

StillSteal ()
Ответ на: комментарий от StillSteal

мышью ведели

Ясно.

Щито поделать, не все ж в Vim из ed пришли. ☺

должен выдать +clipboard

Неа, +xterm_clipboard.

И об этом в :h 'clipboard' написано.

если нет, то самому собирать или искать в репах дистра с поддержкой

Или установить gvim (конечно, если это не Debian, где с gvim не идёт vim).

mord0d ★★★ ()
Ответ на: комментарий от mord0d

Не знаю о чем ты, но для поддержки "+ нужен именно clipboard, а не xterm_clipboard.

StillSteal ()
Ответ на: комментарий от StillSteal

Не знаю о чем ты

Ну так открой :h 'clipboard' и прочитай первый абзац:

{only in GUI versions or when the |+xterm_clipboard| feature is included}

mord0d ★★★ ()
Ответ на: комментарий от mord0d

То есть ты автору предлагаешь любой копируемый/удаляемый текст, который в виме происходит каждые две секунды и помещается в аннеймед регистр помещать в клипбоард системы? Зачем это? Для того, чтобы копировать в/из системный клипбоард существует "+ - этого достаточно и для этого необходим +clipboard.

StillSteal ()
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от StillSteal

Причём здесь "+? Это вообще отдельная тема — в какой регистр копировать.

Начни с :h x11-selection.

А раз тебе так дался выбор регистра, то обрати внимание на третий абзац после x11-cut-buffer и Note за ним.

mord0d ★★★ ()
Ответ на: комментарий от mord0d

Короче ясно. Иди дальше smartcase и ignorecase выставляй.

https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim - первый ответ.

https://vim.fandom.com/wiki/Accessing_the_system_clipboard - раздел Checking for X11-clipboard support in terminal

Но ты дальше ничего сам не пробуй, но рассказывай как надо.

StillSteal ()
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от StillSteal

Впервые слышу, что при копировании копируются цифры. Как ты их копируешь, что выдает команда :set cpoptions?

Это происходит при копировании мышью, как уже упомянул @mord0d

parnyagan ()
Ответ на: комментарий от mord0d

:h 'clipboard'

Я уже смотрел этот хелп, о чем и писал выше.
Не удалось разобраться с синтаксисом, т.к. о нем там ни слова.
Там говорится о том, что нужно добавить n к опции cpoptions.
Я пробовал добавить в vimrc разными способами, а именно:
set cpoptions-n
set cpoptions+n
set cpoptions=n
set cpoptions-'n'
set cpoptions+'n'
set cpoptions='n'
Но ничего хорошего из этого не вышло…

parnyagan ()
Ответ на: комментарий от mord0d

Копируй средствами Vim

Есил имеется ввиду копирование через «Визуальный режим», то таким методом скопированный текст можно вставить только в Vim. А если мне нужно вставить скопированный текст в другое приложение, то тут такой метод не подходит.
Можно сделать проще, чтобы не заморачиваться с cpoptions, можно замапить показ и скрытие столбца нумерации строк, к примеру

map  <C-n>  :number  <CR>
            :nonumber

но можно ли как то это замапить на одну кнопку? Чтобы один раз нажал - строка нумерации появилась, нажал еще раз - строка нумерации скрылась?

parnyagan ()
Ответ на: комментарий от parnyagan

но можно ли как то это замапить на одну кнопку? Чтобы один раз нажал - строка нумерации появилась, нажал еще раз - строка нумерации скрылась?

nnoremap yob :set nu!<CR>

Ремапить C-n не очень хорошая идея.

Копировать лучше средствами vim, если сможешь настроить, конечно.

habamax ★★ ()
Последнее исправление: habamax (всего исправлений: 1)
Ответ на: комментарий от parnyagan

Есил имеется ввиду копирование через «Визуальный режим», то таким методом скопированный текст можно вставить только в Vim. А если мне нужно вставить скопированный текст в другое приложение, то тут такой метод не подходит

Я понимаю, если ты говоришь про машину, которую не контролируешь – ssh там, или чужая система. Но свой собственный вим можно наверно приготовить нормально? Если лень компилировать самому, поставь самый жирный вим – в нем в 99.9% есть поддержка clipboard.

И у тебя будет как минимум 2 варианта:

set clipboard=unnamed

тогда любой твой чих (копирование, удаление) будет автоматом отражаться в системном клипбоарде.

Или пользуйся регистрами напрямую: "*y скопировать в системный, "*p вставить из системного.

PS, vim-huge или как он там – не самый жирный, ставь с поддержкой gtk – в нем clipboard точно включен.

habamax ★★ ()
Последнее исправление: habamax (всего исправлений: 1)
Ответ на: комментарий от habamax

Ну а как самую полную версию Vim поставить?
Вот что выдает из «ассортимента»

user ~ $ sudo apt install vim
vim                 vim-common          vim-gui-common      vim-python-jedi     vim-tiny
vim-addon-manager   vim-conque          vim-haproxy         vim-rails           vim-tjp
vim-addon-mw-utils  vim-ctrlp           vim-icinga2         vim-runtime         vim-tlib
vim-airline         vim-doc             vim-khuno           vim-scripts         vim-ultisnips
vim-airline-themes  vim-editorconfig    vim-lastplace       vim-snipmate        vim-vimerl
vim-asciidoc        vim-fugitive        vim-latexsuite      vim-snippets        vim-vimerl-syntax
vim-athena          vim-gnome           vim-ledger          vim-syntastic       vim-vimoutliner
vim-autopep8        vim-gocomplete      vim-migemo          vim-syntax-docker   vim-voom
vim-bitbake         vim-gtk             vim-nox             vim-syntax-gtk      vim-youcompleteme
vim-command-t       vim-gtk3            vim-pathogen        vim-tabular
parnyagan ()
Ответ на: комментарий от parnyagan

Есил имеется ввиду копирование через «Визуальный режим», то таким методом скопированный текст можно вставить только в Vim. А если мне нужно вставить скопированный текст в другое приложение, то тут такой метод не подходит.

Ты прежде чем придумывать велосипеды можно ли как то это замапить на одну кнопку? Чтобы один раз нажал - строка нумерации появилась, нажал еще раз - строка нумерации скрылась? удосужься спросить «А можно ли в виме копировать в системный клипбоард?», а не утверждать, что это нельзя и выдумывать себе мнимые проблемы и их решения, пользуясь вимом 5 минут. Тебе уже несколько раз сказали, как проверить есть ли у тебя поддержка clipboard и что и как копировать в и из него.

На тебе твой велосипед

nnoremap ТУТТВОЯКЛАВИША :set <C-R>=&number ? 'nonumber' : 'number'<CR><CR>
StillSteal ()
Последнее исправление: StillSteal (всего исправлений: 1)
Ответ на: комментарий от parnyagan

Хз че там в этих убунтах, но vim-gtk или vim-gtk3 по идее должны иметь поддержку clipboard. И еще раз проверь что тебе выдает vim --version

StillSteal ()
Ответ на: комментарий от StillSteal

а не утверждать, что это нельзя

А ну-ка ссылочку в студию на мое утверждение!

parnyagan ()
Ответ на: комментарий от habamax
user ~ $ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Mar 18 2020 18:29:15)
Заплатки: 1-1453
С изменениями, внесёнными pkg-vim-maintainers@lists.alioth.debian.org
Скомпилирован  pkg-vim-maintainers@lists.alioth.debian.org
Огромная версия с GTK3 GUI.  Включённые (+) и отключённые (-) особенности:
+acl               +farsi             +mouse_sgr         -tag_any_white
+arabic            +file_in_path      -mouse_sysmouse    +tcl
+autocmd           +find_in_path      +mouse_urxvt       +termguicolors
-autoservername    +float             +mouse_xterm       +terminal
+balloon_eval      +folding           +multi_byte        +terminfo
+balloon_eval_term -footer            +multi_lang        +termresponse
+browse            +fork()            -mzscheme          +textobjects
++builtin_terms    +gettext           +netbeans_intg     +timers
+byte_offset       -hangul_input      +num64             +title
+channel           +iconv             +packages          +toolbar
+cindent           +insert_expand     +path_extra        +user_commands
+clientserver      +job               +perl              +vertsplit
+clipboard         +jumplist          +persistent_undo   +virtualedit
+cmdline_compl     +keymap            +postscript        +visual
+cmdline_hist      +lambda            +printer           +visualextra
+cmdline_info      +langmap           +profile           +viminfo
+comments          +libcall           -python            +vreplace
+conceal           +linebreak         +python3           +wildignore
+cryptv            +lispindent        +quickfix          +wildmenu
+cscope            +listcmds          +reltime           +windows
+cursorbind        +localmap          +rightleft         +writebackup
+cursorshape       +lua               -ruby              +X11
+dialog_con_gui    +menu              +scrollbind        -xfontset
+diff              +mksession         +signs             +xim
+digraphs          +modify_fname      +smartindent       +xpm
+dnd               +mouse             +startuptime       +xsmp_interact
-ebcdic            +mouseshape        +statusline        +xterm_clipboard
+emacs_tags        +mouse_dec         -sun_workshop      -xterm_save
+eval              +mouse_gpm         +syntax            
+ex_extra          -mouse_jsbterm     +tag_binary        
+extra_search      +mouse_netterm     +tag_old_static    
            общесистемный файл vimrc: "$VIM/vimrc"
         пользовательский файл vimrc: "$HOME/.vimrc"
  второй пользовательский файл vimrc: "~/.vim/vimrc"
          пользовательский файл exrc: "$HOME/.exrc"
           общесистемный файл gvimrc: "$VIM/gvimrc"
        пользовательский файл gvimrc: "$HOME/.gvimrc"
 второй пользовательский файл gvimrc: "~/.vim/gvimrc
"
       defaults file: "$VIMRUNTIME/defaults.vim"
             общесистемный файл меню: "
$VIMRUNTIME/menu.vim"
          значение $VIM по умолчанию: "/usr/share/vim"
Параметры компиляции: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wdate-time  -g -O2 -fdebug-prefix-map=/build/vim-dfCUyu/vim-8.0.1453=. -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       
Сборка: gcc   -Wl,-E  -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim   -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/x86_64-linux-gnu/perl/5.26/CORE -lperl -ldl -lm -lpthread -lcrypt  -L/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu -lpython3.6m -lpthread -ldl -lutil -lm -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm

В vimrc строка set clipboard=unnamed добавлена, но все равно при выделении текста в «Визуальном режиме», копировании с помощью клавиши y и попытке вставить в другое приложение, вставка не происходит!

parnyagan ()
Ответ на: комментарий от parnyagan

В vimrc строка set clipboard=unnamed добавлена, но все равно при выделении текста в «Визуальном режиме», копировании с помощью клавиши y и попытке вставить в другое приложение, вставка не происходит!

  1. скопируй текст с y, покажи выхлоп :reg

  2. скопируй текст с "*y, покажи выхлоп :reg

  3. скопируй текст с "+y, покажи выхлоп :reg

habamax ★★ ()
Последнее исправление: habamax (всего исправлений: 1)
Ограничение на отправку комментариев: только для зарегистрированных пользователей