我正在使用VIM清理數據源,並將其格式正確地用於SIMILE時間軸。是否可以輕鬆翻譯vim搜索並將宏替換成sed?
VIM效果很好,但據我所知它不能自動化,所以我想用SED來清理數據源。我知道SED可以用於搜索和替換,但是當我使用VIM清理數據時,我使用了VIM宏和vim regex搜索和替換的組合。
SED中是否有與VIM宏相當的功能?
我正在使用VIM清理數據源,並將其格式正確地用於SIMILE時間軸。是否可以輕鬆翻譯vim搜索並將宏替換成sed?
VIM效果很好,但據我所知它不能自動化,所以我想用SED來清理數據源。我知道SED可以用於搜索和替換,但是當我使用VIM清理數據時,我使用了VIM宏和vim regex搜索和替換的組合。
SED中是否有與VIM宏相當的功能?
對於非常簡單的文本處理(即使用Vim代替增強 '的sed' 或 '的awk' ,也許剛剛受益於:substitute
命令中的增強正則表達式),請使用Ex模式。
REM Windows
call vim -N -u NONE -n -es -S "commands.ex" "filespec"
注:無聲批處理模式-s-ex
打亂了Windows控制檯,所以你可能 做cls
Vim的運行後進行清理。
# Unix
vim -T dumb --noplugin -n -es -S "commands.ex" "filespec"
注意:Vim會掛起等待輸入,如果「commands.ex」文件不存在 ;更好地檢查它的存在!另外,Vim可以讀取來自stdin的命令 。您也可以使用從 stdin中讀取的文本填充新緩衝區,如果使用 - 參數,則可以從stderr讀取命令。
對於更高級的處理涉及多個窗口,而真正自動化的Vim(你可能會與用戶進行交互或離開Vim的運行,讓 用戶接管),使用的 :
vim -N -u NONE -n -c "set nomore" -S "commands.vim" "filespec"
這裏有一個使用參數摘要:
-T dumb Avoids errors in case the terminal detection goes wrong.
-N -u NONE Do not load vimrc and plugins, alternatively:
--noplugin Do not load plugins.
-n No swapfile.
-es Ex mode + silent batch mode -s-ex
Attention: Must be given in that order!
-S ... Source script.
-c 'set nomore' Suppress the more-prompt when the screen is filled
with messages or output to avoid blocking.
什麼是ex模式? – leeand00
':help ex-mode' –
其實,你可以自動化vim,以及所有以前的vi版本。 (但是,通常你會使用sed(1)。)Vim可以使用ex(1)鏈接啓動,在這種情況下,它仍然處於行模式。
例如:
ex - /etc/hosts << \eof
$a
10.11.12.13 a-host-name
.
w /tmp/otherhosts
q
eof
如果你把在autovim.sh
你可以只:
$ sh autovim.sh
$ cat /tmp/otherhosts
什麼是前?我不熟悉這一點。 – leeand00
當安裝vim時,也會安裝名爲ex的鏈接。當vim啓動時,它檢查是否使用vim或ex運行。如果是vim,它以curses(screen)模式啓動...... vim調用* visual *模式,但如果通過ex啓動,它將以行模式啓動。無論哪種方式,您都可以切換。在視覺模式下輸入'Q'或在線模式下輸入'vi',你會發現自己處於另一種模式。 – DigitalRoss
是否可以給出1-2個示例用例? –
如果你真的想要,你*可以*腳本VIM - 見':help -c' –