LINUX.ORG.RU

Вопросы по Vim

 


0

5

Vim (gvim), конечно крут, но пока что не разобрался с ним полностью. Возникли следующие вопросы:

1. Есть строка:

if (scalar @arr == 0) {

Хочу сделать из нее:

if ((scalar @arr) == 0) {

Для этого перевожу курсор сначала перед scalar (все в insert mode), нажимаю Shift+9 - вставляются скобки () (autocompletion). Удаляю вторую, перевожу курсор после @arr, нажимаю Shift+0 - и он переводит курсор после == 0). Если нажму Shift+0 еще раз, то он уже вставит скобку и строка будет выглядеть так:

if ((scalar @arr == 0)) {

Из-за чего так? Это стандартное поведение или из-за каких-то плагинов (autocompletion или еще какие-нибудь) ?

2. Как сделать удобное copy-paste?
2.1 Как сделать, чтобы при копировании Vim использовал системный буфер?
Выполнил

:set clipboard=unnamed

Если копирую в буфер в другом окне, потом нажимаю p в Vim'е - то все ок. Но если делаю yank в Vim'е, то в системный буфер ничего не попадает.

2.2 Если не использовать системный буфер, то как быстро вставить что-то из другого окна? В чем разница между «+gp и »*p ? Как сделать проще и быстрее?
2.3 В чем разница между :set clipboard=unnamed и :set clipboard+=unnamed?

3. Использую Conque (http://code.google.com/p/conque/). Как сделать так, чтобы в окнах этого Conque'а не было режимов insert, visual и тд - они же там не нужны. Например, открываю эмулятор терминала (:ConqueTermSplit bash). Хочу, чтобы в этом окне был обычный терминал, без всяких там Vim'овских режимов и тд. Можно ли так сделать?

4. Использую Omnicompletion. Как сделать, чтобы было как во всех IDE'шках - пишешь частично слово, нажимаешь, например, Ctrl+Space - и появляется popup-меню с вариантами. А то нажимать каждый раз <C-x><C-o> не очень удобно. Ставил плагин SuperTab - почему-то он не заработал.


Спасибо!

★★★★★

Все ЛОРовцы перешли на емакс? :(

kovrik ★★★★★ ()

Конфиг Vim положи что-ли куда-нибудь... В жизни не видел, чтобы Vim себя так вел. Что касается автодополнения, то я жму Ctrl+N, специально ничего не настраивал.

uuwaan ★★ ()

Как сделать, чтобы при копировании Vim использовал системный буфер?

Использовать системные клавиши копирования?

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

Тогда мышкой. В консоли можно screen заюзать: ^A^[ - выделить, ^A^] - вставить.

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

Ctrl+C/Ctrl+V не работают, vim же)

app-editors/vim-7.3.537 у меня прекрасно работает C-C / C-V для копипасты. Когда столкнешься с проблемой пасты больших кусков, т.е. будет проблема с whitespaces прочее, вот вариант решения:

nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
science ★★☆ ()
Ответ на: комментарий от vahtu

А ещё вроде утилитка есть для работы с системным буфером. Типа выделяешь, потом !<не помню что>

vahtu ()

Omnicompletion

omnicppcomplete?

если плюсы не нужны, то c-support идеально работает, комплит по Tab

science ★★☆ ()

Зачем работать в vim как в обычном текстовом редакторе? От него тогда никакой пользы, одни проблемы.

Для этого перевожу курсор сначала перед scalar (все в insert mode), нажимаю Shift+9 - вставляются скобки () (autocompletion). Удаляю вторую, перевожу курсор после @arr, нажимаю Shift+0 - и он переводит курсор после == 0).

Делай как все нормальные люди: в insert mode - ТОЛЬКО ввод нового текста, все остальное время - normal mode. Никакой autocompletion для парных скобок не нужен - для этого есть surround.vim. Твой сценарий с ним делается простым магическим жестом - '0fsv2t S)', где '0fs' поставит курсор на начало окружаемого скобками фрагмента, 'v2t ' выделит фрагмент, а 'S)' поставит вокруг него скобки.

Если не использовать системный буфер, то как быстро вставить что-то из другого окна?

А обычное выделение мышью и вставка средней кнопкой не подходят? Из известных мне способов копирования между приложениями этот самый быстрый.

Как сделать так, чтобы в окнах этого Conque'а не было режимов insert, visual

Vim в принципе не может поместить полноценный терминал в свое окно, да и не нужно это никому. Подобные плагины для того и сделаны, чтобы можно было работать в стиле vim с shell-like программами. Это часто удобнее, чем использовать их в терминале напрямую.

Использую Omnicompletion. Как сделать, чтобы было как во всех IDE'шках

Использовать IDE, очевидно же. А в vim большинство вариантов omnicompletion приносят больше вреда чем пользы, особенно на C++ и особенно на больших проектах со сложным кодом.

Autocompletion по словам, по тэгам и по именам файлов - это те 20% функциональности, которые решают 80% реальных completion-задач. А если вместе с doxygen, cscope и grep (или ack), то и все 147%.

f0e ()

Немного оффтопа: Достаточно просто

if (!@array) { ... }

ну на любителя

unless (@array) { ... }

anonymous ()

У тебя по моему vim собран без поддержки иксов. Потому и до иксового буфера добраться не можешь.

KblCb ★★★★★ ()

1 - это у тебя какой-то плагин так косячит.

2- а если gvim попробовать?

3 - не пользуюсь, не знаю.

4 - только что поставил supertab из реп: УМВР.

HerrWeigel ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.