如何解决在作为参数给出的目录中打开 neovim/nerdtree
我正在将 Neovim 与 nerdtree 一起使用。当以目录为参数打开 nvim
时,我想将其用作 neovim 和 nerdtree 的根目录。开箱即用,nerdtree 在该目录中打开,但是一旦我打开一个文件,nerdtree 的根目录就会变回 shell 的当前目录。我希望 nerdtree 将该目录保留为根目录。
我目前在我的 .bashrc
中使用以下解决方法:
nvim_cd()
{
if [ -d "${1}" ]; then
local dir="${1}"
shift 1
( cd "${dir}" && nvim "." "${@}" )
else
\nvim "${@}"
fi
}
alias nvim=nvim_cd
alias vim=nvim
这很好用,但我想知道:有没有办法在 init.vim
中实现这一点?
请注意,在特定情况下,我只想在启动期间更改根目录 nvim
以目录作为参数调用,因此 { {1}} 不是我要找的。em>
解决方法
您可以通过 .bash_profile 或 .bahrc 中的这一行将您的 Neovim 设为默认编辑器。
export EDITOR='nvim'
然后你可以使用这个脚本来指定一个目录并通过 xargs 命令将其通过管道传输到 neovim。您可以将此行作为别名或函数。
$HOME/your/path/to/dir/ | xargs -r -I % $EDITOR %;
您可能需要考虑使用我的功能来搜索文件或目录,然后在 neovim 中打开它们。挺好用的..
function ds() {
find $HOME -type d -name "*" ! -path "*/.git*" ! -path # You can exclude directories by specifiying their names.
"*/__pycache__*" ! -path "*/venv*" 2>/dev/null | fzf | xargs -r -I % $EDITOR %;
}
此函数搜索您的目录并将所选目录作为参数通过管道传输到 neovim。上述函数搜索您的主目录。您可能想考虑它可能会弹出一些不需要的目录,例如库或 .locals 文件夹。 所以使用这个功能只搜索你的密码。
function ds() {
find . -type d -name "*" ! -path "*/.git*" ! -path # You can exclude directories by specifiying their names.
"*/__pycache__*" ! -path "*/venv*" 2>/dev/null | fzf | xargs -r -I % $EDITOR %;
}
如何设置NERDTree切换到当前工作目录?
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
这将自动切换您的 NERDTree 并匹配您当前的工作目录。
如果您发现这个惊人的结果,请查看我的 link 到我的 NeoVim 配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。