你可以在vim的可视化选择的文本上执行什么?

可以在可视化选择的文本上执行哪些可能的操作(使用键盘快捷键)? 为了简单考虑这个简单的部分:

   a  b  cd  1  p
   a  b  cd  2  y
   a  b  cd  3  t
   a  b  cd  4  h
   a  b  cd  5  o
   a  b  cd  6  n

一个具体问题 :是否可以在选择时执行Python / shell命令/脚本?

一些更具体的问题:

1-)如何就地排序python列?

2-)如何切换列的位置?

3-)如何增加值? (也就是说,只有选中的数字大于3)

谢谢。


要正确执行此操作,您需要使用过滤器和vim的执行模式。

过滤器是可以从标准输入读取并写入标准输出的任何标准UNIX程序( sortawkgrepcutpastesed ...)。

Vim的执行模式允许您用程序的输出读入或替换文本。 如果你做了一个视觉选择(比如使用V或者CV ),然后点击: ,你的命令提示符将会立即变为:'<,'> ,这意味着“将任何命令应用于视觉选择中包含的行。 此时,您可以编写!foo将程序foo的输出替换为文本。

例如,要按python列对文本进行排序,请选中它,点击: ,然后输入!sort -k5 。 整个命令将如下所示:'<,'>!sort -k5运行它将产生:

   a  b  cd  4  h
   a  b  cd  6  n
   a  b  cd  5  o
   a  b  cd  1  p
   a  b  cd  3  t
   a  b  cd  2  y

对于其他两项任务, awk是你的朋友。 像:'<,'>!awk '{ print $1, $3, $2, $4, $5 }'的命令会翻转第二列和第三列(但是请注意列间间距已折叠)。 要增加列,请尝试如下:'<,'>!awk '{ sub($4, $4+1); print }' :'<,'>!awk '{ sub($4, $4+1); print }'


这个问题非常广泛,但首先看看:help visual-operators

关于具体问题,请查看插件EvalSelection.vim,该插件用于评估shell,Python和其他几个解释器中可视区域中选择的源代码。 作为一个非常简单的例子,如果你在你的Vim缓冲区中有以下内容:

pwd
echo $SHELL

选择第一行并输入<Leader>esp 。 打破它:

<Leader>e是调用EvalSelection.vim的默认键盘命令。 s指定你想用你的shell来评估它。 p指定要将结果打印到Vim的命令行。

运行上述命令时,我会得到以下输出: ~/Desktop选中第一行。 我得到/bin/zsh/在第二行使用相同的命令。

链接地址: http://www.djcxy.com/p/8699.html

上一篇: What can you execute on visually selected text in vim?

下一篇: What are you ideal vim configuration for php development?