Editor de texto con opción de pantalla dividida

26

¿Existe un editor que tenga la opción de "dividir la pantalla" en dos o más partes, accediendo a más de un archivo (posiblemente con un árbol de archivos) sin abrir más ventanas de editor a la vez, y cómo se haría esto (cuáles son comandos).

No sé si me dejé claro, pero la "pantalla dividida" es la única forma de describir lo que quiero lograr. Quiero usarlo para programar, teniendo más de un archivo abierto para editar. Tenga en cuenta que soy bastante nuevo en vi y emacs, si estos son capaces de hacer esto. Además, si esto tiene que hacerse a través de un editor de terminales, ¿puede hacerse en el mismo terminal, independientemente del tamaño de la pantalla?

Víspera
fuente
1
Sé que preguntaste específicamente sobre editores y no sobre terminales, pero creo que vale la pena tenerlo en cuenta para futuros visitantes: el emulador de terminal terminatortambién tiene la función de pantalla dividida: ctrl + shift + ese dividirá verticalmente y ctrl + shift + ohorizontalmente (y también ctrl + shift + tabrirá una nueva pestaña)
Carlos Campderrós
@ CarlosCampderrós Lo tendré en cuenta, ¡gracias!
Eva
1
@ CarlosCampderrós: ​​También puede usar un multiplexor como screen o tmux para lograr eso en otros emuladores de terminal. La desventaja, por supuesto, es que debes recordar ejecutarlos primero, pero la flexibilidad probablemente valga la pena.
Phoshi

Respuestas:

38

vim puede hacer eso fácilmente:

ctrl+ ws- Ventanas divididas

ctrl+ ww- cambiar entre ventanas

ctrl+ wq- Salir de una ventana

ctrl+ wv- Dividir ventanas verticalmente

:sp filename

se abrirá filenameen un nuevo búfer y dividirá una ventana.

Tambien puedes hacer

vim -o file1 file2

Para abrir los archivos en un diseño de pantalla dividida. Reemplace -ocon -Opara división vertical en lugar de horizontal.

prisa
fuente
44
O escriba :help CTRL-Wpara ver todas las operaciones de ventana dividida.
Bernhard
1
¡Wow asombroso! También me topé con ": split", pero solo se divide horizontalmente. ¿Puedes por favor incluir qué versión de vim es esta? ¡Gracias!
Eva
@Eve uso VIM (Vi IMproved) 7.3.
prisa el
1
@Eve - también puedes usar :vsplitpara crear una división vertical, y al igual :splitque acepta un nombre de archivo o comando
Inútil el
1
Y al igual que <C-w>h/ j / k / l se moverá entre ventanas en direcciones específicas, <C-w>H/ J / K / L (en mayúscula) moverá la ventana en esa dirección.
Izkata
13

Esto se puede hacer usando Emacs. Funciona en GUI y en modo terminal. Incluso puedes dividirte varias veces. Aquí hay algunas combinaciones de teclas básicas:

Cx 2 Divide la ventana seleccionada en dos ventanas, una encima de la otra (split-window-below).
Cx 3 Divide la ventana seleccionada en dos ventanas, ubicadas una al lado de la otra (split-window-right).
C-Mouse-2 En la línea de modo de una ventana, divida esa ventana.

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

jordanm
fuente
1
Para cualquiera que no esté familiarizado con la terminología de Emacs , vale la pena señalar que una ventana de Emacs es lo que muchos otros editores llaman una pantalla o un panel . Un marco de Emacs es lo que otros llaman una ventana (se llama marco porque las ventanas dentro de él están enmarcadas por la decoración del escritorio (barra de título y bordes) o por el terminal ... Las ventanas contienen buffers (algo de texto; generalmente un archivo).
Peter.O
1
@ Peter.O - No solo para aquellos que no están familiarizados con Emacs ... He estado usando Emacs durante más de 5 años y no habría podido explicar las diferencias. Solo lo uso.
jordanm
11

Con vim, puedes usar splito vsplit.

El primero se dividirá horizontalmente y el segundo se dividirá verticalmente.

CTRLw luego para navegar a través de pantallas divididas.

También puedes usar la pestaña. tabnew filenameabrirá el nombre del archivo en una nueva pestaña. Puede usar tabnexty :tabpreviouspara navegar entre pestañas.

Personalmente mapeo las flechas izquierda y derecha para navegar entre pestañas:

map <right> :tabnext<CR>
map <left> :tabprevious<CR>
inoremap <right> <ESC>:tabnext<CR>a
inoremap <left> <ESC>:tabprevious<CR>a
Luc M
fuente
1
Además, el complemento NERD_tree se puede usar para mostrar el árbol de directorios en una división separada. ( vim.org/scripts/script.php?script_id=1658 )
Bernhard
7

Kate

KDE Advanced Text Editor es muy funcional.
Tiene todo lo que describiste en la pregunta y mucho más .

Ver por ti mismo:

Captura de pantalla

Para dividir la vista, vaya a VerVista dividida . Luego puede seleccionar una de estas opciones:

  • División vertical ( Ctrl+ Shift+ L)
  • Split Horizotal ( Ctrl+ Shift+ T)
  • Cerrar vista actual ( Ctrl+ Shift+ R)

Para obtener el diseño como en esta captura de pantalla, Dividir vertical , haga clic en la vista inferior y luego Dividir horizontal .

Por supuesto, los límites de las vistas se pueden cambiar arrastrando los bordes (divisores) entre ellos. Para cambiar entre las vistas, use F8y Shift+ F8.

Por cierto, Kate tiene el llamado Modo VI ( ConfiguraciónConfigurar Kate ...Edición → Modo de entrada VI). Luego, los atajos para la división de vistas se vuelven los mismos que en Vim (vea esta respuesta ).

Oleh Prypin
fuente
7

joe( Joe's Own Editor ) también puede hacer esto:

ctrl+ ko- dividir la ventana horizontalmente

ctrl+ kp- cambia a la ventana anterior

ctrl+ kn- cambia a la siguiente ventana

ctrl+ ke- abre un nuevo archivo en la ventana actual

ctrl+ kg- altura de crecimiento de la ventana actual

ctrl+ kt- reducir la altura de la ventana actual

ctrl+ ki- ocultar todas las ventanas excepto la actual, presione nuevamente para mostrar todas las ventanas nuevamente

ctrl+ co ctrl+ kx- cierra una ventana

scai
fuente
4

Si está interesado en familiarizarse un poco mejor con VIM, consulte vimcasts.org , tiene un montón de tutoriales en video realmente amigables. Este especialmente para magia de pantalla dividida

¡Disfrutar!

lwm
fuente
Eso es bueno, muchas gracias! Subiría esto más, pero solo se me permite uno.
Eva
2

Con respecto a los árboles de archivos, personalmente uso NERDtree con Vim. Requiere patógenos. Encontré que el comando para abrir el árbol ( :NERDtree toggle, iirc) es un poco largo, así que lo reasigné a <F2>. Si está trabajando en un proyecto con muchos archivos en muchos directorios (piense en proyectos de Rails), es realmente agradable.

EDITAR:

NERDtree está en Github: https://github.com/scrooloose/nerdtree

Esta es la reasignación que uso en mi .vimrc: map <F2> :NERDTreeToggle<CR>

AlexWebr
fuente
Gracias, puedo tener otras preguntas sobre esto. Los reservo para otro momento. ;)
Eva
1

Utilizo tmuxy vimpara la edición de pantalla dividida en un entorno basado en terminal, aunque podría usar cualquier editor de texto basado en línea de comandos para esto (por ejemplo nano, emacsetc.)

tmuxes la abreviatura de "terminal multiplexor" y le permite crear sesiones con múltiples terminales, que se ejecutan en "ventanas" separadas y también "paneles" dentro de estas ventanas, que son los que le permiten dividir la pantalla. tmuxestá incluido en los repositorios de muchas distribuciones de Linux y BSD. Considero que esta es la opción más flexible para la codificación, ya que también puedo agregar divisiones y ventanas que contienen terminales donde puedo compilar código y usar un sistema de control de versiones, como gitjunto con la edición de mi código.

Aquí hay un ejemplo de cómo crearía una sesión de edición de pantalla dividida usando tmuxy vim.

Primero abra una terminal. En los siguientes comandos escritos después $se emiten desde la línea de comandos. Esto utiliza las combinaciones de teclas predeterminadas en tmux.

  1. Inicie una nueva sesión de tmux. Aquí hacemos uno llamado "codificación":

    $ tmux new -s coding

    tmux acaba de abrir

  2. Presione Ctrl+ bseguido por %una división vertical o "una división horizontal.

    división vertical

    división horizontal

  3. Puede moverse entre las divisiones (o en el tmuxlenguaje, los "paneles") presionando Ctrl+ bseguido de o.

  4. Ahora abra un editor de texto con los archivos que desee editar en cada panel. Aquí acabo de abrir dos archivos de texto usando vim, por ejemplo

    $ vim file1.txt

    Cambiar paneles: Ctrl+ bseguido de o.

    $ vim file2.txt

    editar dos archivos simultáneamente

tmuxes extremadamente avanzado, permite múltiples paneles en una sola ventana organizados de varias maneras y le vimpermite abrir múltiples archivos de texto a la vez en pestañas. Tiendo a usar tanto la tabulación vimcomo los paneles tmuxpara permitirme editar, controlar la versión y depurar el código simultáneamente. Si tiene tiempo para invertir en aprender los atajos de teclado y sus funciones tmux, puede ser un entorno de desarrollo muy poderoso.

Una tmuxhoja de trucos para comenzar: la pantalla de dayid y la hoja de trucos de tmux

Un tutorial sobre pestañas en vim: consejos de Vim: uso de pestañas

James Womack
fuente
0

Yo personalmente usaría screen o tmux. ambos le permiten abrir múltiples paneles, aunque creo que tmux es mejor para recuperar una sesión de múltiples paneles que la pantalla. también obtiene el beneficio adicional de poder adjuntarse a la sesión si se desconecta de su sesión de escritorio local y luego ingresa SSH. Incluso tiene la capacidad de compartir la sesión con otros usuarios y colaborar.

morggin
fuente
aquí hay un
voto negativo
0

Además vim, emacsy los joeeditores, aquí hay algunos otros editores de emulador de terminal (tty) / x-terminal, que pueden mostrar al menos dos archivos al mismo tiempo. Puede que no sean los cuchillos suizos más lindos, pero la curva de aprendizaje no parece demasiado pronunciada en cualquier caso:

1) mcedit

Forma parte de Midnight Commander (un administrador de archivos en modo texto, instálelo apt-get install mcen distribuciones basadas en Debian).

mcedit

2) wpe \ xwpe

Disponible con apt-get install xwpedistribuciones en Dedbian. Sin embargo, parece que es una protección detenida.

xwpe

3) nfte \ efte

eFTE también está disponible a través de apt-get install efte.

efte

Por otro lado, para la ventana X también hay algunas herramientas "diff" de GUI que pueden ser útiles para este propósito. En mi Linux Mint tengo al menos dos:

4) xxdiff

Una aplicación basada en Qt ( apt-get install xxdiff)

xxdiff

No probado y no mostrado, pero existe también Fldiffusando el Fast Light Toolkit (FLTK) pero inspirado en parte xxdiff. También en los repositorios oficiales ( apt-get install fldiffy puedes probarlo tú mismo). Lo mismo se aplica a mgdiff.

5) kdiff3

Una aplicación KDE similar ( apt-get install kdiff3).

kdiff3

Fran
fuente
0

Puedes usar el editor de texto atómico de github. Viene con funcionalidad de pantalla dividida.

Göktuğ Aşçı
fuente