Używam "bardzo magii" dla wyszukań regexp (tj./\ V lub% s/\ v), ale chciałabym móc ustawić jakąś opcję, więc nie muszę już dodawać \ v, nigdzie. Czy jest jakiś sposób na zrobienie tego?W vimie istnieje sposób na stałe i globalne ustawienie "bardzo magicznej"?
Odpowiedz
Nie bezpośrednio, ale zawsze można użyć mapowania:
:nnoremap//\v
:cnoremap %s/ %s/\v
Nawet jeśli można ustawić „bardzo magia” w taki sposób można set nomagic
, to naprawdę nie chcesz jak to przełamać dość wiele istniejących wtyczek.
Edit
Zobacz również this page.
EDIT2: Właśnie odkryłem tę wtyczkę, która może być lepsza niż rozwiązania remapowania (które wydają się mieć pewne nieuniknione wady, patrz poniżej). Nie testowałem go jeszcze, więc nie wiem, czy zachowuje się dokładnie tak, jak tego chce.
http://www.vim.org/scripts/script.php?script_id=4849
Edit3: Używam plugin przez około półtora roku, i kocham go. To wciąż zakłóca historii wyszukiwania, jednak (patrz poniżej), a także łamie incsearch
, więc mam następujących w moim Vima config:
" Since I use incsearch:
let g:VeryMagic = 0
nnoremap//\v
nnoremap ? ?\v
vnoremap//\v
vnoremap ? ?\v
" If I type // or ??, I don't EVER want \v, since I'm repeating the previous
" search.
noremap // //
noremap ?? ??
" no-magic searching
noremap /v/ /\V
noremap ?V? ?\V
" Turn on all other features.
let g:VeryMagicSubstituteNormalise = 1
let g:VeryMagicSubstitute = 1
let g:VeryMagicGlobal = 1
let g:VeryMagicVimGrep = 1
let g:VeryMagicSearchArg = 1
let g:VeryMagicFunction = 1
let g:VeryMagicHelpgrep = 1
let g:VeryMagicRange = 1
let g:VeryMagicEscapeBackslashesInSearchArg = 1
let g:SortEditArgs = 1
użyłem sugestię Dral za chwilę, ale okazało się, że frustrujące w praktyce ze względu na następujące zachowanie:
Jeśli wpiszesz następujący: /{wzór} :% s // {} zastępstwo
... potem, bez tego odwzorowania, można zobaczyć, co jesteś około aby wymienić przed dokonaniem wymiany. Ale po ponownym przyporządkowaniu, nagle masz s/\v/
zamiast s//
; to pasuje do wszystkiego w pliku, co oczywiście jest błędne.
Na szczęście samo polecenie s
ma alternatywną formę, która używa do wyszukiwania very magic
. Tak oto odwzorowania obecnie używam w moim .vimrc
:
nnoremap//\v
vnoremap//\v
cnoremap %s/ %smagic/
cnoremap >s/ >smagic/
nnoremap :g/ :g/\v
nnoremap :g// :g//
Należy pamiętać, że tylko odwzorowywać s/
prowadzi do problemów, gdy próbuje użyć wzoru, który kończy się w s
; podobnie, mapowanie g/
może powodować problemy podczas korzystania z wzorców kończących się na g
. Zwróć uwagę, że odwzorowania :g/
i :g//
uniemożliwiają Vimowi natychmiastowe wyświetlenie polecenia.
EDYCJA: Niestety, nie wydaje się być "magiczną" wersją :global
, dlatego pozornie niepotrzebne odwzorowanie :g//
służy do zapewnienia, że polecenie globalne może korzystać z poprzedniego wzorca wyszukiwania.
Inną wadą jest to, że te przemapy zakłócają historię wyszukiwania. Jako przykład rozważ użycie opcji *
, aby wyszukać następne wystąpienie słowa pod kursorem.To powoduje, że Vim szuka wzoru \<[word]\>
, który mastart z . Bez opisanych powyżej przemapowań wpisanie /
i naciśnięcie strzałki w górę spowoduje przywołanie wzorca wyszukiwania. Przy ponownym dodawaniu po po wpisaniu /
należy usunąć automatycznie wstawiony \v
przed naciśnięciem strzałki w górę w celu przywołania tego wzorca.
'cnoremap> s /> smagic /' wydaje się nie działać po wybraniu zakresu wizualnego. Próbowałem również ucieczki z nawiasu do 'cnoremap \> s/\> smagic /' ale to też nie działało. –
@DaveKennedy Czy wypróbowałeś wtyczkę? Jest dla mnie o wiele bardziej niezawodny; Miałem z tym kilka problemów. Nie używam już mapowań wymienionych w tym drugim bloku kodu. –
- 1. Globalne stałe w PHPUnit
- 2. Globalne stałe w Groovy
- 3. globalne stałe bez użycia #define
- 4. ustawienie globalne rodziny czcionek
- 5. Globalne fragmenty w vim
- 6. ustawienie globalne w HTML lub organu
- 7. Czy istnieje globalne ustawienie Jacksona dla @JsonIgnoreProperties (unknown = true)?
- 8. Czy istnieje sposób na ustawienie wartości $? w pozorowaniu w Ruby?
- 9. Czy globalne stałe są anty-wzorcami?
- 10. cbind: czy istnieje sposób na ustawienie brakujących wartości na NA?
- 11. Czy istnieje sposób na globalne wykluczenie zależności Maven?
- 12. Czy jest jakiś sposób na ustawienie dobrego autouzupełniania dla Rubiego w Vimie?
- 13. W WCF istnieje sposób na ustawienie całego obszaru nazw ServiceContract?
- 14. Najlepszy sposób na globalne css w Vuejs
- 15. Ustawienie globalne środowiska ASP.NET MVC 2.0 JsonRequestBehavior
- 16. Android UnknownHostException: czy istnieje sposób na ustawienie limitu czasu?
- 17. Czy istnieje sposób na ustawienie poziomej grupy radiowej?
- 18. Czy istnieje sposób na ustawienie limitu rozliczeniowego Amazon AWS?
- 19. Czy globalne stałe mogą być zadeklarowane w JavaScript?
- 20. Czy istnieje sposób na globalne udostępnianie SharedPreferences w całej mojej aplikacji na Androida?
- 21. Jak uprościć "kopiowanie i wklejanie" w Vimie?
- 22. Czy istnieje sposób na uzyskanie v $ y, aby nie kopiować znaku nowej linii w Vimie na Macu i Linuksie?
- 23. Przenoszenie i ponowne zamawianie rekordów na stałe
- 24. globalne właściwości na wiosnę
- 25. Zmień zmienną na stałe
- 26. Jak "rozwinąć" tekst w Vimie, w miły sposób?
- 27. Operatory globalne i polimorfizm
- 28. najdłuższa linia w vimie?
- 29. W Node.js Express/Connect, czy istnieje sposób na ustawienie sesji w nieskończoność?
- 30. Stałe i właściwości w java
Dobra uwaga na temat wtyczek. Jakoś nie pomyślałem o tym. Dziękuję za odpowiedź. – bgaluszka
Dodałem link do strony wikia, która może ci się przydać. – DrAl
+1 Dzięki. FWIW, wydaje się bardziej ogólny cel: ': cnoremap s/s/\ v'. – FMc