Editor di testo con opzione schermo diviso


26

Esiste un editor che ha l'opzione di "dividere lo schermo" in due o più parti, accedendo a più di un file (possibilmente con un albero di file) senza aprire più finestre dell'editor contemporaneamente e come si farebbe questo (quali sono i comandi).

Non so se mi sono chiarito, ma "schermo diviso" è l'unico modo per descrivere ciò che voglio ottenere. Voglio usarlo per programmare, avendo più di un file aperto per la modifica. Nota che sono abbastanza nuovo sia per vi che per emacs, se questi sono in grado di farlo. Inoltre, se questo deve essere fatto tramite un editor di terminali, può essere fatto nello stesso terminale, indipendentemente dalle dimensioni dello schermo?


1
So che hai chiesto in modo specifico gli editor e non i terminali, ma penso che valga la pena notare per i futuri visitatori: l'emulatore di terminale terminatorha anche la funzione di schermo diviso: ctrl + shift + esi dividerà in verticale e ctrl + shift + osi dividerà in orizzontale (e ctrl + shift + taprirà anche una nuova scheda)
Carlos Campderrós,

@ CarlosCampderrós Lo terrò a mente, grazie!
Vigilia,

1
@ CarlosCampderrós: ​​puoi anche utilizzare un multiplexer come screen o tmux per raggiungere questo obiettivo in altri emulatori di terminali. Lo svantaggio, ovviamente, è che devi ricordarti di eseguirli per primi, ma probabilmente ne vale la pena.
Foshi,

Risposte:


38

vim può facilmente farlo:

ctrl+ ws- Dividi finestre

ctrl+ ww- passa da una finestra all'altra

ctrl+ wq- Esci da una finestra

ctrl+ wv- Dividi le finestre verticalmente

:sp filename

si aprirà filenamein un nuovo buffer e dividerà una finestra.

Puoi anche fare

vim -o file1 file2

Per aprire i file in un layout a schermo diviso. Sostituisci -ocon -Oper divisione verticale anziché orizzontale.


4
Oppure digita :help CTRL-Wper vedere tutte le operazioni della finestra divisa.
Bernhard,

1
Wow grande! Mi sono anche imbattuto in ": split", ma si divide solo in orizzontale. Puoi per favore includere solo quale versione di VIM è questa? Grazie!
Vigilia,

@Eve uso VIM (Vi IMproved) 7.3.
precipita il

1
@Eve - puoi anche usare :vsplitper creare una divisione verticale, e come con :splitesso accetta un nome file o un comando
Inutile

1
E come <C-w>h/ j / k / l si sposterà tra le finestre in direzioni specifiche, <C-w>H/ J / K / L (maiuscolo) sposta la finestra in quella direzione.
Izkata,

13

Questo può essere fatto usando Emacs. Funziona in GUI e in modalità terminale. Puoi persino dividere più volte. Ecco alcune combinazioni di tasti di base:

Cx 2 Dividi la finestra selezionata in due finestre, una sopra l'altra (finestra divisa in basso).
Cx 3 Dividi la finestra selezionata in due finestre, posizionate fianco a fianco (finestra divisa a destra).
C-Mouse-2 Nella riga della modalità di una finestra, dividi quella finestra.

Fonte: http://www.gnu.org/software/emacs/manual/html_node/emacs/Split-Window.html


1
Per chiunque non abbia familiarità con la terminologia di Emacs , vale la pena notare che una finestra di Emacs è ciò che molti altri editor chiamano schermo o pannello . Un frame Emacs è ciò che gli altri chiamano una finestra (si chiama frame perché le finestre al suo interno sono incorniciate dalla decorazione del desktop (barra del titolo e bordi) o dal terminale ... Le finestre contengono buffer (del testo; di solito un file)
Peter.O

1
@ Peter.O - Non solo per chi non ha familiarità con Emacs ... Uso Emacs da oltre 5 anni e non sarei stato in grado di spiegare le differenze. Lo uso e basta.
Giordania,

11

Con vim puoi usare splito vsplit.

Il primo si dividerà in modo orizzontale e il secondo si dividerà in verticale.

CTRLw quindi per navigare tra gli schermi divisi.

Puoi anche usare la scheda. tabnew filenameaprirà il nome del file in una nuova scheda. È possibile utilizzare tabnexte :tabpreviousper navigare tra le schede.

Personalmente mappa le frecce sinistra e destra per navigare tra le schede:

map <right> :tabnext<CR>
map <left> :tabprevious<CR>
inoremap <right> <ESC>:tabnext<CR>a
inoremap <left> <ESC>:tabprevious<CR>a

1
Inoltre, il plug-in NERD_tree può essere utilizzato per mostrare l'albero delle directory in una divisione separata. ( vim.org/scripts/script.php?script_id=1658 )
Bernhard

7

Kate

KDE Advanced Text Editor è molto ricco di funzionalità.
Ha tutto ciò che hai descritto nella domanda e molto altro .

Vedi tu stesso:

Immagine dello schermo

Per dividere la vista, vai su VisualizzaDividi vista . Quindi puoi selezionare una di queste opzioni:

  • Dividi verticale ( Ctrl+ Shift+ L)
  • Split Horizotal ( Ctrl+ Shift+ T)
  • Chiudi vista corrente ( Ctrl+ Shift+ R)

Per ottenere il layout come in questo screenshot, Dividi verticale , fai clic sulla vista inferiore e poi Dividi orizzontale .

Ovviamente, i confini delle viste possono essere cambiati trascinando i bordi (divisori) tra di loro. Per alternare tra le visualizzazioni, utilizzare F8e Shift+ F8.

A proposito, Kate ha una cosiddetta modalità VI ( ImpostazioniConfigura Kate ...Modifica → Modalità input VI). Quindi le scorciatoie per la suddivisione della vista diventano le stesse di Vim (vedi questa risposta ).


7

joe( Joe's Own Editor ) può fare anche questo:

ctrl+ ko- Dividi la finestra in orizzontale

ctrl+ kp- passa alla finestra precedente

ctrl+ kn- passa alla finestra successiva

ctrl+ ke- apre un nuovo file nella finestra corrente

ctrl+ kg- aumenta l'altezza della finestra corrente

ctrl+ kt- Riduci l'altezza della finestra corrente

ctrl+ ki- nascondi tutte le finestre tranne quella corrente, premi di nuovo per mostrare di nuovo tutte le finestre

ctrl+ co ctrl+ kx- chiude una finestra




2

Per quanto riguarda gli alberi dei file, uso personalmente NERDtree con Vim. Richiede Pathogen. Ho trovato il comando per aprire l'albero ( :NERDtree toggle, iirc) un po 'lungo, quindi l'ho rimappato <F2>. Se stai lavorando a un progetto con molti file in molte directory (pensa ai progetti Rails), è davvero bello.

MODIFICARE:

NERDtree è su Github: https://github.com/scrooloose/nerdtree

Questo è il remapping che uso nel mio .vimrc: map <F2> :NERDTreeToggle<CR>


Grazie, potrei avere altre domande a riguardo. Quelli che riservo per un'altra volta. ;)
Vigilia,

1

Io uso tmuxe vimper l'editing a schermo diviso in un ambiente basato su terminali, anche se per questo potresti usare qualsiasi editor di testo basato sulla riga di comando (ad es . nano, emacsEcc.).

tmuxè l'abbreviazione di "terminale multiplexer" e consente di creare sessioni con più terminali, eseguendo in "finestre" separate e anche "riquadri" all'interno di queste finestre, che sono ciò che consente di dividere lo schermo. tmuxè incluso nei repository di molte distribuzioni Linux e BSD. Trovo che questa sia l'opzione più flessibile per la codifica, in quanto posso anche aggiungere divisioni e finestre che contengono terminali in cui posso compilare il codice e utilizzare un sistema di controllo della versione, come gitaccanto alla mia modifica del codice.

Ecco un esempio di come creerei una sessione di modifica dello schermo diviso usando tmuxe vim.

Per prima cosa apri un terminale. Di seguito i comandi scritti dopo $vengono emessi dalla riga di comando. Questo utilizza le combinazioni di tasti predefinite in tmux.

  1. Inizia una nuova sessione di tmux. Qui ne facciamo uno chiamato "coding":

    $ tmux new -s coding

    appena aperto

  2. Premere Ctrl+ bseguito da %per una divisione verticale o "per una divisione orizzontale.

    divisione verticale

    divisione orizzontale

  3. Puoi muoverti tra le divisioni (o in tmuxparlance, i "riquadri") premendo Ctrl+ bseguito da o.

  4. Ora apri un editor di testo con tutti i file che vuoi modificare in ogni riquadro. Qui ho appena aperto due file di testo usando vim, ad es

    $ vim file1.txt

    Cambia riquadro: Ctrl+ bseguito da o.

    $ vim file2.txt

    modifica di due file contemporaneamente

tmuxè estremamente avanzato, consentendo più riquadri in un'unica finestra disposti in vari modi e vimconsente di aprire più file di testo contemporaneamente in schede. Tendo a utilizzare sia la tabulazione vimsia i riquadri tmuxper consentirmi di modificare, il controllo della versione e il codice di debug contemporaneamente. Se hai tempo da investire nell'apprendimento delle scorciatoie da tastiera e delle tmuxsue funzionalità può essere un ambiente di sviluppo molto potente.

Un tmuxcheat sheet per iniziare: schermo di dayid e tmux cheat sheet

Un tutorial sulle schede in vim: Suggerimenti di Vim: utilizzo delle schede


0

personalmente userei screen o tmux. entrambi consentono di aprire più pannelli anche se penso che tmux sia migliore nel recupero di una sessione con più pannelli rispetto allo schermo. ottieni anche l'ulteriore vantaggio di essere in grado di collegarti alla sessione se ti disconnetti dalla sessione del desktop locale e poi entri in SSH. Puoi anche condividere la sessione con altri utenti e collaborare.


ecco un downvote perché non usi
mai

0

Accanto vim, emacse joeeditori, ecco alcuni altri terminali (TTY) / x-terminale montatori emulatore, che possono mostrare almeno due file contemporaneamente. Potrebbe non essere il coltellino svizzero più carino, ma la curva di apprendimento non sembra troppo ripida in ogni caso:

1) mcedit

Fa parte di Midnight Commander (un file manager in modalità testo, installalo con apt-get install mcdistribuzioni basate su Debian).

mcedit

2) wpe \ xwpe

Disponibile con apt-get install xwpedistribuzioni Dedbian. Tuttavia, sembra che sia una protezione bloccata.

xwpe

3) nfte \ efte

eFTE è disponibile anche tramite apt-get install efte.

EFTE

D'altra parte, per l'X-window ci sono anche alcuni strumenti "diff" della GUI che potrebbero essere utili a questo scopo. Nella mia Linux Mint ne ho almeno due:

4) xxdiff

Un'applicazione basata su Qt ( apt-get install xxdiff)

xxdiff

Non testato e non mostrato, ma esiste anche Fldiffusando il Fast Light Toolkit (FLTK) ma ispirato in parte xxdiff. Anche nei repository ufficiali ( apt-get install fldiffe puoi provarlo tu stesso). Lo stesso vale per mgdiff.

5) kdiff3

Un'applicazione KDE simile ( apt-get install kdiff3).

KDiff3


0

Puoi usare l'editor di testo atom di github. Viene fornito con funzionalità schermo diviso.

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.