Pull to refresh

Comments 72

А вот, например, «:read !cat file» чем-либо лучше, чем просто «:r file», кроме того, что курсор в начале оставляет?
ничем =)
я думаю все будет зависит от ситуации, когда где положение курсора вам будет удобней

ps кстати по :r file не знал спасибо =)
":read !cat filename" действительно не имеет смысла.
Есть команды ":read filename" - для вставки после курсора и ":0read filename" - до курсора.
(или их короткий вариант: ":r filename", ":0r filename"
:0read это не перед курсором, а в начало файла. Чтобы прочитать перед курсором надо делать :-1read
Вау, вот это подборочка!
Однозначно в избранное!

У меня про vim тоже кое-что интересное есть, но даже на личный блог кармы нехватает - помогите, кому не жалко, пожалуйста.
на такое дело конечно поможем))
Спасибо!
И еще раз спасибо за подборку.
А вот кстати тогда вопрос сходу, раз уж на то пошло:
От открытой скобки к закрытой можно с помощью shift+% прыгать, а вот можно ли как-нибудь подобное с xml-тегами вытварять?
На счет последнего, вставка и nnoremap чего-то я не догнал - автоматически 2-ю скобку вставляет? Как то у меня не получилось...
попробуйте вот так
:nnoremap < Esc > P P'[v']=

почему-то хабрахабр съедает <, > несмотрят на то что я пишу их как & l t ; и & g t ;
(кто не верит - могу привести пример)

>а вот можно ли как-нибудь подобное с xml-тегами вытварять?
не работал с xml, но посмотрю
на хабре надо не & l t ; и & g t ; юзать, а & #60; и & #62; =)
Спасибо, многих вещей не знал! :)

От себя пять копеек. В виме классно работать с табами, но по умолчанию к ним не привязано никаких удобных хоткеев. Я сделал F6/F7 и Ctrl-Right/Ctrl-Left, вот кусок из конфига:


function My_next_file()
    if v:version >= 700
        tabn
    else
        bn
    endif
endfunction

function My_prev_file()
    if v:version >= 700
        tabp
    else
        bp
    endif
endfunction

imap <silent><F6> <esc>:call My_prev_file()<cr>i
imap <silent><F7> <esc>:call My_next_file()<cr>i
nmap <silent><F6> :call My_prev_file()<cr>
nmap <silent><F7> :call My_next_file()<cr>

nmap <silent><C-Left> <F6>
nmap <silent><C-Right> <F7>




Еще нравится команда gf - открыть файл, имя которого находится под курсором. Чтобы вим открывал файл в новом табе, можно написать вот так:map gf :tabe <cfile><CR>
Назначать действия на стрелки и F1-F12 - не самая лучшая идея.
Одно из преимуществ Vim в том, что не приходится убирать пальцы с "основной позиции для слепой печати".
Лучше назначать действия на комбинацию близких клавиш.
Читай ":help &#60Leader&#62"

Кстати:
Стандартное сочетание для смены табов - gt(вперёд) и gT(надад) - достаточно удобны
Зато не приходится переходить в командный режим! Ctrl-O g t - это ж четыре клавиши вместо одной, кроме того Ctrl-O часто бывает занят mc.

Но, как я уже сказал, у меня есть еще привязка на сочетание Ctrl + стрелки. Поэтому клавишами F6-F7 я пользуюсь только в режиме вставки и то иногда.
Судя по всему, вы используете Vim, как блокнот - стараетесь не выходить из режима вставки.
Основной режим в Vim - командный. Зачем нажимать Ctrl-O? Нажимайте Esc! Не нужно превращать Vim в Emacs!
Зачем переходить в другую вкладку не выходя из режима вставки? Режим вставки нужен только для вставки текста! :)
Не, вовсе не как блокнот. Дело в том, что мне достаточно часто приходится писать текст, подглядывая на другой файлик из соседней вкладки (какой-нибудь h-ник, например).

Кроме того, gt удобно использовать для перехода на одну вкладку влево, а как вы себе представляете переход на три вкладки? Мне тяжело дается повторение одних и тех же сочетаний, ситуацию усугубляет еще и то, что g и t нажимаются одним пальцем. Нет, это определенно изврат.
Дело в том, что мне достаточно часто приходится писать текст, подглядывая на другой файлик из соседней вкладки (какой-нибудь h-ник, например).
В этом случае удобнее сделать :split, как мне кажется.
Для перехода на конкретную вкладку используйте:
gt{номер вкладки}.
gt5 - на пятую вкладку.

Чтобы видеть номера вкладок, воспользуйтесь статьёй http://habrahabr.ru/blog/vim/46911.html.

Да, и пользуйтесь :split/:vsplit.
:tabe вроде бы не ищет файлы в path и не использует suffixesadd. Так что лучше применить стандартные <C-W>gf
:tabe не ищет, ищет :tabf
Я имею в виду, что, если хочется переопределить gf для открытия в новом табе, то лучше
:noremap gf <C-W>gf
автору спасибо, ждем когда же будет разбираться ~/.vimrc
спасибо, в скором будущем обязательно разберем
если честно - мне кажеться очень важны комметарии людей которые уже давно используют вим в разработке, как правило такие люди говорят мало (мое личное наблюдение), но когда говорят - попадают в точку =)

ps и возможно мне следует писать немного по другому....
Вы бы иностранный язык в заголовке исправили. А лучше убрали бы вовсе.
А можно статью про вим для чайников? =) Про самые-самые основы, какие-нить фишки к которым лучше привыкнуть сразу. В общем чтобы чайник вошел в правильное русло. Лично я был бы крайне благодарен =)
1. Запускаете vim
2. Нажимаете :help<ввод>
3. Втыкаете до позеленения :)

На самом деле единственная основа это наличие трёх режимов (командный, редактирующий и навигационный), что всегда в навигационный можно попасть через [ Esc ], в командный через ":", а начать писать обычно можно через "i". Для чайников командный редко нужен, разве чтобы выйти без сохранения (":q!"), а c сохранением прямо из навигационного можно по "ZZ".
о, сенкс. Основная проблема это в самом начале работы, когда оно запукается, а че куда жать, даже самое примитивное - непонятно нифига =). Посему пока юзаю нано, но как-то несолидно =), ну и не везде он установлен, а vi/vim — классика =)
Был невнимателен, уже читаю предыдущую статью =)
С ним поставляется отличная встроенная обучалка для чайников.
vimtutor
начиная с версии 7, она встроенная
Поддерживаю! Проверяйте орфографию перед тем как запостить статью. Прочитал первый абзац, читать дальше желание пропало.
Ёмаё, сколько лет использую vim, а всё время узнаю что-то новое. Конкретно спасибо за команды работы с визуальным режимом.
Добавлю что-нить от себя:
function! CMode()
imap { {}O
imap < <>
imap #m int main(int argc, char* argv[]){
iabbrev #d #define
iabbrev #i #include
set tags+=~/.cache/systags
endfunction

function! PyMode()
set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
iabbrev imp import
endfunction

au FileType c call CMode()
au FileType cpp call CMode()
au FileType python call PyMode()

Включает дополнительные настройки для C/C++ и Python исходников.

inoremap pumvisible() ? "\" : "\u\

Позволяет выбирать ентером варианта предложенные C-n
Блин, скобки некоторые съелись :/
ой... ужас какой.. попробуйте http://www.vim.org/scripts/script.php?script_id=1318 для сниппетов
снипеты поравились но и без них хорошо
Хорошая статья:) Вообще, если тут есть гуру в vim, хотелось бы рассмотреть вопросы возможности использования этого редактора как stand-alone ide для Java (навигация по коду, автодополнение и все прочее, что есть в современных средах разработки)... Использовал когда-то давно vim как среду разработки для C++ было очень приятно.
UFO just landed and posted this here
Расскажите как открыть несколько файлов и все их редактировать, переключаться между ними и т.п....
Я все время забываю.
Чтобы открыть несколько файлов в разных табах(вкладках):
$ vim -p file1 file2 file3 ...
для windows-версии VIM всё вышесказанное справедливо?

имеет ли смысл попробовать vim под win? :) и какие версии есть нормальные?
Да, конечно справедливо. http://www.vim.org/download.php#pc на странице перечислены все доступные сборки для windows.
В Vim под Win возможны небольшие отличия в поведении (подробнее читать в :h :behave и :h mswin.vim), но можно настроить так, чтобы отличий не было вовсе. Ну а пробовать обязательно имеет смысл :) Пользуйтесь gVim и знайте — шрифт по-умолчанию можно (и нужно) поменять (Edit->Select Font... или прямо из gVim :set guifont=*). Чтобы не менять каждый раз можно потом любимый шрифт в _gvimrc прописать.
спасибо :) окунусь в мир консольного shortcut-fighting'а =)
Прошу добавить во вторую часть работу с кодировками. Как-то оно не совсем понятно. :)
Incredible tips.
А саму статью ещё не читал, но буду.
Спасибо, любопытная статья.

PS. Может пропустить её через спеллчекер? ;) Ошибок немало, есть даже в командах.
Надо поменять хотя бы CRTL на CTRL, убрать &rt; и тому подобную чистку сделать. Реально тяжело читать.
:earler Ns,m,h - вернуть содержание файла, которое было s,m,h "time" спустя // наверное, всё же "назад", так как "спустя" - это, как правило, потом (ср. "Мушкетёры 20 лет спустя").

Больше замечаний нет.
На всякий случай сообщаю, что global $db; на $db = Database::get(); удобнее заменять через

:bufdo %s#global $db;#$db = Database::get();#|wn

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

А ещё в последнем абзаце статьи на самом деле говорится о том, что в Vim с седьмой версии запоминаются ВСЕ изменения файла, сделанные в течение сессии, и если вы отменили одно изменение и начали другое, то первое не потеряется, и вы сможете к нему вернуться через g-. Мегафишка.
я чего-то не понимаю, или тут полезнее sed?
Если он есть, то это, конечно, прекрасно.
Но - то же самое можно сделать из Vim, в скриптах это может быть полезно.
Ну и в винде sed'а нет и использовать его, учитывая заморочки виндовой командной строки - мучение.

Ещё аргумент - поддержка многих кодировок.
Аргументы понятны, но для меня неактуальны. Винды нет, non-ASCII символов в исходниках нет.
спасибо за замечания
>:bufdo %s#global $db;#$db = Database::get();#|wn

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

grep работает и с неоткытимы буферам, поэтому в моем случае удобней был grep

за мега фишку - отельное спасибо, не знал =)
Ну я полагал, что раз рассказали - то знали :) пояснил для читателей, а то не очень понятно было.

Насчет bufdo: если можно список файлов из grep или vimgrep открыть в буферах, то тогда с помощью bufdo можно сделать автоматическую поиск-замену во всез файлах сразу. Пока не знаю, можно ли так открыть файлы из Vim.
UFO just landed and posted this here
Советую прочитать статью создателя Vim'a Брама Моленара "7 навыков/привычек эффективного редактирования текстов":
http://www.moolenaar.net/habits_ru.html
Да. Видео тоже очень приятное!
Sign up to leave a comment.

Articles