Текущее имя файла доступно через специальное %
имя(:help cmdline-special
); вы можете изменить его на полный путь, а затем отрезать само имя файла, чтобы получить путь :%:p:h
, cp.:help filename-modifiers
.
Это можно было бы напрямую передать в build -в таких командах, как :edit
, но, к сожалению, не в :NERDTree
. Для этого мы должны явно expand()
это, а затем интерполировать результат в строку команды -через :execute
(, что в вашем вопросе не нужно было бы использовать):
autocmd FileType go execute 'NERDTree' expand('%:p:h')
Кроме того, вы также можете просто :set autochdir
, чтобы Vim автоматически переключал каталоги.
Я бы порекомендовал помещать любые настройки, сопоставления и типы файлов -в автокоманды~/.vim/ftplugin/{filetype}_whatever.vim
(или {filetype}/whatever.vim
; ср.:help ftplugin-name
)вместо определения лотов :autocmd FileType {filetype}
; он чище и лучше масштабируется; однако требует наличия :filetype plugin on
. Настройки, которые переопределяют вещи в плагинах типов файлов по умолчанию, должны вместо этого войти в ~/.vim/after/ftplugin/{filetype}.vim
.
Возможно, по какой-то причине GRUB на внутреннем диске был перезаписан так, что теперь он пытается загрузить свою конфигурацию с внешнего диска.
Во-первых, убедитесь, что на внешнем диске есть полностью -заполненный системный раздел EFI и что /etc/fstab
правильно монтирует ESP внешнего диска в /boot/efi
. Если чего-то не хватает, используйте grub-install --force-extra-removable /dev/sd<external disk>
для переустановки GRUB на внешний диск -, но сначала убедитесь, что правильный ESP смонтирован на /boot/efi
.
Перезагрузите и используйте efibootmgr -v
. Проверьте значение BootCurrent и соответствующую загрузочную запись, чтобы убедиться, что система действительно полностью загрузилась с внешнего диска и не вернулась к загрузчику на внутреннем. Теперь вы знаете, что у вас есть полностью работающий GRUB на внешнем диске, который должен быть полностью независимым от внутреннего диска.
Затем смонтируйте раздел ESP внутреннего диска (, если он еще не смонтирован ), и проверьте содержимое <mountpoint of internal ESP>/EFI/ubuntu/grub.cfg
. Это должен быть небольшой файл конфигурации GRUB, содержащий всего около трех строк.рассказывая, откуда загрузить основной файл конфигурации GRUB. Обычно это относится к файловой системе по UUID. Это должно быть что-то вроде этого:
serch.fs_uuid <UUID of the filesystem containing /boot> root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
Да, несмотря на то, что в первой строке упоминается root
, это не обязательно означает корневую файловую систему Linux -, это относится к корню GRUB, который является файловой системой, содержащей основной файл конфигурации GRUB и каталог модулей GRUB. В Debian/Ubuntu это может быть корневая файловая система Linux или отдельная /boot
файловая система (, если /boot
— это отдельная файловая система ).
Если каталог /boot
содержится в корневой файловой системе Linux, то вторая строка может быть вместо set prefix=$(root)'/boot/grub'
. Как только переменная prefix
установлена правильно, GRUB сможет автоматически -загружать модули GRUB (, например. поддержка других типов файловых систем ).
Этого может быть достаточно, чтобы исправить неисправный GRUB на внутреннем диске. Если это не помогает, вы можете загрузиться с внешнего диска, смонтировать корневую файловую систему внутреннего диска в /mnt
, /boot
внутреннего диска (, если он существует как отдельная файловая система ), чтобы /mnt/boot
, ESP внутреннего диска на /mnt/boot/efi
и т. д., пока не будет смонтировано полное дерево файловой системы внутреннего диска под /mnt
. Затем выполните chroot:
mount -o rbind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o rbind /sys /mnt/sys
chroot /mnt /bin/bash
Теперь вы сможете использовать grub-install /dev/sd<internal disk>
для повторной -установки GRUB на внутренний диск. После этого система должна снова загружаться с отключенным внешним диском.
Избавление от GRUB технически возможно, но отсутствие загрузчика вообще (, т. е. использование заглушки UEFI, встроенной в ядро ), сделает использование любых вариантов загрузки ядра крайне неудобным. Сначала вам нужно загрузиться во что-то, что может редактировать загрузочные записи UEFI, добавлять/изменять нужные вам параметры загрузки, а затем снова загружаться в «беззагрузочный» Linux. Вместо этого вы можете проверить некоторые из альтернативных загрузчиков, например rEFInd
или systemd-boot
.