Jak najłatwiej wstawić en dash w Vimie?


33

Aby wstawić myślnik , używam ^v u 2014siedmiu klawiszy. Czy istnieje prostszy sposób? (Patrzyłem na digrafy i nie znalazłem tam kreski.)


4
Do Twojej wiadomości, U + 2014 to EM DASH. U + 2013 to EN DASH. fileformat.info/info/unicode/char/2014/index.htm , fileformat.info/info/unicode/char/2013/index.htm
— Quincy Bowers

7
Jeśli używasz X11, powiedziałbym, że XCompose ... Jak to będzie działać na wszystkich twoich aplikacjach, a nie tylko Vimie. Lub jeśli korzystasz z OSX lub Windows, funkcje, które zapewnia ten system operacyjny.
— Martin Tournoij,

Być może nie jest to najłatwiejszy sposób, ale zwykle używam, <Ctrl-Shift-U>2013<Space>ponieważ działa wszędzie. Kilka kluczowych kodów przechodzi długą drogę (używam głównie U + 2013, U + 2014, U + 2026, U + 2212, U + 2192, U + B0; - / - /… / - / → / °).
— wchargin

Z ciekawości, jak wyświetlasz myślniki? AFAIK, nie ma sposobu, aby poprawnie wyświetlać czcionki o nie stałej szerokości (tj. Z nierównomiernymi szerokościami znaków i kerningiem), więc em- i en-myślniki zawsze wyglądają dokładnie jak łączniki, które rozciągają się do skrajnej krawędzi granicy znaku. Czy nie masz nic przeciwko ekstremalnej rozbieżności między tym, jak postać jest wyświetlana w Vimie i jak jest renderowana gdzie indziej?
— Kyle Strand,

2
Jestem z @Carpetsmoker: Compose - - -dla em-dash, Compose - - .dla en-dash. Komponowanie jest magiczne, zwłaszcza jeśli zamapujesz go na całkowicie nieużywaną Caps-Lock.
— Rmano

Odpowiedzi:


42

Możesz używać digrafów: Ctrl+k-N(z dużą N)

W trybie Wstawianie są wprowadzane cyfry, Ctrl+kpo których następuje sekwencja dwóch znaków. Dla en-dash sekwencja jest następująca -N.

Jak zauważył Quincy, U+2014to em-dash. Jeśli chcesz wprowadzić to za pomocą digraphs, sekwencja jest -M.


Podobnie EM DASH można wstawić za pomocą <Ck> -M.
— Quincy Bowers

U+2014nie jest en-dash? całe moje życie było kłamstwem! Edycja: teraz rozumiem: moja czcionka terminalowa (Inconsolata) renderuje oba myślniki w ten sam sposób.
— Tomas Tomecek

3
Aby dojść do tej odpowiedzi: hex 2013 ma wartość dziesiętną 8211. Użyj :digraphspolecenia, aby wyświetlić wszystkie digrafy i poszukaj 8211.
— 200_success

10

Jeśli nie ma predefiniowanego digrafu lub chcesz bardziej zapadającą w pamięć sekwencję klawiszy, możesz zdefiniować digrafy w swoim vimrc. Na przykład poniżej zdefiniują dwa digrafy dla en dash (8211) i em dash (8212), które odzwierciedlają ich sekwencje XCompose.

digraph -. 8211 -- 8212

:digraphKomenda spodziewa wartość należy określić w systemie dziesiętnym, a nie hex, dlatego to 8211 dla Półpauza niż 2013.



1
@ 200_success Nie powiedziałem, że nie było. :) Opcje digrafów Vima nie zawsze są zgodne z bardziej standardowymi, więc wiedza jak zdefiniować własny digraf jest przydatna, nawet jeśli już istnieje.
— jamessan

8

Standardowym sposobem wstawiania kreski w Vim jest użycie digrafa , jak wyjaśnił tommcdo .

Jednak uważam, digrafy w ogóle, a szczególnie ten jeden ( Ctrl+k, -, Shift+N) dość niewygodne do pisania. Aby przyspieszyć wprowadzanie myślników, możesz dodać następującą parę mapowań w trybie wstawiania do pliku typu pliku, na przykład.vim/after/ftplugin/markdown.vim .

Odpowiednio dla myślników en / em:

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- —

Uwaga: <buffer>Oznacza to, że mapowanie będzie miało zastosowanie tylko do plików Markdown. Jest to konieczne, ponieważ istnieją pewne konteksty (np. Programowanie), w których nie chcę, aby dwa myślniki były zastępowane myślnikami.

Te mapowania wykorzystują fakt, że w kontekstach zwykle ich używam, myślniki są otoczone spacjami, a myślniki nie . * Używanie tych mapowań oznacza zatem, że mogę używać dokładnie tych samych naciśnięć klawiszy w mniej wydajnych edytorach tekstu, których czasami jestem zmuszony używać i nadal otrzymuję rozsądne wyniki. **

Właściwie używam nieco bardziej skomplikowanego rozwiązania niż powyższe, ponieważ z powodów typograficznych lubię otaczać moje kreski przedziałami włosów . Umieszczenie ich w Markdown sprawia, że ​​jest mniej czytelny, ale na szczęście Vim ma na to rozwiązanie, dzięki funkcji „ukrywania”, która pozwala ukryć pewne elementy składniowe, gdy kursor znajduje się w innej linii: ***

inoremap <buffer> --<space> –<space>
inoremap <buffer> -- &#8202;—&#8202;

syntax match entity_hairspace "&#8202;" conceal
setl conceallevel=2

* Jeśli kiedykolwiek będę musiał użyć nieskreślonej kreski en, mogę po prostu nacisnąć backspace po wpisaniu mapowania.
** Jeśli nie zazwyczaj używają en-kreski tak, lub jeśli nie zawsze wychodzić z vim, można użyć coś innego, aby wywołać mapowania: Np --.i ---. Jeśli używasz innych wyzwalaczy, możesz również umieścić to bezpośrednio w .vimrc i usunąć <buffer>opcje.
*** Możesz również użyć znaku ukrywania, ccharaby zastąpić elementy składniowe jednym znakiem, zamiast całkowicie je ukrywać. Jeśli martwisz się problemami z kodowaniem, możesz użyć tego, aby Vim wyświetlał &ndash;encje HTML w pliku jako myślniki.


Więc używasz myślników w Vimie? Czy nie wyglądają na dziwne, ponieważ mają tylko jedną szerokość kolumny? Czy znasz jakieś sztuczki, dzięki którym em-kreski rzeczywiście zajmują dużo miejsca, być może warte dwie kolumny?
— Kyle Strand

@KyleStrand Jak hacky chcesz się dostać? Spróbuj tego: set conceallevel=1 | syntax match longdash '—' conceal cchar=-(Zauważ, że pierwszy myślnik w tym poleceniu to myślnik, a drugi to myślnik o pełnej szerokości minus).
— Rich

Nie widzę różnicy na wyświetlaczu ani nie widzę powodu, dla którego wyświetlacz zajmowałby dwie kolumny. Czy przez przypadek źle zrozumiałeś moje pytanie, czy może źle zrozumiałem twoją sugestię?
— Kyle Strand

.... właściwie nie wiem nic o specyfikacji składni Vima. Czy syntax matchpolecenie działa nawet poza kontekstem pliku składniowego?
— Kyle Strand

@KyleStrand Rozumiem twoje pytanie. Czy próbowałeś skopiować tę linię do swojego vimrc? A może po prostu uruchamiasz go w Vimie? :)
— Bogaty

3

Na mojej francuskiej klawiaturze Mac AZERTY mogę wstawić myślnik za pomocą Alt+ -. Twój przebieg może się oczywiście różnić.


2
Alt+-(a raczej Option+-być pedantyczny) to skrót dla komputerów Mac. Działa wszędzie w OS X, ale nie jest związany z vi ani vim.
— ash108

1
Działa w MacVimie, ale w Terminal vim działa jak [Esc], po którym -następuje przejście do trybu normalnego i umieszczenie kursora na początku poprzedniej linii.
— 200_success

3

Zainstaluj moją wtyczkę Unicode , wpisz Vim i wpisz DASH, a następnie CtrlXCtrlZaktywuj uzupełnianie Unicode.

wprowadź opis zdjęcia tutaj

(Zwróć uwagę na -N w opisie, który pokazuje cyfrę, aby wprowadzić ten znak)


0

Zainspirowany świetną odpowiedzią Richa dodałem następujące wiersze do mojego vimrc:

" For en/em dashes, respectively
autocmd FileType markdown imap -- –
autocmd FileType markdown imap --- —

Działa jak uczta!


0

W skrócie digraph jest najlepszą drogą, jak sugerują różne inne odpowiedzi. Ale w przypadku dowolnych znaków Unicode innym sposobem jest użycie^V w trybie wstawiania (patrz :he i_CTRL-V_digit).

Na przykład w myśleniu ^Vu2013.


Teraz zdaję sobie sprawę, że to właśnie robił OP! (Choć en dash to 2013, a nie 2014 - to em dash.) Myślę, że nadal dobrze jest mieć gdzieś na stosie odpowiedzi.
— tremby
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.