你可以在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程序( sort
, awk
, grep
, cut
, paste
, sed
...)。
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/
在第二行使用相同的命令。
上一篇: What can you execute on visually selected text in vim?
下一篇: What are you ideal vim configuration for php development?