Vim中的管道和冒号命令

时间:2013-02-24 15:36:57

标签: vim

我是一个快乐的Emacs用户。无论如何,我发现有一个字段,Vim可以更好地适应这项工作,这是在Linux终端或Windows CLI中,当你不想打开一个单独的窗口时。这个轻量级的任务有一些micro-Emacs发行版,但我还是找不到好的。

对我来说,典型的Vim用法是less的更强大的替代品,例如:

 dir | vim -

现在我来解决我的问题/问题。

首先,Vim从文件顶部开始。我想将光标放在最后一个屏幕行上,但dir | vim +L -不起作用。我想因为L不是ex命令。我怎么能克服这个?

当我完成浏览,并且我想要退出时,我必须键入::q!五个键和移位(这样两只手)。对于快速输出检查真的很重要。冒号命令非常慢,因为它们需要移位。所以我想知道是否有办法用功能键(比如F2)或Tab键替换冒号:。另外,我想用一个非移位键替换!键,像`-=[];'\,./这样的单个键。这可能吗?这样做的缺点是什么?

修改

通过冒号替换注意我的意思是只替换每个冒号命令的:符号,因此我可以键入<F2>q<CR>进行退出。例如,在Emacs中,您可以将修饰键“Meta”(通常为Alt键)分配给非标准键,或将所有以前缀Ctrl-x开头的命令重新映射到不同的键。

3 个答案:

答案 0 :(得分:3)

在Vim中,L用于将光标放在窗口的底部。

使用$ command | vim - +8将光标放在第8行。

使用+$将光标放在最后一行。

如果您不喜欢~/.vimrc

,可以将此行放在:q!
nnoremap <F2> :q!<CR>

另外,你对less不喜欢什么?

修改

$ command | vim - +'norm L'

将光标放在最后一条可见线上。

您可以使用任何键而不是:,但Vim会使用或多或少的整个键盘。您必须明智地选择替换密钥,并在~/.vimrc中使用以下内容:

nnoremap <F2> :

答案 1 :(得分:3)

在Ubuntu上安装Vim73时,有一个运行VIM的脚本更像“less”。我在你描述的情况下使用它。
该脚本位于less.sh处(替换为您的安装路径)/usr/share/vim/vim73/macros/less.sh

以下是您的服务器上没有该脚本的脚本:
脚本/usr/share/vim/vim73/macros/less.sh

#!/bin/sh
# Shell script to start Vim with less.vim.
# Read stdin if no arguments were given.

if test -t 1; then
 if test $# = 0; then
   vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' -
  else
   vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' "$@"
  fi
else
  # Output is not a terminal, cat arguments or stdin
  if test $# = 0; then
    cat
  else
    cat "$@"
  fi
fi

请注意,它正在“关闭”所有插件 如果你想以这种方式开始.vimrc中的特殊事情,你可以使用别名来启动它。例如

alias lessv='use_less=1 /usr/share/vim/vim73/macros/less.sh'
# use it:
lessv some_file
# and
dir | lessv   # no need for "-"

然后,您可以在$use_less中将其引用为.vimrc,例如在所有常用映射之前执行finish。如果以“正常方式”启动vim,则不会出现错误(您不必使用exists("$use_less")之类的测试)。如果没有其他充分的理由可以使用它,那么使用名为use_less的变量会很有趣。

使用less.sh打开命令时有一些帮助,只需点击 h
我也在vim帮助中找到了它::h less
我试图在Internet上找到less.vim的代码并使用链接,但没有运气。我认为该文件是安装的一部分。

修改
视窗:
在某些安装的窗口中,还有一个less.bat来启动vim或多或少更少。如果它不在安装中,我将它粘贴在这里:
脚本C:\Program\Vim\vim73\macros\less.bat

@echo off
rem batch file to start Vim with less.vim.
rem Read stdin if no arguments were given.
rem Written by Ken Takata.

if "%1"=="" (
  vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -
) else (
  vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" %*
)

最后提示:
j e Ctrl + j Ctrl + e < / kbd>, Ctrl + n 全部映射为向下滚动1行(首先将光标放在窗口底部)。
k y Ctrl + k Ctrl + y < / kbd>, Ctrl + p 全部映射到滚动 1行(比较少,首先将光标放在窗口底部)。登记/> 要移动上下使用<Up><Down>

答案 2 :(得分:0)

在Linux中,您可以这样做:

ls | vim +$ +'map <F2> :' +'map <F3> !' -