Qual è il modo più semplice per inserire un trattino in Vim?


33

Per inserire un trattino , utilizzo ^v u 2014sette tasti. C'è un modo più semplice? (Stavo guardando digraphs e non ho trovato un trattino lì.)


4
Cordiali saluti, U + 2014 è un EM DASH. U + 2013 è un EN DASH. fileformat.info/info/unicode/char/2014/index.htm , fileformat.info/info/unicode/char/2013/index.htm
Quincy Bowers

7
Se stai usando X11, direi XCompose ... Poiché questo funzionerà su tutte le tue applicazioni e non solo su Vim. O se utilizzi OSX o Windows, le funzionalità fornite da tale sistema operativo.
Martin Tournoij,

Forse non è il modo più semplice, ma tendo a usarlo <Ctrl-Shift-U>2013<Space>perché funziona ovunque. Alcuni codici chiave fanno molta strada (uso principalmente U + 2013, U + 2014, U + 2026, U + 2212, U + 2192, U + B0; - / - /… / - / → / °).
mercoledì

Per curiosità, come si visualizzano i trattini? AFAIK, non c'è modo di visualizzare correttamente i caratteri di larghezza non fissa (cioè con larghezze e crenatura dei caratteri non uniformi), quindi i trattini di em e di trattini sembrano sempre esattamente trattini che si estendono fino al limite estremo del confine del carattere. Non ti dispiace avere una disconnessione estrema tra il modo in cui il personaggio viene visualizzato in Vim e il modo in cui viene visualizzato altrove?
Kyle Strand,

2
Sono con @Carpetsmoker: Compose - - -per un trattino, Compose - - .per un trattino. Comporre è magico, specialmente se lo si mappa su Caps-Lock altrimenti totalmente inutilizzato.
Rmano,

Risposte:


42

Puoi usare digraphs: Ctrl+k-N(con la maiuscola N)

In modalità Inserisci, i digrafi vengono inseriti Ctrl+kseguiti da una sequenza di due caratteri. Per en-dash, la sequenza è -N.

Come ha sottolineato Quincy, U+2014è un trattino. Se vuoi inserirlo usando i digrafi, la sequenza è -M.


Allo stesso modo, un EM DASH può essere inserito con <Ck> -M.
Quincy Bowers,

U+2014non è un trattino? tutta la mia vita è stata una bugia! Modifica: ora ho capito: il mio carattere terminale (Inconsolata) rende entrambi i trattini allo stesso modo.
Tomas Tomecek,

3
Per arrivare a questa risposta: hex 2013 è decimale 8211. Utilizzare il :digraphscomando per visualizzare tutti i digraph e cercare 8211.
200_success

10

Se non esiste un digraph predefinito o desideri una sequenza di tasti più memorabile, puoi definire i digraph nel tuo vimrc. Ad esempio, di seguito definiremo due digraph per en dash (8211) e em dash (8212) che rispecchiano le loro sequenze XCompose.

digraph -. 8211 -- 8212

Il :digraphcomando prevede che il valore sia specificato in decimale anziché esadecimale, motivo per cui è 8211 per en dash anziché 2013.



1
@ 200_success Non ho detto che non lo era. :) Le scelte di digraph di Vim non sempre si allineano a quelle più standard, quindi è utile sapere come definire il tuo digraph, anche se ne esiste già uno.
Jamessan,

8

Il modo standard di inserire un trattino in Vim è usare un digraph, come ha spiegato tommcdo .

Tuttavia, ritengo che digrafi in generale, e in particolare questo ( Ctrl+k, -, Shift+N) piuttosto scomodi da digitare. Per un input più rapido dei trattini, è possibile aggiungere la seguente coppia di mapping in modalità di inserimento a un file di tipo di file, ad esempio .vim/after/ftplugin/markdown.vim.

Per trattini en / em, rispettivamente:

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

NB Questo <buffer>significa che questa mappatura si applicherà solo ai file Markdown. Questo è necessario perché ci sono alcuni contesti (es. Programmazione) in cui non voglio che due trattini vengano sostituiti con trattini.

Queste mappature sfruttano il fatto che nei contesti in cui le utilizzo abitualmente, i trattini sono circondati da spazi e non i trattini . * L' uso di questi mapping significa quindi che posso usare esattamente gli stessi tasti premuti negli editor di testo meno capaci che a volte sono costretto a usare e ottenere comunque un output sensato. **

In realtà uso una soluzione leggermente più complicata di quanto sopra, perché, per motivi tipografici, mi piace circondare i miei trattini con spazi per capelli . Avere questi nel Markdown lo rende meno leggibile, ma per fortuna, Vim ha una soluzione per questo, con la sua funzione "nascondi", che ti permette di nascondere alcuni elementi della sintassi quando il cursore si trova su una riga diversa: ***

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

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

* Se mai dovessi usare un trattino senza spaziatura, allora posso semplicemente premere il backspace dopo aver digitato la mappatura.
** Se generalmente non usi i trattini come questo, o se non ti avventuri mai fuori da Vim, potresti usare qualcos'altro per innescare i mapping: eg --.e ---. Se usi altri trigger, puoi anche inserirlo direttamente nel tuo .vimrc e rimuovere le <buffer>opzioni.
*** Puoi anche usare un carattere nascosto ccharper sostituire gli elementi della sintassi con un singolo carattere, invece di nasconderli del tutto. Se sei preoccupato per i problemi di codifica, puoi usarlo per fare in modo che Vim visualizzi le &ndash;entità HTML nel file come trattini.


Quindi usi i trattini in Vim? Non sembrano in qualche modo strani, dato che ricevono solo una larghezza di colonna? Conoscete qualche trucco per far sì che i trattini a em occupino effettivamente una buona quantità di spazio, forse due colonne?
Kyle Strand,

@KyleStrand Quanto hacky vuoi ottenere? Prova questo: set conceallevel=1 | syntax match longdash '—' conceal cchar=-(Nota che il primo trattino in questo comando è un trattino, e il secondo è un trattino-meno a tutta larghezza.)
Ricco

Non vedo alcuna differenza nel display, né vedo perché ciò comporterebbe che il display occupasse due colonne. Per caso hai frainteso la mia domanda o è probabile che io abbia frainteso il tuo suggerimento?
Kyle Strand,

.... in realtà, non so nulla delle specifiche della sintassi di Vim. Il syntax matchcomando funziona anche al di fuori del contesto di un file di sintassi?
Kyle Strand,

@KyleStrand Ho capito la tua domanda. Hai provato a copiare quella linea nel tuo vimrc? O semplicemente eseguendolo in Vim? :)
Ricco

3

Sulla mia tastiera francese AZERTY per Mac, posso inserire un trattino con Alt+ -. Il tuo chilometraggio può ovviamente variare.


2
Alt+-(o meglio Option+-essere pedanti) è un collegamento specifico per Mac. Funziona ovunque in OS X, ma non è correlato a vi o vim.
ash108,

1
Funziona in MacVim, ma in Terminal vim si comporta come [Esc] seguito da -, passando così alla modalità Normale e posizionando il cursore all'inizio della riga precedente.
200_successo

3

Installa il mio plug-in Unicode , inserisci Vim e digita DASH seguito da CtrlXCtrlZper attivare il completamento Unicode.

inserisci qui la descrizione dell'immagine

(Nota la -N nella descrizione che mostra il digraph per inserire quel carattere)


0

Ispirato dalla grande risposta di Rich, ho aggiunto le seguenti righe al mio vimrc:

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

Funziona come un piacere!


0

Per un trattino un digrafo è il modo migliore di procedere, come suggerito in varie altre risposte. Ma per i caratteri unicode arbitrari, un altro modo è quello di utilizzare la ^Vmodalità di inserimento (vedi :he i_CTRL-V_digit).

Per un trattino che sarebbe per esempio ^Vu2013.


Adesso mi rendo conto che questo è ciò che l'OP stava già facendo! (Anche se in linea di principio è il 2013, non il 2014, ma è il punto.
tremby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.