1

我是一个快乐的 Emacs 用户。无论如何,我发现有一个领域可以让 Vim 更适合这项工作,这是在 Linux 终端或 Windows CLI 内部,当您不想打开单独的窗口时。这个轻量级任务有一些微型 Emacs 发行版,但我仍然没有找到一个好的。

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

 dir | vim -

现在我来谈谈我的问题/疑问。

首先,Vim 从文件顶部开始。我想将光标定位在屏幕的最后一行,但dir | vim +L -不起作用。我想因为L不是ex命令。我该如何克服呢?

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

编辑

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

4

3 回答 3

3

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

用于$ command | vim - +8将光标置于第 8 行。

用于+$将光标置于最后一行。

~/.vimrc如果你不喜欢,你可以把这条线放进去:q!

nnoremap <F2> :q!<CR>

还有,你不喜欢什么less

编辑

$ command | vim - +'norm L'

将光标放在最后一个可见行上。

你可以使用任何键来代替,:但 Vim 或多或少地使用了整个键盘。您必须明智地选择替换密钥并在您的~/.vimrc:

nnoremap <F2> :
于 2013-02-24T15:53:42.137 回答
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在所有常用映射之前执行。如果您以“正常方式”启动 vim,则不会出现错误(您不必使用类似的测试)。如果没有其他充分的理由使用它,那么拥有一个名为 use_less 的变量会很有趣。.vimrcfinishexists("$use_less")

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

编辑:
Windows:
在某些安装中的 Windows 上,也有一个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, Ctrl+n都映射到向下滚动 1 行(首先将光标放在窗口底部)。
k, y, Ctrl+ k, Ctrl+ y, Ctrl+p都映射到向上滚动1 行(如 less,首先将光标放在窗口底部)。
上下移动,请使用<Up><Down>

于 2013-02-25T02:18:09.217 回答
0

在 Linux 中,你可以这样做:

ls | vim +$ +'map <F2> :' +'map <F3> !' -
于 2013-02-24T15:46:15.273 回答