2010-09-20 34 views
1

可以在可視化選擇的文本上執行哪些可能的操作(使用鍵盤快捷鍵)?爲了簡單考慮這個簡單的一塊:你可以在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)如何就地排序蟒蛇列?

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

3-)如何增加值? (也就是說,只有選中的數字大於3)

謝謝。

回答

4

要正確執行此操作,您需要使用過濾器和vim的執行模式

濾波器是任何標準UNIX程序(sortawkgrepcutpastesed ...),其可以從stdin讀取和寫入到stdout。

Vim的執行模式允許您用程序的輸出讀入或替換文本。如果您進行了視覺選擇(例如,使用VC-V),並點擊:,則命令提示符將立即變爲:'<,'>,這意味着「將任意命令應用於視覺選擇中包含的行」。此時,您可以編寫!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 }'

5

這個問題非常廣泛,但首先看看:help visual-operators

關於具體問題,請查看插件EvalSelection.vim,該插件用於評估在shell,Python和其他幾個解釋器中的可視區域中選擇的源代碼。作爲一個非常簡單的例子,如果你有在你的Vim緩衝區以下:

pwd 
echo $SHELL 

選擇第一行,鍵入<Leader>esp。打破它:

<Leader>e是調用EvalSelection.vim的默認鍵命令。 s指定您要使用shell對其進行評估。 p指定您要將結果打印到Vim的命令行。

運行上述命令時,我得到以下輸出:~/Desktop選中第一行。我得到/bin/zsh/在第二行使用相同的命令。

+0

我已經添加了3個具體問題。感謝您的鏈接。我正在尋找微妙的操作。 – 2010-09-20 15:42:21

+0

你可以發佈EvalSelection插件的簡單用法示例嗎? – 2010-09-20 17:58:35

+0

增加了一個簡單的例子。 – michaelmichael 2010-09-20 20:01:12

相關問題