2017-02-25 67 views
1

每当我在vim命令行中键入以下内容::read !readlink {somedir} ,它会将输出发送到bash我从vim启动,而不是发送到vim缓冲区。 其实,我想实现的是获取文件的绝对路径,而编辑用vim一个文件,并没有作出任何错别字吧。VIM中的一些bash命令将输出发送到bash而不是VIM

在另一方面,每当我使用例如::read !ls,它打印在我目前使用vim的缓冲区中的输出。

为什么会这样,我应该怎么办? 谢谢!

+0

你到底要什么功能键?你想哟找到当前文件(不'给出的相对路径!:回声“%”')的完整路径,包括在你的文件(作为一种头,而你想的东西像目前日期也在标题中)?或者你想查找所有类型的文件?你可以用'locate'来做这个吗? –

+0

我想获得各种文件或目录的完整路径。这是因为有时当我配置某些东西时,我必须给文件或目录提供绝对路径,并且在输入路径时出现错误的可能性很大,或者例如。错过之间的目标。 – ZB1900

回答

1

如果你想绝对路径使用:

:read ! realpath directory-name 
+0

好吧!这有用,谢谢! – ZB1900

+1

一路上我意识到我错误地使用了readlink。如果我正确使用它,它也会在vim内打印输出(在这种情况下是某种东西的绝对路径),因为在这种情况下使用stdout。如果发生错误,它使用stderr,但stder不是“引导”到当前的vim缓冲区,而是从vim开始的bash。 – ZB1900

+0

当它工作接受答案!你能做的最少! – Sabrina

0

当标准错误是给问题,您可以使用2>&1
命令行会与所有REQ的无聊长。当你经常需要这个时,采取另一种方法。
首先制作一个脚本输出满足您的要求,将给予正确的路径。 该脚本可以在路径中使用查找,定位,readlink或某些AI解析错误。之后,你可以使用

:r !myscript path 

而当你经常使用这个现实,把它分配给像

nnoremap <F1> :r !myscript 

"Off topic: I like the next one for testing scripts 
nnoremap <F9> :w<Enter>:!%:p<Enter>