调用vimthrough 时find | xargs,像这样:
find . -name "*.txt" | xargs vim
Run Code Online (Sandbox Code Playgroud)
你会收到一个警告
Input is not from a terminal
Run Code Online (Sandbox Code Playgroud)
以及之后的行为非常糟糕的终端。为什么?
这个问题明确地是关于为什么,而不是关于如何避免。这是在别处被问到并回答的。
我正在使用 vim 美化一些源代码。{1}
我创建了几个执行单独步骤的 vim 宏:删除尾随的 whilespace,删除之后的空行{,删除之前的空行,诸如此类{。
现在,我想创建一个按顺序执行所有单个宏的宏。但是,一旦第一个递归宏终止(因为它再也找不到任何匹配项 -> 匹配错误),我的“包装器”宏也会终止。
在子宏产生错误后,有没有办法让 vim 宏继续?
{1}我了解自动重新格式化程序。我什至可能会在我当前的问题上使用它们。我只是为了示例而提到了源代码重新格式化。不要发布有关此源美化器或那个的任何答案。问题不在于代码重新格式化本身,而在于 vim 宏。
例子:
qw/\s\+$d$@wqqe/\n\n *}dd@eqqr:retab@w@eq当我执行包装器时 -@r它会 retab,然后执行宏 1,直到找不到更多的尾随空格,然后终止(不执行宏 2)。
澄清:
我正在寻找的是如何调用子宏,以便当该子宏终止时,调用宏会继续?
我经常在脚本中找到这个(而且,我不得不承认,我自己写的):
a=$(echo "$x" | sed "s/foo/bar/")
Run Code Online (Sandbox Code Playgroud)
或者
if echo "$x" | grep -q foo
then
...
fi
Run Code Online (Sandbox Code Playgroud)
考虑“foo”来包含一些正则表达式的东西。
我觉得应该有——而且很可能是——一种更好的表达方式,一种不涉及两个命令和一个管道,而是将事物包装成一些更紧凑的表达方式。
我就是找不到。有人吗?
假设有一个软件我不想通过 安装apt,而是手动安装。(TeXLive,因为我想使用 2011 版本并且apt只有 2009 版本。)
假设我想通过 安装另一个软件apt,但这取决于第一个软件。(Vim LaTeXSuite,因为在系统范围内手动安装是很痛苦的。)
默认情况下,apt不会“看到”第一个软件,而是继续安装许多不需要和不受欢迎的软件(即 TeXLive 2009)以满足依赖元数据。
我怎样才能:
告诉apt一个给定的包(例如texlive)是出于所有实际目的而安装的,并且它不应该作为其他包的依赖项安装?
告诉apt安装给定的包(例如vim-latexsuite)而不关心它的依赖关系?
我已经通过各种筛选apt-相关联机手册,以及来到了空,也发现了这个问题,在这个网站,但觉得有有要做到这一点不太hackish的方式,不是吗?
(从我的 Gentoo 时代开始,我记得emerge --inject和/etc/portage/package.provides,并且基本上正在寻找apt等价物。)
我正在使用私有用户组设置,即用户foo的主目录归foo:foo,而不是foo:users.
为此,我需要将 umask 全局设置为 002。
过了一会grep -RIi umask /etc/*儿,似乎修改UMASK条目/etc/login.defs应该可以解决问题。它也有——但仅适用于控制台登录。
如果我登录到我的桌面,并在那里打开一个终端,我仍然可以看到默认的umask 022. 从通过菜单启动的应用程序创建的文件也是如此。显然,显示管理器(或任何负责的 X11 组件)确实提供了一些与控制台登录不同的设置,如果我能说出它是哪一个,那就该死了。(我尝试更改 中的设置/etc/init.d/rc,不,它没有帮助。)
我如何/在哪里设置umask 全局(以及所有用户),以便 X11 桌面环境也获得备忘录?
(系统是 Linux Mint / Ubuntu,以防发生任何变化......)
我在 X11 ( -xkblayout us -xkbvariant intl)上使用美国国际布局。
我想禁用死键,但不切换回美国默认布局。(我需要德语元音和国际布局中的其他几个字符,我只是不在乎“死”`~'"^。)
我需要做什么?创建自定义布局(就像我按照这个极好的建议为 Windows 所做的那样)?我该怎么做?或者我可以以更简单的方式获得“无死键”行为吗?
我发现很难理解 ps 和 top 产生的输出?
这是 top 的输出:
PID PSID USERNAME TID PRI NICE SIZE RES STATE TIME CPU COMMAND
26439 23712 soumyau 26439 15 0 7512M 5234M sleep 286:25 16.67% or_lse2 (18)
26523 23712 soumyau 26439 -2 0 7512M 5234M cpu9 143:10 8.33% or_lse2
26522 23712 soumyau 26439 -2 0 7512M 5234M cpu3 143:10 8.33% or_lse2
Run Code Online (Sandbox Code Playgroud)
这是由 ps ( ps -L -p 26439 -o pcpu,psr,pid,user,tid):
%CPU PSR PID USER TID
99.9 3 26439 soumyau 26522
99.9 9 26439 …Run Code Online (Sandbox Code Playgroud) 我需要打印文件的内容(例如,cat $file),但以给定的列宽(假设为 80 列)包装输出,与终端宽度无关。
“标准” Unix 武器库中有什么东西可以给我这个功能吗?
假设我已经在给定的 Vim 会话中工作了一段时间,现在我真的很想在GVim 中拥有我正在查看的所有内容。
实际用例是一个带有大量窗口的终端 Vim 会话......我想点击激活它们而不是每次都通过 Ctrl-W,这可以在 GVim 中完成,但不能在 Vim 中完成(不是我的,至少)。
有没有办法获取当前在 Vim 中打开的缓冲区/窗口/选项卡,并在 GVim 中打开它们?