Отредактируйте файл с одинарными кавычками в имени файла в Vim

Я столкнулся со странной проблемой в Vim. Я хочу перетащить файл с рабочего стола или файлового менеджера в Vim и отредактировать его. Gvim правильно обрабатывает это поведение.

Когда я пытаюсь сделать то же самое в консоли Vim, вместо этого вставляется путь к имени файла. Например, если я перетащу файл /home/myuser/foo.matic, он применит текстовую строку «/home/myuser/foo.matic» к текущему буферу.

Если я наберу :edit, а затем перетащу имя файла, Vim будет рассматривать «/home/myuser/foo.matic» как новый каталог.

Я считаю, что проблема здесь в кавычках до и после пути к файлу. Похоже, что они вставлены как gnome-терминалом, так и терминатором. Есть ли способ убрать эти кавычки из имени файла при перетаскивании? В качестве альтернативы, есть ли у Vim способ игнорировать кавычки?


person rustushki    schedule 01.07.2012    source источник
comment
Кажется немного странным использовать перетаскивание с терминалом vim. Для графического использования есть gVim. Я лучше наберу :e foo.matic в vim или vim foo.matic в терминале. Другой способ — gvim -p --remote-tab-silent foo.matic открыть файл в gvim на новой вкладке.   -  person epsilonhalbe    schedule 01.07.2012
comment
Недавно я обнаружил, что странности перерисовки экрана случаются гораздо реже в терминале Vim. Поскольку я использую очень мало дополнительных функций графического интерфейса gVim, для меня имело смысл вместо этого попробовать использовать терминальный Vim. Всякий раз, когда это имеет смысл, я перетаскиваю файл в редактор, а не открываю его с помощью :e или NERD Tree.   -  person rustushki    schedule 02.07.2012
comment
Похоже, я могу использовать --remote-tab-silent и с терминалом Vim. Это может быть хорошим вариантом.   -  person rustushki    schedule 02.07.2012


Ответы (1)


Вы не можете создать собственную команду :e для vim, чтобы делать то, что вам нужно, но вы можете определить свою собственную. Наиболее простое решение — заставить оболочку анализировать то, что должно быть проанализировано оболочкой — приведено ниже:

command -nargs=? -bang -bar E :execute "e<bang> ".fnameescape(system("echo -n ".<q-args>))

. Эта команда принимает только вариант :e[!] {file}, +cmd и ++opts не допускаются.

person ZyX    schedule 01.07.2012
comment
Кажется, это решает мою проблему с перетаскиванием файлов в Vim. Это требует, чтобы я набрал: e перед перетаскиванием, но это приемлемо, поскольку мне действительно требуется перетаскивание файлов. Спасибо ЗиХ. - person rustushki; 02.07.2012
comment
@rustushki Набирайте не :e перед перетаскиванием, а :E. Я не верю, что возможно что-то лучше (хотя где-то может быть указатель в документации gnome-терминала, эмуляторы терминала имеют довольно много функций по сравнению со старыми терминалами и фреймбуфером). Определенно не без исправления vim: в документации указано, что drag'n'drop работает только в графических интерфейсах GTK, win16 и win32. - person ZyX; 03.07.2012