代码之家  ›  专栏  ›  技术社区  ›  Gökhan Sever

在vim中,您可以对可视选择的文本执行什么操作?

  •  1
  • Gökhan Sever  · 技术社区  · 16 年前

       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
    

    一个具体问题

    还有几个更具体的问题:

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

    2-)

    如何增加值?(说。(仅选择大于3的数字)

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  4
  •   myw01    15 年前

    要正确执行此操作,您需要使用 执行方式 .

    A 滤波器 sort , awk grep , cut , paste , sed

    执行方式 V 或 C-V : ,您的命令提示符将立即 :'<,'> ,这意味着“对视觉选择中包含的行应用任何命令” !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 '{ print $1, $3, $2, $4, $5 }' 将翻转第二列和第三列(但请注意,列间距是折叠的)。要增加列,请尝试以下操作 :'<,'>!awk '{ sub($4, $4+1); print }' .

        2
  •  5
  •   michaelmichael    16 年前

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

    EvalSelection.vim ,它评估在shell、Python和其他几个解释器的可视区域中选择的源代码。作为一个非常简单的示例,如果Vim缓冲区中有以下内容:

    pwd
    echo $SHELL
    

    选择第一行并键入 <Leader>esp

    <Leader>e s 指定要使用shell对其求值。 p 指定要将结果打印到Vim的命令行。

    ~/Desktop 选择第一行。我明白了 /bin/zsh/