在我的.vimrc我使用這個:
:map ,p :!clear; grep -E "def \|class " %
映射,p到提供 Python def 和類層次結構的 grep,它作業得很好。
我嘗試做同樣的事情來獲得一些 vuejs 結構,但沒有成功。
我在 Bash 上得到了我需要的是grep:
$ grep -E '^\s \S : {|\() {$|<script>|import' /tmp/somevuejs.vue
但是當我嘗試穿上它時.vimrc:
:map ,j :!clear; grep -E '^\s \S : {|\() {$|<script>|import' %
我收到此錯誤:
$ vim file.txt
Error detected while processing /home/me/.vimrc:
line 20:
E10: \ should be followed by /, ? or &
我嘗試過多次轉義組合但沒有成功,這都不起作用:
:map ,j :!clear; grep -E '^//\s //\S : {|\() {$|<script>|import' %
:map ,j :!clear; grep -E "^//\s //\S : {|\() {$|<script>|import" %
uj5u.com熱心網友回復:
:help map-bar表示您不能|在映射中使用 a ,除非您以某種方式對其進行轉義。
您現有的映射“有效”,因為它|已正確轉義:
:map ,p :!clear; grep -E "def \|class " %
^^
您的新映射不起作用,因為它的許多|s 沒有被轉義:
:map ,j :!clear; grep -E '^\s \S : {|\() {$|<script>|import' %
^ ^ ^
Vim 報告的確切錯誤是由以下構造引起的:
{|\(
被|Vim 視為兩個 Vim 命令之間的分隔符,所以你得到一個 Vim 命令:
:!clear; grep -E '^\s \S : {
(無論如何都會執行一個無聊的外部命令),然后是第二個:
:\() {$|<script>|import' %
這真的沒有意義。這\是導致錯誤的原因。如果您逃避第一個,|您將得到由第二個引起的不同錯誤|,然后是由第三個引起的另一個錯誤|。
轉義那些|s 以使您的映射“作業”:
:map ,j :!clear; grep -E '^\s \S : {\|\() {$\|<script>\|import' %
^^ ^^ ^^
我將“作業”放在引號中,因為這些映射非常笨拙。
他們
<CR>最后需要 a ,這樣您就不必按 Enter 來執行命令::map ,p :!clear; grep -E "def \|class " %<CR> :map ,j :!clear; grep -E '^\s \S : {\|\() {$\|<script>\|import' %<CR>它們應該被限制為正常模式,除非您真的希望它們也被定義為可視、選擇和操作員掛起模式:
:nmap ,p :!clear; grep -E "def \|class " %<CR> :nmap ,j :!clear; grep -E '^\s \S : {\|\() {$\|<script>\|import' %<CR>由于您似乎沒有故意在映射中使用另一個映射,因此最好將它們設為非遞回:
:nnoremap ,p :!clear; grep -E "def \|class " %<CR> :nnoremap ,j :!clear; grep -E '^\s \S : {\|\() {$\|<script>\|import' %<CR>而且,由于您在腳本中,您可以安全地洗掉冒號:
nnoremap ,p :!clear; grep -E "def \|class " %<CR> nnoremap ,j :!clear; grep -E '^\s \S : {\|\() {$\|<script>\|import' %<CR>
這樣干凈多了!
現在,我想我們將保持下一個謎團,即為什么您使用外部工具而不是:help :global,評論......或其他問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/445689.html
